串口调试(一)

来源:互联网 发布:js判断ios系统版本号 编辑:程序博客网 时间:2024/05/16 01:10

由于要接多个UART设备,所以用模拟开关复用串口,用I/O线控制模拟开关选通

程序大概是这样的

en_dev1();// 使能设备1

uart_write(buf, sizeof(buf));// 发送数据

en_dev2();// 切换通道

uart_write(buf2, sizeof(buf2));// 向dev2发送数据

...

应该数据可以被dev1和dev2收到,但示波器显示使能线高电平只持续了一段时间就变为低电平

原因是uart_write只将数据写到驱动的缓冲区,write调用返回时,数据尚未发送完成

这样导致数据发送失败

有三种解决方法:

1. 在驱动程序中完成I/O电平置位,应用程序只负责读写数据

2. 在应用程序中加sleep等待数据发送完成

3. 在应用程序中设置串口操作标志,使得数据完全发送后才返回

 

原创粉丝点击