模擬串列埠
串列埠預設的1byte資料格式為(暫不考慮校驗位):1bit起始位+8bit資料位+1bit停止位,起始位(s)為低電平,停止位(t)為高電平。具體格式如下圖所示
若波特率為9600,每s傳輸9600bd。二進位制下波特率等於位元率。則可看成每s傳輸9600bit。
1/9600 = 104 us 每104us傳送1bit
定時器配置為104us觸發一次,進入定時器中斷。
下面以傳送1bit start + 1byte data + 1bit stop資料為例
若為傳送資料,每104us傳送乙個bit(即進入tim中斷傳送) 則:
先傳送start位,為低電平
再傳送8bit的資料
最後傳送stop位,為高電平
若為接收資料,則:
在tim中斷函式中判斷rx引腳的電平
平時rx為高電平,若檢測到rx為低電平,則表示串列埠收到資料,開始接收模式。
將start位後的8bit資料接收放入buff中。
C51 GPIO口模擬串列埠方法
隨著微控制器的使用日益頻繁,用其作前置機進行採集和通訊也常見於各種應用,一般是利用前置機採集各種終端資料後進行處理 儲存,再主動或被動上報給管理站。這種情況下下,採集會需要乙個串列埠,上報又需要另乙個串列埠,這就要求微控制器具有雙串列埠的功能,但我們知道一般的51系列只提供乙個串列埠,那麼另乙個串列...
gpio模擬串列埠uart接收資料(HAL庫)
gpio模擬uart的原理就是根據所需要的uart的波特率,計算出每個bit所用的時間,在此時間段內去讀取gpio的輸入,然後將讀取的8bit拼接起來即可,當然這期間要檢測起始位和結束位。uart的起始位是下降沿,結束位是上公升沿。為了檢測準確,我們讀取每個bit的中位位置,所以定時時間是每個bit...
模擬串列埠輸出
最近在除錯hardfault handler輸出日誌資訊時候獲得了vincent幫助,感謝 1 void delay uart5 uint16 t cnt 2 1 void hardfault handler void uart5 384002 60 gpioc bsrr 0x0001 12 61 ...