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