PIC单片机入门_异步通讯模式详解
生活随笔
收集整理的這篇文章主要介紹了
PIC单片机入门_异步通讯模式详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.USART用于異步通訊詳解
1.1 USART的異步工作模式
在異步工作模式下, USART 采用的是標準非歸零 (?NRZ編碼格式 :一位起始位、8 位或 9 位數據位和一位停止位?)。最常用的數據格式是 8 位。片內專用的 8 位波特率發生器可用于由振蕩器產生標準的波特率頻率。 USART 首先發送和接收最低有效位。 USART 的發送器和接收器在功能上是獨立的, 但采用相同的數據格式和波特率。 波特率發生器可以根據 BRGH 位 (TXSTA<2>)的狀態產生兩種不同的移位速率:對系統時鐘 16 分頻或 64 分頻的波特率時鐘。 USART 硬件不支持奇偶校驗,但可以用軟件實現 ( 奇偶校驗位是第 9 個數據位 )。在休眠狀態下, USART 不能在異步模式下工作。通過對 SYNC 位 (TXSTA<4>) 清零,可選擇 USART 異步工作模式。USART 異步工作模式包括如下重要部分:?波特率發生器,?采樣電路,?異步發送器,異步接收器。1.2 異步發送器
上圖展示的是發送器發送原理圖。設置異步發送模式應遵循以下一些步驟: 1. 選擇合適的波特率,對 SPBRG 寄存器進行初始化。如果需要高速波特率,將 BRGH 位置1 ;?
2. 將 SYNC 位清零、 SPEN 位置 1,使能異步串行端口;
3. 若需要中斷,將 TXIE、 GIE 和 PEIE 位置 1 ;(發送中斷使能、中斷總開關,外圍中斷使能)
4. 若需要發送 9 位數據,將 TX9 位置 1 ;
5. 將 TXEN 位置 1 ,使能發送,這也將置位 TXIF 位;
6. 若選擇發送 9 位數據,第 9 位數據應該先寫入 TX9D 位;
7. 把數據送入 TXREG 寄存器 ( 啟動發送 )。
異步通信數據發送的時序圖如下所示:
1.3 與異步發送相關的寄存器
1.4 異步接收器
上圖展示的是接收數據器的功能電路圖。設置異步接收模式時必須遵循以下步驟:
1. 選擇合適的波特率對 SPBRG 進行初始化,如果需要高速波特率,將 BRGH 置 1 ;?
2. 將 SYNC 清零, SPEN 置 1,使能異步串口;
3. 若需要中斷,將 RCIE、 GIE 和 PEIE 位置 1 ;
4. 如果需要接收 9 位數據,將 RX9 位置 1 ;
5. 將 CREN 位置 1,使 USART 工作在接收方式;
6. 當接收完成后,中斷標志位 RCIF 被置 1,如果此時 RCIE 已被置 1,便產生中斷;
7. 讀 RCSTA 寄存器獲取第 9 位數據 (如果已使能),并判斷在接收操作中是否發生錯誤;
8. 讀 RCREG 寄存器來讀取 8 位接受到的數據;
9. 如果發生錯誤,通過將 CREN 清零來清除錯誤。
1.5 與異步接收相關的寄存器
2.USART異步通信初始化技巧
異步發送器/接收器實例分析: BSF STATUS,RP0 ; STATUE的PRO位置1 MOVLW <baudrate> ; 設定波特率的值,并裝載到波特率發生器寄存器中 MOVWF SPBRG MOVLW 0x40 ; 設定發送狀態器的狀態 0100 0000B 的含義: MOVWF TXSTA ; 從動模式(外部時鐘)-8位傳輸數據-允許發送-異步 0-低速波特率-移位寄存器滿標志-無奇偶校驗 BSF PIE1,TXIE ; 外圍中斷PIE1的TXIE發送中斷置1,打開 BSF PIE1,RCIE ; 外圍中斷PIE1的RCIE接收中斷置1,使能 BCF STATUS,RP0 ; 清除STATUE的PRO位 MOVLW 0x90 ; 設定接收狀態控制器的狀態 1001 0000B MOVWF RCSTA ; 串口使能-8位數據接收-禁止接收單字符-連續接收 0-無幀錯誤-無溢出錯誤-無奇偶校驗3.為什么我的異步通信頻繁報錯?
最常見的原因是:1. 對PIC16C187A單片機使用高速模式(BRGH置1), 而這些單片機在異步高速模式時,其采樣電路的工作方式與其它型號單片機不同。
2. 沒有正確計算出要裝入 SPBRG 寄存器的值。
3. 發送和接收的波特率誤差總和太大。
總結
以上是生活随笔為你收集整理的PIC单片机入门_异步通讯模式详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PIC单片机入门_同步/异步通信技术基础
- 下一篇: Windows下FFTW的安装_史上最全