利用MSP430FR4xx實現紅外遙控
紅外遙控采用紅外(IR)光來傳送信息。發(fā)射器MCU的調制信號控制IR LED發(fā)射紅外光。調制能夠幫助接收器把需要的信號與所有其他的紅外噪聲源區(qū)分開來。調制的實現過程是用帶有有效信息的包絡信號對載波信號(通常是一個具有較高頻率的方波)進行調制。
本文引用地址:http://2s4d.com/article/201610/309215.htm接收器采用光電二極管把IR光轉換為電流。通常使用跨阻抗放大器將電流轉換為電壓;在解調前,該電壓將通過一個增益放大器和濾波器。載波信號在解調過程中去除。解調信號可直接連接至接收器的MCU用于解碼。
紅外遙控調制和編碼理論
所有的新式紅外遙控設計均采用數字調制。兩個基本的數字調制技術是幅移鍵控(ASK)和頻移鍵控(FSK)。ASK通過改變載波幅度來表示邏輯1和0,而FSK則采用兩種不同的載波頻率來表示這些邏輯電平。
ASK調制
ASK是最古老和最簡單的技術之一,頗受很多消費電子公司的青睞。它憑借自身優(yōu)良的性能(魯棒性好且低功耗)、設計簡單和低成本,成為了最流行的調制模式。
在發(fā)送器中,有效數據被調制成一組頻率范圍從30kHz至60kHz的載波脈沖。當沒有信號傳輸時,則插入一個空號。
接收器調諧至與發(fā)送器載波相同的頻率,而所有其他的噪聲則被接收器的帶通濾波器所阻隔。許多制造商都提供了全集成的接收器模塊, 此類模塊可提供與接收器微控制器相對接的解調信號。典型的載波頻率為30kHz、33kHz、36kHz、38kHz、40kHz或56kHz。
下文將說明ASK調制系統(tǒng)中所使用的幾種主要的編碼方法。
●脈沖位置編碼脈沖位置編碼是基本的ASK調制。每個位寬恒定。載波調制脈沖代表邏輯1,而空號則代表邏輯0。
●脈沖距離編碼在脈沖距離編碼中,每個位由一個載波調制脈沖和一個空號組成??仗枌挾扔脕韰^(qū)分邏輯1和邏輯0。載波調制脈寬則是恒定的。
●脈沖寬度編碼在脈沖寬度編碼中,每個位由一個載波調制脈沖和一個空號組成。載波調制脈寬用來區(qū)分邏輯1和邏輯0,空號則是恒定的。
●曼徹斯特編碼曼徹斯特編碼也被稱為雙相位編碼。每個位由一個載波調制脈沖和一個空號組成。載波調制脈沖和空號之間轉換的極性規(guī)定了邏輯電平。例如,“調制脈沖至空號”表示邏輯1,而“空號至調制脈沖”則表示邏輯0。
FSK調制
FSK為邏輯1和邏輯0采用了兩個不同的載波頻率,而且在脈沖之間沒有空號。這種解決方案采用兩個頻率,增加了解調的復雜性和成本,因此并未得到廣泛使用。
MSP430FR4xx概述
MSP430FR4xx是超低功耗MSP430系列16位微控制器中的一員。它具有優(yōu)化的外設資源和IR調制邏輯,從而非常適用于遙控應用。強大的LCD顯示功能和豐富的電容式觸摸I/O資源擴展了它在諸如血壓計、水表及動態(tài)令牌(OTP)等其他領域中的使用。
MSP430FR4xx紅外遙控實現
紅外調制傳統(tǒng)上主要是采用軟件和有限的硬件資源來實現的(即用一個定時器來產生精確的時隙)。由于時隙很小,軟件開銷很大。MSP430FR4xx具有一些內部互聯(lián)硬件資源(如定時器和SPI),因而能夠以較低的軟件開銷來實現IR調制。
MSP430FR4xx中的IR調制邏輯包含兩個級聯(lián)定時器和附加組合邏輯(見圖1)。
圖1:IR調制邏輯電路。
IR調制邏輯可通過設定SYSCFG1寄存器中的IREN位來使能。該邏輯具有兩個不同的PWM輸入信號(源自TA0和TA1),用以支持ASK或FSK調制。在ASK調制中,來自TA0的第一個PWM用于載波生成,而來自TA1的第二個PWM或來自eUSCI_A的輸出則可用于產生包絡。在FSK調制中,兩個PWM信號分別代表兩種不同的載波頻率。SYSCFG1寄存器中的IRMSEL位規(guī)定了調制模式。在輸出至外部引腳之前,可通過設定SYSCFG1寄存器中的IRPSEL位來使調制信號的極性反轉,從而適應不同的外部驅動電路。
包絡波形生成可利用硬件或軟件來實現。在硬件模式中,包絡信號來自TA1(僅可用于ASK)或eUSCI_A。當來自于后者時,其工作于SPI模式,8位數據自動地串行發(fā)送。在軟件模式中,SYSCFG1寄存器中的IRDATA位負責控制是發(fā)送邏輯0還是邏輯1。SYSCFG1寄存器中的IRDSEL位則用來選擇是使用硬件模式還是軟件模式。
調制方案
●ASK調制IRMSEL 位缺省為ASK調制。對AND門的兩個輸入進行調制,驅動外部LED:一個是來自TA0的載波信號,另一個是來自TA1、eUSCI_A或IRDATA位的包絡時序信號。若是來自IRDATA位,則需要采用另一個獨立的計數器(TA1、RTC或WDT)對這個位進行周期性的更新。
●FSK調制若IRMSEL 位被置位, 則啟用FSK 模式。TA0 和TA1分別生成兩個單獨的載波頻率。包絡波形可由eUSCI_A或IRDATA位生成;若由IRDATA位生成,則需要用另一個獨立的計數器(RTC或WDT)對此位進行周期性的更新。
載波生成
定時器用于生成載波。TA0和TA1均可從高頻SMCLK獲得,從而實現較高的分辨率和較寬的頻率范圍。定時器的計數器可工作于“向上”或者“向上/向下”計數模式。其CCR0用來控制載波周期,而CCR2則用來決定載波的占空比。從系統(tǒng)的角度看,較小的占空比有助于降低功耗。典型的占空比約為3/16至4/16。多達7種輸出模式可實現靈活的載波生成。啟動載波生成之后,在一幀數據發(fā)送完成前,用戶不必更新其配置。
波形包絡生成
包絡波形由發(fā)送的數據和使用的編碼方式來決定。用戶可使用TA1、eUSCI_A或IRDATA,根據所選取的調制模式來生成包絡波形。
當在FSK 調制中使用TA1時,CCR0用來設定包絡的周期,而CCR2則用來設定占空比。因此,對于不同的編碼方式,應將CCR0配置為每位寬度的1或2倍;CCR2必須在發(fā)送下一位之前更新。將要發(fā)送的位數決定了在一次傳輸中需要觸發(fā)的中斷次數,因此可將它直接加入到軟件開銷和電流消耗中。
當在SPI 模式中使用eUSCI_A時,其波特率應配置為有效數據波特率的1或2倍。例如,在脈沖位置編碼中是配置相同的波特率,而在曼徹斯特編碼中則要加倍。采用SPI可大幅減少中斷次數,從而降低軟件開銷。
當使用IRDATA時,需要另一個獨立的計數器( 通常是RTC ) 來更新IRDATA位。
硬件和軟件開銷考慮因素
MSP-430系列專為超低功耗應用設計,從而延長電池壽命。降低功耗的最高原則是盡可能增加處于低功耗模式(比如LPM0/LPM3)的時間。強烈建議采用低功耗集成外設模塊來取代由軟件實現的功能。由于生成載波,高頻SMCLK必不可少,在IR數據傳輸期間, 就調制和編碼模式而言, 應盡量延長處于LPM0模式的時間。從這個角度來說,eUSCI_A是最可取的,因為它能夠獲得最長的時隙(4或8位)。但是在某些需要把eUSCI_A用于執(zhí)行其他任務的應用中,則要采用TA1和RTC等其他的硬件資源作為替代。
協(xié)議示例
業(yè)界使用的紅外傳輸協(xié)議有很多,不過大多是從具有不同頻率或格式的幾種基礎協(xié)議發(fā)展而來。下面將說明作為最流行協(xié)議的“脈沖距離協(xié)議”和“曼徹斯特協(xié)議(RC5)”。
脈沖距離協(xié)議
脈沖距離協(xié)議被許多家用電器公司所廣泛使用。它采用載波頻率為38kHz的ASK調制和脈沖距離編碼。
●幀格式在協(xié)議中有兩種幀:數據幀和重發(fā)幀。
數據幀由一個引導碼和數據組成。引導碼是一個長度為9ms的突發(fā)脈沖,其后是4.5ms的停頓。數據有效載荷包括識別設備用的8位地址和控制字用的8位命令。為保證可靠性,兩者均發(fā)送兩次。地址和命令的第二次傳輸是互補的,因此數據幀的總長度恒定(67.5ms)。有效載荷以一個560μs的載波調制拖尾脈沖作為結束,從而完成最后的數據間隙。邏輯1定義為一個跟隨1690μs空號周期的560μs載波調制周期。邏輯0則定義為一個跟隨560μs空號周期的560μs載波調制周期。圖2顯示了一個完整的數據幀格式。
圖2:脈沖距離協(xié)議,數據幀格式。
重發(fā)幀定義為處理自動重發(fā)功能;它并不攜帶任何地址或命令信息。它包括序列脈沖和一個跟隨其后的拖尾脈沖。在相同按鍵仍然按下的同時,重發(fā)幀每110ms重發(fā)一次。脈沖距離協(xié)議的完整序列格式如圖3所示。
圖3:脈沖距離協(xié)議,完整的序列格式。
●包絡生成如果采用TA1來生成包絡波形,則每對載波調制脈沖和空號必須對CCR0和CCR2進行一次更新。CCR0取決于載波調制脈沖周期和空號周期,而CCR2則取決于載波調制脈沖周期。例如,如果TA1由4MHz的SMCLK提供且采用缺省分頻器配置,則CCR0和CCR2被分別配置為54000和36000來生成引導碼(9ms的載波調制脈沖與4.5ms的空號配對),并針對邏輯1分別更新為9000和2240。如欲發(fā)送一個完整的數據幀,則CCR0和CCR2必需更新34(1+8x2+8x2+1)次,這在TA1中斷程序中實現。
如果采用SPI來生成包絡波形,則應將其波特率設定為與0.56ms的最小時隙相等。因此,TXBUF應發(fā)送3字節(jié)數據(0xFF、0xFF、0x00)來傳輸引導碼,而其他字節(jié)的發(fā)送則取決于有效載荷。每個數據幀總共有16個“1”和16個“0”。SPI的TXBUF需要更新大約15(121/8)次,這在SPI中斷服務程序中實現。其軟件開銷是TA1開銷的一半。
●載波生成要生成具有1/4占空比的38kHz載波,需要根據SMCLK來配置TA0的CCR0和CCR2。例如,當采用4MHz SMCLK時,CCR0和CCR2被分別配置為105(4000/38)和26(4000/38/4)。
曼徹斯特編碼(RC5)
RC5協(xié)議由Philips公司推出。它采用載波頻率固定為36kHz的ASK調制和曼徹斯特編碼。
●幀格式RC5數據幀以兩個邏輯1起始位(S1和S2)作為開始,后面是一個翻轉位(T),有效載荷包含一個5位地址和一個6位命令。翻轉位在每次新按鍵按壓時改變其數值。5個地址位用于識別欲控制的設備,而6個命令位則包含將傳輸的信息。
邏輯1 被定義為一個跟隨889 μs載波調制脈沖周期的889 μs 空號周期。邏輯0則被定義為一個跟隨889μs空號周期的889 μs 載波調制脈沖周期。
完整的數據幀具有24.9ms的固定長度,其格式如圖4所示。
圖4:RC5協(xié)議,數據幀格式。
自動重發(fā)功能通過重發(fā)具有相同翻轉位的數據幀來處理。在RC5的擴展版本中,S2起始位被解釋為一個反轉的第六地址位,而不是固定的邏輯1。
●包絡生成最小時隙為889μs。需要更新TA1的輸出模式來生成包絡波形。例如,TA1由4MHz的SMCLK提供,CCR0和CCR2被分別固定為7112(2x889/0.25)和3556(889/0.25)。TA1輸出模式在每個數據幀中最多需要更新14(3+5+6)次,這在TA1中斷服務程序中進行處理。
假如采用SPI,則利用889μs周期來設定波特率。其TXBUF需要被寫入大約4(2x14/8)次來傳輸一個數據幀,這可在SPI中斷程序中進行處理。
●載波生成如欲生成具有1/3占空比的36kHz載波,則根據SMCLK的頻率來配置TA0的CCR0和CCR2。例如,當采用4MHz SMCLK時,CCR0 和CCR2 被分別配置為111(4000/36)和37(4000/36/3)。如果SMCLK為8MHz,則上面的兩個數值應該加倍。
軟件設計和開銷比較
如果沒有IR調制邏輯電路, 則通常需要采用一個定時器, 通過控制其PWM輸出來完成紅外傳輸。其計數器周期和通道占空比與載波周期和占空比是一致的。因此,軟件根據定時器的溢出數來更新其PWM輸出。例如,在脈沖距離協(xié)議的引導碼生成過程中,軟件計數342(9ms/(1/38kHz))次溢出來輸出9ms的載波脈沖,計數171(4.5ms/(1/38kHz))次溢出來輸出4.5ms的空號。在溢出空號期間,器件保持在LPM0模式以節(jié)省功率。幀長度決定了喚醒次數。
在采用IR調制邏輯電路的情況下,器件僅需喚醒非常有限的時間即可實現包絡生成,其間載波將自動生成,無需任何干預。
為了更好地了解IR邏輯電路在傳輸一個完整幀期間所擁有的軟件開銷的優(yōu)越性,這里針對脈沖距離協(xié)議和曼徹斯特協(xié)議對采用不同方法的中斷次數做了比較。詳情見表1。
表1:傳輸一個完整數據幀的軟件開銷比較
結論
MSP430FR4xx器件包含了豐富的外設和專用的IR調制邏輯功能電路,可為那些采用ASK或FSK調制的紅外遙控實現方案的開發(fā)提供幫助。利用TA0和TA1,能夠在幾乎不需要軟件干預的情況下輕松生成載波。給出的兩個典型示例表明,利用eUSCI_A實現包絡生成可獲得最大的軟件開銷降幅。
評論