| 串口是一種全雙工通訊方式
單工
數據傳輸只支持數據在一個方向上傳輸
半雙工
允許數據在兩個方向上傳輸,在同一時刻,只允許數據在一個方向上傳輸,它實際上是一種切換方向的單工通信
全雙工
允許數據同時在兩個方向上傳輸,因此,全雙工通信是兩個單工通信方式的結合,它要求發送設備和接收設備都有獨立的接收和發送能力
異步串口常見連接方式
相同端口數據傳輸
不同端口數據傳輸
這里必須保證通訊兩端數據共地,此外還需注意不同端口間的電平轉換,如TTL、232.
| 異步通訊時序圖
這里以8位字長為例,進行數據傳輸時,接收方首先捕捉數據起始位- -由高電平到低電平的數據跳變,低電平會保持一個數據周期(空閑時,數據線保持高電平)
1-8-1
緊接著起始位的是8位有效數據(低地址數據LSB在前),這里特別注意,若設置了奇偶校驗,奇偶校驗位會占據一位有效數據,即寫進數據寄存器數據的MSB位被校驗位替換后發送出去,如下表所示:
最后為1位停止位,停止位為有效高電平
| 奇偶校驗
使能校驗功能后,寫進數據寄存器的數據的MSB位被校驗位替換后發送出去(如果選擇偶校驗偶數個’1’,如果選擇奇校驗奇數個’1’)。
偶校驗:校驗位使得一幀中的7或8個LSB數據以及校驗位中’1’的個數為偶數。
例如:數據=00110101,有4個’1’,如果選擇偶校驗,校驗位是’0’。
奇校驗:此校驗位使得一幀中的7或8個LSB數據以及校驗位中’1’的個數為奇數。
例如:數據=00110101,有4個’1’,如果選擇奇校驗,校驗位是’1’。
| 波特率的產生
RX/TX 波特率=FCK/(16*USARTDIV )
這里的FCK為串口模塊的輸入時鐘頻率,通常首先確定想得到的波特率,而后通過上述公式,解得USARTDIV ,進而將USARTDIV的小數和整數部分分別填入波特率寄存器(USART_BRR)的整數DIV_Mantissa和小數DIV_Fraction部分中。
例如: 求得 USARTDIV = 25.62時,就有:DIV_Fraction = 16*0.62 = 9.92 最接近的整數是: 10 = 0x0A DIV_Mantissa = mantissa (25.620) = 25 = 0x19于是, USART_BRR = 0x19A
| 異步串口通訊的基本配置過程
1. 使能串口及對應引腳時鐘
2. 配置引腳,根據需要決定是否重映射
TX輸出引腳 -- 傳輸速率50M_hz,復用推挽輸出
RX輸入引腳 -- 浮空輸入
3.串口參數初始化
設置字長、停止位個數、是否開啟校驗位及選擇校驗方式(CR1、CR2寄存器),波特率設置
4. 配置中斷優先級
搶占優先級、子優先級,使能中斷通道
5. 根據需要,開啟串口部分中斷(CR1)
6. 使能串口(CR1)
stm32串口有獨立的收發能力,可根據需要單獨開啟/關閉接收、發送單元
-
STM32
+關注
關注
2270文章
10915瀏覽量
356754 -
串口
+關注
關注
14文章
1557瀏覽量
76734
發布評論請先 登錄
相關推薦
串口通信的開發環境配置
嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-串口通訊編程示例之串口硬件原理
飛凌嵌入式ElfBoard ELF 1板卡-串口通訊編程示例之串口硬件原理
stm32用串口燒錄怎么設置
EU104:一款支持1擴4的通用異步串口擴展芯片,滿足絕大部分串口設備的通訊要求
臺達DVP系列串口驅動全面解析
![臺達DVP系列<b class='flag-5'>串口</b>驅動全面解析](https://file1.elecfans.com/web2/M00/FC/CF/wKgZomaWK2eAAyJ6AAPD94q3I9Y358.png)
求助,關于STM32 USB轉串口與其他單片機通訊問題求解
深度解析STM32串口通信基本原理
![深度解析<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通信基本原理](https://file1.elecfans.com/web2/M00/CC/3F/wKgZomYgfPeAUW4IAAAbSJsblzY385.png)
STM32 USB HS轉串口訊過程中拔插數據線出現設備無法識別的問題怎么解決?
串口通訊時的數據幀格式和通訊協議有什么區別?
stm32串口接收中斷觸發原理
![<b class='flag-5'>stm32</b><b class='flag-5'>串口</b>接收中斷觸發原理](https://file1.elecfans.com/web2/M00/BD/E4/wKgaomWnhQ2AGX5KAABtqpoTjxI636.png)
評論