STM8 IrDA紅外功能
通過設置UART_CR5寄存器的IREN位選擇IrDA模式。UART_CR3寄存器的STOP位必須設置成"1個停止位"。在IRDA模式里,下列位必須保持清零:
- UART_CR3寄存器的LINEN,STOP和CLKEN位
- UART_CR5寄存器的SCEN和HDSEL位。
注意:STM8紅外功能只適用于UART1和UART2。
IrDA SIR物理層規定使用反相歸零調制方案(RZI),該方案用一個紅外光脈沖代表邏輯'0'(見圖114)。
SIR發送編碼器對從UART輸出的NRZ(非歸零)比特流進行調制。輸出脈沖流被傳送到一個外部輸出驅動器和紅外LED。對于SIR ENDEC應用,UART最高只支持到115.2Kbps速率。在正常模式里,脈沖寬度規定為一個位周期的3/16。
SIR接收解碼器對來自紅外接收器的歸零位比特流進行解調,并將接收到的NRZ串行比特流輸出到UART。在空閑狀態里,解碼器輸入通常是高(標記狀態marking state)。發送編碼器輸出的極性和解碼器的輸入相反。當解碼器輸入低時,檢測到一個起始位。
- IrDA是一個半雙工通信協議。如果發送器忙(也就是UART正在送數據給IrDA編碼器),IrDA接收線上的任何數據都將被IrDA解碼器所忽略。如果接收器忙(也就是UART正在接收從IrDA解碼器來的解碼數據),從UART的TX上到IrDA的數據將不會被IrDA編碼。當接收數據時,應該避免發送,因為將被發送的數據可能被破壞。
- SIR發送邏輯把'0'作為高脈沖發送,把'1'作為低電平發送。脈沖的寬度規定為正常模式時位周期的3/16(見圖115)。
- SIR解碼器把接收到的IrDA信號轉變成比特流后發送給UART。
- SIR接收邏輯把高電平狀態解釋為'1',把低脈沖解釋為'0'。
- 發送編碼器輸出與解碼器輸入有著相反的極性。當空閑時,SIR輸出處于低狀態。
- IrDA規范要求脈沖要寬于1.41us。脈沖寬度是可編程的。接收器端的尖峰脈沖檢測電路會過對寬度小于2個PSC周期的脈沖進行過濾操作(PSC是在UART_GTPR中編程的預分頻值)。寬度小于1個PSC周期的脈沖一定會被過濾掉,但是那些寬度大于1個而小于2個PSC周期的脈沖可能被接收或濾除,那些寬度大于2個周期的將被視為一個有效的脈沖。當PSC=0時,IrDA編碼器/解碼器不工作。
- 接收器可以與一低功耗發送器通信。
- 在IrDA模式里,UART_CR2寄存器上的STOP位必須配置成1個停止位。
IrDA紅外低功耗模式
IrDA可以工作在正常模式,也可以工作在低功耗模式。選擇低功耗模式需要把UART_CR5寄存器的IRLP位置1。
發送器
在低功耗模式,脈沖寬度不再持續3/16個位周期。取而代之,脈沖的寬度是低功耗波特率時鐘周期的3倍,該波特率的頻率最小可以是1.42MHz。通常這個值是1.8432MHz(1.42 MHz<PSC<2.12 MHz)。一個低功耗模式可編程分頻器把系統時鐘進行分頻以達到這個值。
接收器
低功耗模式的接收類似于正常模式的接收。
為了濾除尖峰干擾脈沖,UART應該濾除寬度短于1個周期的脈沖。只有持續時間大于2個周期的IrDA低功耗波特率時鐘(UART_GTPR中的PSC)的低電平信號才被接受為有效的信號。
注意:1.寬度小于2個大于1個PSC周期的脈沖可能會也可能不會被濾除。
2.接收器的建立時間應該由軟件管理。IrDA物理層技術規范規定了在發送和接收之間最小要有協10ms的延時(IrDA是一個半雙工議)。

(圖114:STM8_IrDA SIR ENDEC–框圖)

(圖115:STM8_IrDA數據調制(3/16)–普通模式)