gpio模擬串列埠uart接收資料(HAL庫)

2021-10-11 13:31:09 字數 826 閱讀 5278

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都比較簡單,功能配置很順利。但是在寫串列埠程式的時候,發現串列埠一直不通,使用示波器也沒有波形。因為基本...