初级会员

- 积分
- 78
- 金钱
- 78
- 注册时间
- 2015-3-24
- 在线时间
- 4 小时
|
5金钱
求助关于USART串口通信的问题:
在正点原子F103开发板环境下编写USART通信程序,发送端既要发送自己的数据,又要在关键时间点发送标志位,如何保证两者的发送不冲突?且接收端不会因为冲突而造成接收不到或者接收错误?
比如程序中出现以下两条语句:
printf("%d\r\n",3);
。。。。。。
。。。。。。
printf("%d\r\n",temp);
平时发送的为temp,也就是自己的数据。但当满足某种条件时,需要发送标志位,即3。实验中接收端不能及时的接收到标志位,几个周期内恰好才能接收到标志位,甚至接收不到标志位。
请问下这是因为发送的时序问题么?是标志位有的时候被数据覆盖?这种情况应该如何解决?
|
最佳答案
查看完整内容[请看2#楼]
如果单个字节就能表示特定的物理意义,这就简单,只要串口空闲,直接发标志就行。
估计数据是有格式的,那么必须等上一帧全部字节发完,才能插入标志位,否则协议就乱了。
我一般建一个缓冲区,要发的数据挨个往里放,串口只管顺序发,协议只在放数据的时候考虑。
这事也和接收方的解码方式有关。出问题可能和发送方有关,更多可能是接收的问题。
串口虽然简单,能用好的人不多。
|