问题来自于今年国赛的光通信。
最后问题化简成这样
好了我单片发送方机编程实现的是在while循环里面不停的发0x07这个数据
- while(1)
- {
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
- USART_SendData(USART1,0x07);
- }
复制代码
然后在串口助手里面查看,果然接收的数据为0x70刚好成了误码的数据了。
下面给出我分析的误码的原理
上图中S是串口通信起始位,T是停止位,空是两帧数据之间的间隔,上面是写出的得到误码的数据,下面是我期望的数据。
原因就是起始位置判断不对,它把原本数据的第4位看成了起始位,造成的,
我想知道这个怎么解决呢?
对,用IO口模拟串口通信
这个比例关系是怎么样的? 我反正100K的速度
这是单片机正常发送,模拟是另外一边
一周热门 更多>