本章介紹串行通信接口(SCI)模塊的功能和操作。 SCI是一種雙線異步串行端口,通常稱為UART。 SCI模塊支持CPU和使用標准非歸零(NRZ)格式的其他異步外設之間的數字通信。 SCI接收器和發送器每個都有一個16級深FIFO,用於減少服務開銷,每個都有自己獨立的使能和中斷位。 兩者都可以獨立操作以進行半雙工通信,或同時進行全雙工通信。
為了指定數據完整性,SCI檢查接收到的數據是否存在中斷檢測,奇偶校驗,溢出和幀錯誤。 比特率可通過16位波特選擇寄存器編程為不同的速度。
SCI模塊的功能包括:
•兩個外部引腳:
- SCITXD:SCI發送輸出引腳
- SCIRXD:SCI接收輸入引腳
- 如果不用於SCI,則兩個引腳都可以用作GPIO。
•波特率可編程為64K不同速率
•數據字格式
- 一個開始位
- 數據字長度可編程為1至8位
- 可選偶數/奇數/無奇偶校驗位
- 一個或兩個停止位
•四個錯誤檢測標志:奇偶校驗,溢出,成幀和中斷檢測
•兩種喚醒多處理器模式:空閑線和地址位
•半雙工或全雙工操作
•雙緩沖接收和發送功能
•發送器和接收器操作可以通過具有狀態標志的中斷驅動或輪詢算法來完成。
•發送器和接收器中斷的獨立使能位(BRKDT除外)
•NRZ(不歸零)格式
•13個SCI模塊控制寄存器位於控制寄存器幀中,從地址7050h開始
該模塊中的所有寄存器都是8位寄存器,連接到外設幀2.當訪問寄存器時,寄存器數據位於低位字節(7-0),高位字節(15-8)讀取為零。寫入高位字節無效。
增強功能:
- 自動波特率檢測硬件邏輯
- 16級發送/接收FIFO
SCI模塊框圖如下圖所示:
SCI可編程數據格式
接收和發送的SCI數據采用NRZ(非歸零)格式。 NRZ數據格式如圖19-3所示,包括:
- 一個起始位
- 一到八個數據位
- 偶數/奇數奇偶校驗位(可選)
- 一個或兩個停止位
- 用於區分地址和數據的額外位(僅限地址位模式)
基本數據單元稱為字符,長度為1到8位。 每個數據字符都使用起始位,一個或兩個停止位以及可選的奇偶校驗和地址位進行格式化。 帶有格式信息的數據字符稱為幀,如圖19-3所示。
要編程數據格式,請使用SCICCR寄存器。 用於編程數據格式的位如表19-2所示。
SCI通信格式
SCI異步通信格式使用單線(單向)或雙線(雙向)通信。在此模式下,幀由起始位,1到8個數據位,可選的偶數/奇數奇偶校驗位以及一個或兩個停止位組成(如圖19-7所示)。每個數據位有8個SCICLK周期。
接收器在接收到有效起始位時開始操作。有效起始位由四個連續的零位內部SCICLK周期標識,如圖19-7所示。如果任何位不為零,則處理器重新開始並開始尋找另一個起始位。
對於起始位之后的位,處理器通過在位中間產生三個樣本來確定位值。這些采樣發生在第四,第五和第六SCICLK周期,並且位值確定基於多數(三分之二)。圖19-7說明了此異步通信格式,其中一個起始位顯示了多數表決的位置。
由於接收器將自身同步到幀,因此外部發送和接收設備不必使用同步的串行時鍾。時鍾可以在本地生成。
通信模式下的接收器信號
圖19-8說明了接收器信號時序的示例,它假設了以下條件:
•地址位喚醒模式(地址位不會出現在空閑線路模式下)
•每個字符六位
(1)數據到達SCIRXD引腳,檢測到起始位。
(2)位RXENA變為低電平以禁用接收器。數據繼續在RXSHF中組裝,但不會傳輸到接收器緩沖寄存器。
注意:
1.標志位RXENA(SCICTL1,位0)變為高電平以使能接收器。
2.數據到達SCIRXD引腳,檢測到起始位。
3.數據從RXSHF移位到接收緩沖寄存器(SCIRXBUF);請求中斷。標志位RXRDY(SCIRXST,位6)變為高電平,表示已收到新字符。
該程序讀取SCIRXBUF;標志RXRDY自動清除。
5.下一個數據字節到達SCIRXD引腳;檢測到起始位,然后清除。
6.位RXENA變為低電平以禁用接收器。數據繼續在RXSHF中組裝,但不會傳輸到接收器緩沖寄存器。
通信模式下的發射機信號
圖19-9說明了發送器信號時序的示例,它假設了以下條件:
•地址位喚醒模式(地址位不會出現在空閑線路模式下)
•每個字符三位
注意:
1. TXENA位(SCICTL1,位1)變為高電平,使發送器能夠發送數據。
2. SCITXBUF寫入;因此,(1)發射機不再為空,(2)TXRDY變低。
3. SCI將數據傳輸到移位寄存器(TXSHF)。發送器准備好第二個字符(TXRDY變為高電平),並請求中斷(使能中斷,TX INT ENA位 - SCICTL2,位0 - 必須置1)。
4.在TXRDY變為高電平后,程序將第二個字符寫入SCITXBUF(第3項)。 (第二個字符寫入SCITXBUF后,TXRDY再次變為低電平。)
5.完成第一個字符的傳輸。將第二個字符傳輸到移位寄存器
TXSHF開始了。
6. TXENA位變為低電平以禁用發送器; SCI完成傳輸當前字符。
7.完成第二個字符的傳輸;發射器是空的,准備好新角色。
SCI端口中斷
SCI接收器和發送器可以被中斷控制。 SCICTL2寄存器有一個標志位(TXRDY),表示有效的中斷條件,SCIRXST寄存器有兩個中斷標志位(RXRDY和BRKDT),加上RX ERROR中斷標志,它是FE,OE,BRKDT的邏輯或,和PE條件。發送器和接收器具有獨立的中斷使能位。未使能時,中斷未被置位;但是,條件標志仍然有效,反映了傳輸和接收狀態。
SCI具有用於接收器和發送器的獨立外設中斷向量。外設中斷請求可以是高優先級或低優先級。這由從外設輸出到PIE控制器的優先級位表示。當RX和TX中斷請求都以相同的優先級進行時,接收器的優先級始終高於發送器,從而降低了接收器溢出的可能性。
外設中斷的操作在外部外設接口(ePIE)章節的外設中斷擴展控制器部分進行了描述。
•如果RX / BK INT ENA位(SCICTL2,位1)置1,則在發生以下事件之一時,將斷言接收器外設中斷請求:
- SCI接收完整幀並將RXSHF寄存器中的數據傳送到SCIRXBUF寄存器。此操作設置RXRDY標志(SCIRXST,位6)並啟動中斷。
- 發生中斷檢測條件(SCIRXD在丟失停止位后的10位周期內為低電平)。此操作將BRKDT標志位(SCIRXST,位5)置1並啟動中斷。
•如果TX INT ENA位(SCICTL2.0)置1,只要SCITXBUF寄存器中的數據被傳送到TXSHF寄存器,就會置位發送器外設中斷請求,表示CPU可以寫入SCITXBUF;此操作將TXRDY標志位(SCICTL2,位7)置1並啟動中斷。
注:由RXRDY和BRKDT位產生的中斷由RX / BK INT ENA位(SCICTL2,位1)控制。 RX ERROR位產生的中斷由RX ERR INT ENA位(SCICTL1,位6)控制。
圖19-10和表19-4說明了nonFIFO / FFO模式下SCI中斷的操作/配置:
(1)FIFO模式TXSHF在延遲值后直接加載,不使用TXBUF。
(2)RXERR可以通過BRKDT,FE,OE,PE標志設置。 在FIFO模式下,BRKDT中斷僅通過RXERR標志