2011年7月10日 星期日

DIY - PIC:PIC18F4550 USART 異步模式 (九十七)

DIY - PICPIC18F4550 USART 異步模式 (九十七)

Microchip PIC18F4550 通過將 SYNC TXSTA<4>清零可選擇異步工作模式。 在此模式下EUSART 使用標準的不歸零Non-Return-to-Zero NRZ 格式1 個起始位8 個或 9 個資料位元和 1 個停止位最常用的資料格式為 8 位元。片上專用 8 位元/ 16 位元串列傳輸速率發生器可借助於振盪器產生標准串列傳輸速率頻率。

EUSART 首先發送和接收的是最低有效位。 EUSART 的發送器和接收器在功能上是獨立的,但採用相同的資料格式和串列傳輸速率。串列傳輸速率發生器可以根據 BRGH BRG16位(TXSTA<2>BAUDCON<3>)的設置值產生兩種不同的串列傳輸速率時鐘,頻率分別為移位元元速率的 16 倍和 64倍。硬體不支援奇偶校驗,但可以用軟體實現,校驗位元保存在第 9 個資料位元。

TXCKP BAUDCON<4>)和 RXDTP BAUDCON<5>)位元允許 TX RX 信號翻轉(極性相反)。器件在緩衝從TTL 電平轉換到 RS-232 電平的信號或從 RS-232 電平轉換到 TTL 電平的信號時,會翻轉信號的極性。TXCKP RXDTP 位置 1,允許使用可在不翻轉信號的情況下提供緩衝的電路。

18F4550 EUSART 發送器的框圖
   
當工作在異步模式下時,EUSART 模組包括以下重要組成部分:
• 串列傳輸速率發生器
• 採樣電路
• 異步發送器
• 異步接收器
• 同步間隔字元自動喚醒
• 12 位元間隔字元發送
• 自動串列傳輸速率檢測
• 引腳極性
 
EUSART 異步發送器的核心是發送(串列)移位寄存器(Transmit Shift Register TSR )。移位寄存器從讀/寫發送緩衝寄存器 TXREG 中獲取資料TXREG 寄存器中的資料由軟體裝入。 直到前一次裝入的停止位已被發送才會向 TSR 寄存器裝入新資料。 一旦停止位發送完畢TXREG 寄存器中的新資料如果有的話)就會被裝入TSR  

一旦 TXREG 寄存器向TSR 寄存器傳輸了資料(在1 TCY 內發生),TXREG 寄存器就為空,同時標誌位元TXIFPIR1<4>)置 1 。可以通過將中斷允許位 TXIEPIE1<4>)置 1 或清零來允許/禁止該中斷。 不管 TXIE 的狀態如何,只要中斷發生,TXIF 就會置 1 並且不能用軟體清零。 TXIF 也不會在裝載 TXREG 時立即被清零,而是在裝入指令後的第二個指令週期被清零。 因此在 TXREG 裝入新資料後立即查詢 TXIF ,會返回無效結果。

18F4550 異步發送(TXCKP = 0 TX 引腳信號不被翻轉)

標誌位元 TXIF 表示的是 TXREG 寄存器的狀態,而另一個位 TRMT TXSTA<1>)則表示 TSR 寄存器的狀態。TRMT 是唯讀位,它在 TSR 寄存器為空時被置 1TRMT 位與任何中斷均無關聯,因此要確定 TSR 寄存器是否為空,用戶只能對此位進行輪詢。

TXCKP 位元(BAUDCON<4>)允許翻轉 TX 信號(極性相反)。 器件在緩衝從 TTL 電平轉換到 RS-232 電平的信號或從 RS-232 電平轉換到 TTL 電平的信號時,會翻轉信號的極性(當 TTL = 1 時,RS-232 為負)。 通過將 TXCKP 位置 1 可翻轉 TX 引腳資料的極性,從而允許使用不翻轉信號的緩衝電路。

18F4550 異步發送(背對背)(TXCKP = 0 TX 引腳信號不被翻轉)
   設置異步發送的操作步驟如下:
  1. 選擇合適的串列傳輸速率,對 SPBRGH:SPBRG 寄存器進行初始化。 按需要將BRGH 和 BRG16 位置1或清零,以獲得目標串列傳輸速率。
  2. 通過將 SYNC 位清零並將 SPEN 位置 1 使能異步串口。
  3. 若要翻轉 TX 引腳的信號,將 TXCKP 位置 1 。
  4. 如果需要中斷,將中斷允許位 TXIE 置1 。
  5. 若需要發送 9 位元資料,請將發送位元 TX9 置 1 。 發送的第 9 位可以是位址位元也可以是資料位元。
  6. 通過將 TXEN 位置 1 使能發送,此操作同時也會將 TXIF 位置 1 。
  7. 如果選擇發送 9 位元資料,將第 9 位元數據裝入TX9D 位。
  8. 將資料裝入TXREG 寄存器(啟動發送)。
  9. 若想使用中斷,請確保將 INTCON 寄存器中的 GIE 和 PEIE 位(INTCON<7:6>)置 1 。

18F4550 EUSART 接收器的框圖

RX 引腳上接收資料,並驅動資料恢復電路。 資料恢復電路實際上是一個以 16 倍串列傳輸速率為工作頻率的高速移位元器,而主接收串列移位元器的工作頻率等於比特率或 FOSC 此模式通常用於 RS-232 系統。

