问题描述
开发板A的uart串口,用串口助手和电脑连接总是显示乱码:
最开始用U转串线连接板子和电脑——可能电平不匹配导致的乱码;
之后换了两块USB转TTL电平模块,串口助手都是乱码;
我怀疑是程序的问题
发送0x55、0xff到uart,用示波器测试都是正常的信号;
难道我拿到的USB转TTL模块都有问题?????
解决思路(感谢xy)
用开发板A作为发送端,用开发板B(提前测验过,可以正常使用)作为接收端,用uart通信,如果能正常通信,说明A的uart没有问题,两个U转T模块都有问题。如果B收集不到,或者说收集到的信号是错乱的,那就说明板子A上有问题(不论UART还是程序),USB转TTL模块可能没有问题。
(其实用示波器检测电平信号正常,基本上可以说明A的uart可以正常通信)。
具体做法
接线图:
测试程序语句:
板子A中的测试语句:
···
uint8_t a[256];
for( int i =0; i <= 255 ;i++)
{
a[i] = i ;
}
while (1)
{
HAL_UART_Transmit(&huart3, a, 256, 0xffff);
HAL_Delay(1000);
}
···
板子B中的测试语句:
···
static uint8_t buff[256];
HAL_UART_Receive_IT(&huart1, buff, 256);//中断接收
HAL_Delay(10);
···
对应的程序分别烧入两个板子,debug看B中接收数组buff的值
结果
B接收到了A发来的256数组。
这中间还有一个小问题,最开始接收到的数字是到了只有0-56,明明发送的数字是0-255,后来发现是发送时间太短了引起的这个问题。
到此,基本证明串口没有问题,至于为什么串口助手不能通讯,大概就是各种usb线或者转换模块的问题了。