基于MSP430G2303的TV背光3D紅外信號(hào)發(fā)射的方案
本文介紹了一種基于 MSP430G2303 單片機(jī)實(shí)現(xiàn) 3D TV 的背光掃描和 3D 紅外信號(hào)發(fā)射的解決方案。該方案采用一顆高性?xún)r(jià)比的 MCU 實(shí)現(xiàn)了 3D TV 背光掃描和紅外發(fā)射功能,具有成本低,性能可靠的特點(diǎn)。
簡(jiǎn)介
快門(mén)式的 3D 電視需要發(fā)射左、右眼的同步信號(hào)給眼鏡,眼鏡根據(jù)這個(gè)信號(hào)來(lái)控制左右眼的開(kāi)關(guān),從而實(shí)現(xiàn) 3D 顯示。同時(shí),為了獲得更好的 3D 效果,主機(jī)會(huì)按照左右眼的同步信號(hào),調(diào)節(jié)顯示器的背光,即 3D Scanning 背光掃描。
通常應(yīng)用中會(huì)用一個(gè) MCU 來(lái)處理 3D 紅外信號(hào)發(fā)射,用另一個(gè) MCU 實(shí)現(xiàn)背光掃描。本文介紹了一種使用一個(gè) MCU 實(shí)現(xiàn) 3D 紅外信號(hào)發(fā)射和背光掃描的方法。采用 TI 公司的高性能,低成本的 MSP430G 系列 MCU 可以很方便實(shí)現(xiàn)這兩個(gè)功能。
2. 原理框圖
2.1 功能框圖
基于 MSP430G2303 MCU 設(shè)計(jì) TV 背光、3D 紅外發(fā)射二合一功能控制器的系統(tǒng)框圖如下:
? 配置內(nèi)部數(shù)字振蕩器(DCO)工作在 8MHz 最高主頻,為 MCLK,ACLK 分別提供 8MHz 的時(shí)鐘源;
? 配置 USCI_A 工作在從 I2C 模式,接收上位機(jī)發(fā)過(guò)來(lái)的參數(shù)數(shù)據(jù);
? MCU 檢測(cè) GPIO 的上升、下降沿中斷,并根據(jù) TV 模式設(shè)置背光 PWM輸出;
? TIMER_A0 的 CCP1,CCP2 用來(lái)分別實(shí)現(xiàn) 3D 模式下的 8 通道的 PWM 背光輸出控制;
? TIMER_A0 的 CCP0 實(shí)現(xiàn)紅外編碼處理;
? TIMER_A1 實(shí)現(xiàn) 20kHz 的紅外載波頻率輸出。
2.2 引腳分配框圖
在本應(yīng)用中,MSP430G2303 的管腳分配如下圖所示。
其中:
- P1.0-P1.5, P2.0-P2.1 用作 8 路 PWM 輸出,控制 LED 背光;
- P2.2 用作紅外發(fā)射控制管腳,控制 3D 紅外信號(hào)發(fā)射;
- P2.3 用來(lái)接收 3D 信號(hào)的 R/L 信號(hào);
- P2.4 用來(lái)接收 2D 模式下的 PWM 輸入;
- P2.5 用來(lái)接收主機(jī)的 2D/3D 模式切換;
- P1.6、P1.7 用作 I2C 總線(xiàn) SDA 和 SCL,接收主機(jī)發(fā)送的命令和參數(shù)。
2.3 原理圖
設(shè)計(jì)原理圖如下圖所示:
2.4 系統(tǒng)框圖及優(yōu)勢(shì)
目前,大多數(shù)的 LCD 電視廠(chǎng)家采用主板+電源板的系統(tǒng)架構(gòu)。主板負(fù)責(zé)處理電視信號(hào),電源板負(fù)責(zé)管理系統(tǒng)電源以及 LCD 背光驅(qū)動(dòng)。
支持 3D 模式的電視機(jī)上,電源板上采用一個(gè) MCU1 來(lái)處理 3D Scanning 模式的背光掃描,在主板上使用一個(gè) MCU2 控制 3D 眼睛的紅外信號(hào)發(fā)射。如圖4 所示。這種架構(gòu)的方案有如下幾個(gè)缺點(diǎn):
由于不同的 LCD 顯示屏對(duì)背光掃描的參數(shù)不一樣,所以位于電源板上的MCU1 要根據(jù)不同的 LCD 顯示屏配置不同的參數(shù), 生產(chǎn)和管理很不方便;
2. 不同的電視尺寸背光的通道數(shù)是不一樣的,同一個(gè) MCU 的軟件很難支持各種規(guī)格的電視;
3. 背光 MCU 的 SYNC 信號(hào)和主芯片發(fā)送給主板上的 MCU 的 L/R 信號(hào)存在一定相差,容易造成 3D 眼睛和背光不同步。
TI 的二合一方案,利用一個(gè) MCU 處理 3D 電視的背光和 3D 眼睛的紅外信號(hào),系統(tǒng)框圖如圖 5 所示。本方案的優(yōu)勢(shì)如下:
1. 該方案采用一個(gè) MCU,只需要一套軟件;便于軟件開(kāi)發(fā)和管理;
2. 在主芯片和 MCU 之間增加了 I2C 接口進(jìn)行通信,所有的參數(shù)都可以通過(guò)該接口傳給 MCU;
3. 使用同一套軟件不同的屏參和 LED 背光通道數(shù)的控制,方便生產(chǎn)和物料管理。
3. 設(shè)計(jì)原理
3.1 2D 模式下的背光控制
在 2D 模式下,MCU 控制 8-CH 的背光輸出跟隨 PWMIN 的信號(hào)。本應(yīng)用中,采用 P2.4 引腳作為 2D 模式下的 PWM_IN 的輸入引腳,P2.4 被設(shè)計(jì)成上升/下降沿觸發(fā)中斷,在中斷處理函數(shù)中,CPU 根據(jù) PWM_IN 的信號(hào)設(shè)置 8 個(gè)通道的 PWM 輸出電平。背光輸出波形如下圖所示:
由于采用的管腳中斷觸發(fā) PWM 輸出,所以 PWM 的輸出精度受到中斷處理的影響,會(huì)帶來(lái) 10~20uS 的延時(shí)誤差。
3.2 3D 模式下的背光控制
3.2.1 需求分析
在 3D 模式下,MCU 接收從 LCD 顯示屏發(fā)出的 R/L 信號(hào),并根據(jù)設(shè)置好的Phase 和 Duty 參數(shù),分別輸出 8 路 PWM 控制信號(hào)驅(qū)動(dòng) LED Driver 點(diǎn)亮背光。為了適應(yīng)各種屏的需要,8 路 PWM 信號(hào)的 Phase 和 Duty 可以由主機(jī)通過(guò) I2C總線(xiàn)設(shè)置。具體的命令參見(jiàn)本文的“4. 命令字”章節(jié)。
3D 模式下的背光控制輸出和 R/L 信號(hào)的波形圖,如下圖所示:
由于 MCU 采用 GPIO 的中斷觸發(fā)方式檢測(cè) R/L 信號(hào),每個(gè)通道的處理是通過(guò) TIMER 中斷觸發(fā),所以在實(shí)際操作中會(huì)帶來(lái)一定的延時(shí)誤差。實(shí)際測(cè)試的誤差在 20uS 以?xún)?nèi)。
由于中斷處理需要占用 CPU 一定的處理時(shí)間,所以不同通道的 Phase 延時(shí)會(huì)受到影響,不同的通道之間的 Phase 值不能相差太小。根據(jù)實(shí)際測(cè)試,最小的相位差不能低于 50us。
3.2.2 軟件實(shí)現(xiàn)
從波形上分析,8 個(gè)通道的 PWM 信號(hào)的 Phase 各不相同,我們把在一個(gè)SYNC 周期內(nèi)的 8 路通道的 PWM 波形的上升沿和下降沿看成 8 個(gè) GPIO 上升事件和 8 個(gè)下降事件,然后根據(jù)事件發(fā)生的先后時(shí)間排序。由于上升沿和下降沿有可能在同一時(shí)間發(fā)生,所以我們就用 TIMER_A0 的 CPP1 和 CPP2 分別處理上升沿事件和下降沿事件。
在 3D 模式時(shí),設(shè)置 Timer_A0 工作在連續(xù)模式; P2.3 管腳接收主機(jī)的 R/L信號(hào)。在 R/L 信號(hào)的上升沿和下降沿觸發(fā) GPIO 中斷,在中斷處理函數(shù)中清零TIMER_A0 計(jì)數(shù)器。然后,按照排好序的事件序列,設(shè)置第一個(gè)上升沿事件的時(shí)間點(diǎn)到 TIMER_A0 的 CCP1 和第一個(gè)下降沿事件的時(shí)間點(diǎn)到 TIMER_A0 的CCP2。最后,使能 TIMER_A0 的 CCP1 和 CPP2 中斷。
在 TIMER_A0 的 CCP1 和 CCP2 中斷發(fā)生時(shí),CPU 根據(jù)上升沿和下降沿的事件設(shè)置對(duì)應(yīng)的 GPIO 電平,并更新 CCP1 或 CCP2 中的上升沿或下降沿事件的時(shí)間點(diǎn)。
這樣就順序?qū)崿F(xiàn)了 3D 背光的 Scanning 掃描功能。
3.3 3D 模式下的紅外信號(hào)發(fā)射
3.3.1 需求分析
在 3D 模式下,MCU 根據(jù)圖像幀的同步信號(hào)控制三級(jí)管驅(qū)動(dòng)一個(gè)紅外發(fā)射管,給 3D 眼鏡發(fā)送紅外信號(hào)。3D 眼鏡根據(jù)接收到的信號(hào)開(kāi)關(guān)左右眼的快門(mén),從而使左右眼分別看到不同的電視信號(hào),實(shí)現(xiàn) 3D 效果。
紅外信號(hào)的頻率為 20kHz,50%的占空比。如下圖所示:
在本應(yīng)用中使用 L/R (左、右眼) 信號(hào)替代幀同步信號(hào),MCU 檢測(cè)到該信號(hào)后,按照設(shè)置好的參數(shù)輸出固定的紅外 R/L 同步信號(hào)給眼鏡。為了節(jié)約功耗,每 3 次 R/L 信號(hào)發(fā)射一次紅外信號(hào)。
為了避免累計(jì)的時(shí)間誤差,MCU 每檢測(cè)到 15 個(gè) R/L 信號(hào)需發(fā)送一次幀同步信號(hào)給眼鏡,具體波形如下。為了防止和 3D R/L 同步信號(hào)沖突,該信號(hào)在R/L 同步信號(hào)的第二個(gè) R/L 信號(hào)之后發(fā)送。
編碼各部分時(shí)長(zhǎng)及包含的方波脈沖數(shù)見(jiàn)表一。
3.3.2 軟件實(shí)現(xiàn)
由于紅外信號(hào)載波頻率的精度會(huì)影響到 3D 眼睛的接收距離和角度,所以我們使用硬件 Timer 來(lái)產(chǎn)生 20kHz 的紅外載波信號(hào)。我們?cè)O(shè)置 Timer_A1 工作在 PWM 模式,周期為 50us,占空比為 50%。
在背光控制一節(jié),已經(jīng)介紹了使用如何設(shè)置 Timer_A0,使其工作在連續(xù)計(jì)數(shù)器模式。在 3D 紅外發(fā)射部分需要利用 Timer_A0 的 CCP0 功能。
利用 P2.3 來(lái)檢測(cè) R/L 信號(hào),分別在上升沿和下降沿產(chǎn)生同步信號(hào)的中斷。
在 R/L 信號(hào)的上升/下降沿中斷中,按照表 1 的參數(shù),設(shè)置 Timer_A0 的CCP0,并根據(jù)波形開(kāi)啟和關(guān)閉 Timer_A1 產(chǎn)生的 PWM 波形,從而實(shí)現(xiàn)紅外編碼。
由于在不同的 R/L 信號(hào)周期要求產(chǎn)生不同紅外波形,我們定義一個(gè)計(jì)數(shù)器來(lái)計(jì)算 R/L 同步信號(hào)的周期數(shù),該計(jì)數(shù)器范圍從 1 到 15。MCU 在不同的計(jì)數(shù)值,產(chǎn)生對(duì)應(yīng)的紅外信號(hào)。
由于軟件采用中斷的方式檢測(cè) R/L 信號(hào),采用 Timer 中斷的方式處理紅外編碼,所以在計(jì)算編碼周期時(shí)需要把中斷處理的時(shí)間考慮進(jìn)去,盡量避免由于中斷處理帶來(lái)的累計(jì)誤差。
3.4 幀頻率的判斷
由于電視信號(hào)的制式不同,幀同步信號(hào)分為 50HZ 和 60HZ 兩種。MCU 需要判斷幀同步信號(hào)的頻率,并根據(jù)頻率調(diào)用各自的背光參數(shù)。這個(gè)工作分為兩個(gè)部分。
第一部分在 TV 信號(hào)從 2D 切換到 3D 的過(guò)程,在這個(gè)過(guò)程中由于 R/L 信號(hào)還未穩(wěn)定,所以不能輸出 3D 紅外信號(hào),同時(shí) 8 路 PWM 控制單元輸出一個(gè)固定的 50HZ,占空比位 30%的 PWM 信號(hào)驅(qū)動(dòng) LED driver 點(diǎn)亮背光。在此期間,我們利用 Timer_A1 的 CCP 功能,捕獲 R/L 信號(hào)的脈寬,并判斷其周期。等其穩(wěn)定在 50HZ 或 60HZ 之后,才載入 50HZ 或 60HZ 的參數(shù),并切換到 3D 工作模式。
第二部分發(fā)生在 3D 工作模式,我們利用 MCU 的 T imer_A1 定期檢測(cè) R/L信號(hào),判斷其周期是否有變化,如果發(fā)生有效的 50HZ 和 60HZ 的切換,MCU會(huì)重新載入當(dāng)前的頻率參數(shù)。為了不影響到正常的 3D 紅外發(fā)射功能和Scanning 背光掃描功能,我們?cè)?R/L 信號(hào)周期計(jì)數(shù)器計(jì)數(shù)到 15 時(shí)才判斷一次R/L 信號(hào)。
4. 通信功能
4.1 I2C 總線(xiàn)接口
TV 的主芯片通過(guò) I2C 接口和 MCU 進(jìn)行通信,并把相關(guān)的參數(shù)信息通過(guò)I2C 總線(xiàn)傳給 MCU。主芯片工作在 I2C 主模式,MCU 工作在 I2C 從模式。
I2C 接口設(shè)計(jì)成符合 I2C 總線(xiàn)讀寫(xiě)規(guī)范的標(biāo)準(zhǔn)工作模式,包含 7 位地址,8-BIT 數(shù)據(jù)訪(fǎng)問(wèn)模式。
4.2 I2C 數(shù)據(jù)幀格式描述
主芯片通過(guò)數(shù)據(jù)幀和 MCU 通信,一幀數(shù)據(jù)以 START 信號(hào)為起始,以STOP 信號(hào)為結(jié)束,I2C 的數(shù)據(jù)幀格式如下表所示:
具體的幀格式描述如下:
? I2C 地址+W/R - 主機(jī)通過(guò) 7 位地址訪(fǎng)問(wèn)從機(jī),訪(fǎng)問(wèn)地址為 0xC4
? 命令字 - 從機(jī)通過(guò)解析命令字,更改參數(shù)數(shù)據(jù)
? 數(shù)據(jù)域長(zhǎng)度 - 根據(jù)不同的命令字,有不同的數(shù)據(jù)域長(zhǎng)度
? 數(shù)據(jù)域 - 命令字匹配的數(shù)據(jù)參數(shù),詳細(xì)見(jiàn)命令字說(shuō)明
? 校驗(yàn)碼 - 從命令字到數(shù)據(jù)域的所有字節(jié)和,取最低的 8 位
? 結(jié)束符 - 幀結(jié)束符:0x9B64
4.3 命令字
MCU 接收到完整的 I2C 幀數(shù)據(jù)后,解析出命令字并根據(jù)命令字設(shè)置新的參數(shù)。
其中命令字包括如下定義:
5. Firmware 設(shè)計(jì)
本設(shè)計(jì)采用 C 語(yǔ)言開(kāi)發(fā),IDE 采用 IAR5.4 版本。
5.1 主函數(shù)流程
在主函數(shù)中,主要完成系統(tǒng)的初始化工作,并從 INFO Flash 中載入 TV 背光和 3D 紅外發(fā)射需要的參數(shù)到 RAM 中。然后進(jìn)入循環(huán)查詢(xún)模式,等待主機(jī)I2C 命令操作。
主函數(shù)的流程圖如下所示:
5.2 I2C 幀數(shù)據(jù)判斷流程
MCU 接收到一幀 I2C 數(shù)據(jù)之后,首先判幀數(shù)據(jù)是否合法,判斷的流程圖如下圖所示:
5.3 命令字解析處理
當(dāng)檢測(cè)到合法的 I2C 數(shù)據(jù)幀之后,MCU 提取出數(shù)據(jù)幀中的命令字,并根據(jù)命令字跳轉(zhuǎn)到命令字處理函數(shù)。
在本應(yīng)用中,把命令處理函數(shù)定義成一個(gè)函數(shù)指針數(shù)組,當(dāng)接收到命令字后,根據(jù)命令字的來(lái)調(diào)用數(shù)組中的不同函數(shù)。詳細(xì)代碼如下:
// 定義 I2C 命令字
#define CMD_3D_STA 0x36
#define CMD_3D_IR CMD_3D_STA + 1
#define CMD_3D_BLP1 CMD_3D_IR + 1
#define CMD_3D_BLP2 CMD_3D_BLP1 +1
// 定義命令字處理函數(shù)指針
typedef unsigned char (*pFun)(unsigned char*);
const pFun g_CmdFun[4] = {Set3DSta, Set3DIRPar, Set3DPhase,Set3DDuty};
/*******************************************************************
** Function Name : CmdSer **
** Description : **
** Arguments : **
** Out Put : **
** Author : Triton.Zhang@ti.com **
** Date : **
*******************************************************************/
unsigned char CmdSer(unsigned char Cmd)
{
unsigned char sta = 0;
if ((Cmd>= CMD_3D_STA) && (Cmd <= CMD_3D_BLP2))
sta = (*g_CmdFun[Cmd - CMD_3D_STA])(&g_I2CRxBuff[2]);
else
return 1;
return sta;
}
更詳細(xì)的關(guān)于各個(gè) I2C 命令的處理參見(jiàn)附件中的軟件包。
5.3 2D 模式的背光處理
TV 在 2D 模式下時(shí),背光跟隨輸入的 PWM 信號(hào)調(diào)節(jié)輸出,其處理函數(shù)如下:
if (P2IFG & PIN_PWMIN)
{
if (P2IN & PIN_PWMIN)
{
PWM_OUT_HIGH();
P2IES |= PIN_PWMIN; // 設(shè)置下降沿觸發(fā)中斷
}
else
{
PWM_OUT_LOW();
P2IES &= ~PIN_PWMIN; // 設(shè)置為上升沿觸發(fā)中斷
}
}
其它軟件功能如 3D 模式下的背光處理和紅外發(fā)射控制比較復(fù)雜,不在本文中詳細(xì)列舉。若對(duì)本文所述的方案和內(nèi)容感興趣,請(qǐng)聯(lián)系德州儀器半導(dǎo)體獲得進(jìn)一步支持。
6. 參考文獻(xiàn)
MSP430G2303 數(shù)據(jù)手冊(cè)
2. MSP430F2XX 用戶(hù)手冊(cè)
評(píng)論