gpio模擬uart的原理就是根據所需要的uart的波特率,計算出每個bit所用的時間,在此時間段內去讀取gpio的輸入,然後將讀取的8bit拼接起來即可,當然這期間要檢測起始位和結束位。
uart的起始位是下降沿,結束位是上公升沿。
為了檢測準確,我們讀取每個bit的中位位置,所以定時時間是每個bit位所占用時間一半。
9600波特率的uart模擬,每個bit位的時間是:1/9600 s = 104us的時間,那麼半個bit位的定時時間就是104/2 = 52us。所以在檢測到下降沿后,接著開啟定時器,定時52us,每52us讀取一次
gpio的狀態作為乙個位元組的bit位,即可以正確讀取出乙個位元組。
**實現方式如下:
1. 首先定義列舉值,每次定時中斷時狀態機就按照下面的列舉值增加一步。
enum{
com_start_bit = 1, //起始位位
com_start_mid_bit, //起始位中位
com_d0_bit, //bit0
com_d0_mid_bit, //bit0中位
com_d1_bit, //bit1
com_d1_mid_bit, //bit1中位
com_d2_bit, //bit2
com_d2_mid_bit, //bit2中位
com_d3_bit, //bit3
com_d3_mid_bit, //bit3中位
com_d4_bit, //bit4
com_d4_mid_bit, //bit4中位
com_d5_bit,
GPIO模擬串列埠
模擬串列埠 串列埠預設的1byte資料格式為 暫不考慮校驗位 1bit起始位 8bit資料位 1bit停止位,起始位 s 為低電平,停止位 t 為高電平。具體格式如下圖所示 若波特率為9600,每s傳輸9600bd。二進位制下波特率等於位元率。則可看成每s傳輸9600bit。1 9600 104 u...
IO口模擬UART串列埠
由於博主近期參與了合泰晶元的專案開發,所以此次就用合泰微控制器來測試 具體型號為ht66f70a ide為ht ide3000 合泰官方 首先需要了解兩個概念 1.幀 是序列通訊的資料單元,其中各位的意義如下 起始位 先發出乙個邏輯 0 的訊號,表示傳輸資料的開始。資料位 緊接著起始位之後,資料位的...
模擬串列埠UART的實現
我所禱告的,就是要你們的愛心,在知識和見識上,多而又多,使你們能分辨是非,做誠實無過的人,直到 的日子。腓立比書 1 9 10 最近在調的mcu的型號為stm32f030,配置晶元相較之前的mcu都比較簡單,功能配置很順利。但是在寫串列埠程式的時候,發現串列埠一直不通,使用示波器也沒有波形。因為基本...