目录
一.背景

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设备:不用数据,接收之后就发送,作为数据的中转站,收接收,发接发,直连
流控:

二.实现
UCR2寄存器
UCR3寄存器

UFCR寄存器

RefFreq为80MHZ,BaudRate比特率为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,a+b);
}

332



被折叠的 条评论
为什么被折叠?



