ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ARM裸机开发-UART

ARM裸机开发-UART 目录一.背景二.实现UCR2寄存器UCR3寄存器UFCR寄存器UBIR与UBMR寄存器USR2寄存器UTXD寄存器URXD寄存器通信一.背景CH340C:TTL电平转USB电平DCDC芯片隔离作用防止CH340C芯片受到干扰左侧为输入引脚右侧为输出引脚交叉连接显然为DTE。右侧输出端接4.7k下拉电阻本次只需配置输入即可。要配置输入引脚UART1 RXD和UART1 TXD配置复用功能为串口收和发。同时电气属性配置默认值能驱动串口即可。// 配置串口引脚功能 IOMUXC_SetPinMux(IOMUXC_UART1_TX_DATA_UART1_TX, 0); IOMUXC_SetPinMux(IOMUXC_UART1_RX_DATA_UART1_RX, 0); // 配置串口引脚电气属性 IOMUXC_SetPinConfig(IOMUXC_UART1_TX_DATA_UART1_TX, 0x10B0); IOMUXC_SetPinConfig(IOMUXC_UART1_RX_DATA_UART1_RX, 0x10B0);DTE设备数据发到这就结束交叉连接DCE设备不用数据接收之后就发送作为数据的中转站收接收发接发直连流控RTS_BRequest To Send请求发送告诉对方本设备准备好接收数据了CTS_BClear To Send清除发送告诉对方暂停发送数据防止缓冲区溢出避免丢包流控引脚本次设置用不上驱动会用。二.实现UCR2寄存器UCR3寄存器UFCR寄存器RefFreq为80MHZBaudRate比特率为11520计算出UBMR与UBIR不唯一符合条件即可UBIR与UBMR寄存器紫线为PLL3引脚480MHZ经过静态分频除以6得到80MHZ// 设置115200波特率 UART1-UBIR 999; UART1-UBMR 43402;最后// 使能UART UART1-UCR1 | (1 0);USR2寄存器UTXD寄存器void putc(unsigned char ch) { while ((UART1-USR2 (1 3)) 0); UART1-UTXD ch; } void puts(const char *p) { while(*p) { putc(*p); } }URXD寄存器unsigned char getc(void) { while((UART1-USR2(1 0))0); return UART1-URXD 0xFF; }通信输入A带\n则会读取\n为error最后导入stdio库函数使用scanf和printf。在用VOFA软件通信时Windows给imx6ull发送数据时imx6ull调用scanf函数进行回显在VOFA中就显示了scanf的值//main函数中 while (1) { scanf(%d %d,a,b); //imx6ull发给windows,scanf回显给VOFA终端 printf(%d %d %d\n,a,b,ab); }
返回列表