今天在研究串口調試的時候發現了一個極其吊詭的現象。
單片機從下位機發送字符“A”(二進制 01000001)給上位機,但上位機始終受到的是“”(二進制00000101)
踩坑.png (194.16 KB, 下載次數: 64)
下載附件
2021-1-6 11:33 上傳
于是乎我打開示波器,但發現其波形與理論上的波形沒有任何區別。
字符“A”.png (86.73 KB, 下載次數: 67)
下載附件
2021-1-6 11:33 上傳
發送的 01000001 為何會變成 00000101。經過分析后大概知道了其中的緣故。
無標題.png (17.3 KB, 下載次數: 79)
下載附件
2021-1-6 11:33 上傳
由于停止位和下一個起始位離得太近。如果上位機非常不巧地把數據位當成了起始位,那么所有的數據就完全錯位了,就像圖中那樣。
所以建議發送每個字節之間加上一點延時。防止這種極端的情況發生
|