1. 程式人生 > 實用技巧 >5.2.3非同步序列通訊UART(下)

5.2.3非同步序列通訊UART(下)

平時是邏輯1,然後會有一個跳0的起始位,然後傳送資料,然後校驗位然後停止位
在這裡插入圖片描述
時鐘驅動下,傳輸資料,LSB先發,你看到01100100,從人類角度最後發的最高位,c語言寫的是0b00100110,16進位制是8421是0x2 421.這個數發出去後,非同步時鐘驅使下的得到資料、

在這裡插入圖片描述
在這裡插入圖片描述
電磁干擾還有電線長後有電容,此時有可能變為10110010這是不對的,現實通訊會遇到這個問題。
在這裡插入圖片描述
使用過取樣避免錯誤,以一定速度來發送資料,在接收端我用比約定好的波特率快一些速度來看資料。在目前晶片中預設速度是16倍速度來檢視接收資料。
會用中間三個bit值,來進行投票,選取取樣多的,或者丟棄重傳
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
時鐘有誤差
在這裡插入圖片描述
在這裡插入圖片描述
發射1000HZ接受只要950-1050直接就可以了

校驗
UART採用奇偶校驗
在這裡插入圖片描述
在這裡插入圖片描述
奇偶校驗不能發現所有錯誤,兩個地方翻轉就會無法確認
在這裡插入圖片描述
人體UART
在這裡插入圖片描述