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