RXDTP 位(BAUDCON<5>)允許翻轉 RX 引腳的信號(極性相反)。器件在緩衝從RS-232 轉換為 TTL 電平的信號時也會翻轉信號的極性(當 RS-232 為正時,TTL = 0 )。通過將 RXDTP 位置 1 可以翻轉 RX 引腳資料的極性,從而允許使用不翻轉信號的緩衝電路。

18F4550 異步接收(RXDTP = 0 RX 引腳信號不被翻轉)
   設置異步接收操作的步驟如下:
  1. 選擇合適的串列傳輸速率,對 SPBRGH:SPBRG 寄存器進行初始化。 按需要將BRGH 和 BRG16 位置1或清零,以獲得目標串列傳輸速率。
  2. 通過將 SYNC 位清零並將 SPEN 位置 1 使能異步串口。
  3. 若要翻轉 RX 引腳的信號,則將 RXDTP 位置 1 。
  4. 如果需要中斷,將允許位元 RCIE 置 1。
  5. 若需要接收 9 位元資料,將 RX9 位置 1。
  6. 通過將 CREN 位置1 ,使能接收。
  7. 當接收完成時標誌位元 RCIF 將置1 ,此時如果允許位 RCIE 已置 1,還將產生一個中斷。
  8. 讀 RCSTA 寄存器以獲取第 9 位元資料(如果已使能),並判斷在接收過程中是否發生了錯誤。
  9. 通過讀 RCREG 寄存器來讀取接收到的 8 位元資料。
  10. 如果發生錯誤,通過將使能位 CREN 清零來清除錯誤。
  11. 若想使用中斷,請確保將 INTCON 寄存器中的 GIE 和 PEIE 位(INTCON<7:6>)置 1 。

設置帶有位址檢測功能的 9 位元模式:
此模式通常用於 RS-485 系統中。 按如下步驟設置帶有位址檢測功能的異步接收操作:

  1. 選擇合適的串列傳輸速率,對 SPBRGH:SPBRG 寄存器進行初始化。 按需要將 BRGH 和 BRG16 位置1或清零,以獲得目標串列傳輸速率。
  2. 通過將 SYNC 位清零並將 SPEN 位置 1 使能異步串口。
  3. 如果需要翻轉 RX 引腳的信號,則將 RXDTP 位元置 1。 如果需要翻轉 TX 引腳的信號,則將 TXCKP位置 1。
  4. 若需要中斷,請將 RCEN 位置 1 並使用 RCIP 位設置優先順序。
  5. 將 RX9 位置 1 ,使能 9 位接收。
  6. 將 ADDEN 位置 1 ,使能地址檢測。
  7. 將 CREN 位置 1 ,使能接收。
  8. 當接收完成時 RCIF 位將被置 1 。 此時如果 RCIE 和 GIE 位已置 1 ,還將回應中斷。
  9. 讀 RCSTA 寄存器判斷在接收時是否發生了錯誤,同時讀取第 9 位元資料(如果適用)。
  10. 讀 RCREG 以判斷是否正在對器件進行定址。
  11. 如果發生錯誤,將 CREN 位元清零。
  12. 如果已經找到了器件,將 ADDEN 位清零,允許接收到的所有資料進入接收緩衝器,並中斷 CPU
參考資料:Microchip PIC18F2455/2550/4455/4550 Data Sheet

相關網頁:
 DIY - 電子:EIA RS-232 串行通信協議標準 (九十二) :
DIY - 電子:MAX232 串行通信協議標準 IC (九十三) :
 DIY - 電子:C18 PIC18F4550 USART 函數庫程式 (九十四) :
DIY - 電子:PIC18F4550 USART 電路功能介紹 (九十五) :
 DIY - 電子:PIC18F4550 USART 自動波特率電路介紹 (九十六) :
DIY - 電子:PIC18F4550 USART 異步模式 (九十七) :
◆ DIY - 電子:PIC18F4550 + MAX232 USART 電路 (九十八) :
◆ DIY - 電子:PIC18F4550 + MAX232 USART 電路程式 (九十九) :
DIY - 電子:PIC18F4550 測試程式 Hyper Terminal (一百) :

相關網頁:
◎ RS-232 ﹣串列數據通訊的介面標準 (一)
◎ RS-232 ﹣超級終端機串列介面測試 (二)
◎ RS-232 ﹣超級終端機串列介面 Loopback 測試 (三)
◎ RS-232 ﹣用 Excel 做串列介面數據傳輸及接收 (四)
◎ RS-232 ﹣用 Excel API做串列介面數據傳輸及接收 (五)

相關網頁:
◎ DIY - 智能小車:TL-WR703N 無線路由器與 16F877A 控制版串口連接電路 (二十)
◎ DIY - 智能小車:ser2net 詳細介紹 (二十一)
◎ DIY - 智能小車:智能小車 ser2net 設定 (二十二)
◎ DIY - 智能小車:16F877A 控制版串口連接程式 (二十三)
◎ DIY - 智能小車:TL-WR703N 路由器和 RS232 串行板組裝 (二十九)
◎ DIY - 智能小車:PIC 16F877A 處理器板 RS232 接收程式碼 (三十三)

相關網頁:
◎ ESCORT 3146A 5 1/2位數字雙顯示桌上型電錶數據傳輸
◎ Hameg HM507 CombiScope (模數組合示波器) – RS232

2011 07 10 天氣報告 
氣溫:29.1 @ 22:00 
相對濕度:百分之75% 
天氣:大致多雲



沒有留言:

張貼留言