一般接收方式分几种:
1.来一个字节中断,接收一个字节。(耗CPU,接收不会漏)
2.接收FIFO达到一定阀值的时候中断,接收数据 (不耗CPU,但接收小于阀值的数据量可能会不及时)
3.接收FIFO达到一定阀值的时候中断,接收数据,串口数据超时也进行中断,接收数据。(不耗CPU,数据接收也完整)
一般在使用过程中,我都会选择第三种,有的MCU没有串口超时中断,我也会自己做个定时器去做
发送:
串口发送数据的时候。应该都是一个一个字节发,调用一个UartPutCha函数。
UartPutChar里面常规都是先一个while等待,再进行发下一个,那么问题来了。
while等待的条件也分两种
1.发送FIFO Not Full,或者FIFI Not Halt
2.发送FIFO Empty
一般来说调试的时候我会选择第二个,因为这样打印数据实时可以定位到代码运行的位置
但是在实际应用中,应该选第几个呢,有没有什么讲究呢
讨论这个问题主要是因为,最近客户有说到我们设备串口发送的数据(一般都是无协议的,客户端按照一帧来收,有超时中断为一帧)他们接收总是会有点问题,一帧数据分成几帧接收不完整。但是我们给的工具接收数据(C#写的)没有问题。所以说不知道是不是因为while等待这个原因
最近编辑记录 微凉VeiLiang (2019-06-01 10:41:55)
离线