×
嵌入式 > 嵌入式开发 > 详情

基于MSP430G2303的TV背光3D红外信号发射的方案

发布时间:2020-07-16 发布时间:
|
液晶(LCD)电视机在家电消费市场已经全面普及,因为 LCD 显示需要背光,而传统的 CCFL 背光已经逐渐被 LED 背光替代。在 LED 背光方案中,常常需要一个 MCU 来控制 LED Driver。同时,因为 3D 电视的市场占有率越来越高,在 3D 电视中,也需要使用一个 MCU 来发射 3D 眼镜同步信号。

本文介绍了一种基于 MSP430G2303 单片机实现 3D TV 的背光扫描和 3D 红外信号发射的解决方案。该方案采用一颗高性价比的 MCU 实现了 3D TV 背光扫描和红外发射功能,具有成本低,性能可靠的特点。

  1. 简介

快门式的 3D 电视需要发射左、右眼的同步信号给眼镜,眼镜根据这个信号来控制左右眼的开关,从而实现 3D 显示。同时,为了获得更好的 3D 效果,主机会按照左右眼的同步信号,调节显示器的背光,即 3D Scanning 背光扫描。

通常应用中会用一个 MCU 来处理 3D 红外信号发射,用另一个 MCU 实现背光扫描。本文介绍了一种使用一个 MCU 实现 3D 红外信号发射和背光扫描的方法。采用 TI 公司的高性能,低成本的 MSP430G 系列 MCU 可以很方便实现这两个功能。

2. 原理框图

2.1 功能框图

基于 MSP430G2303 MCU 设计 TV 背光、3D 红外发射二合一功能控制器的系统框图如下:

uf06c 配置内部数字振荡器(DCO)工作在 8MHz 最高主频,为 MCLK,ACLK 分别提供 8MHz 的时钟源;


uf06c 配置 USCI_A 工作在从 I2C 模式,接收上位机发过来的参数数据;
uf06c MCU 检测 GPIO 的上升、下降沿中断,并根据 TV 模式设置背光 PWM输出;
uf06c TIMER_A0 的 CCP1,CCP2 用来分别实现 3D 模式下的 8 通道的 PWM 背光输出控制;
uf06c TIMER_A0 的 CCP0 实现红外编码处理;
uf06c TIMER_A1 实现 20kHz 的红外载波频率输出。

2.2 引脚分配框图

在本应用中,MSP430G2303 的管脚分配如下图所示。

其中:
- P1.0-P1.5, P2.0-P2.1 用作 8 路 PWM 输出,控制 LED 背光;
- P2.2 用作红外发射控制管脚,控制 3D 红外信号发射;
- P2.3 用来接收 3D 信号的 R/L 信号;
- P2.4 用来接收 2D 模式下的 PWM 输入;
- P2.5 用来接收主机的 2D/3D 模式切换;
- P1.6、P1.7 用作 I2C 总线 SDA 和 SCL,接收主机发送的命令和参数。

2.3 原理图

设计原理图如下图所示:

2.4 系统框图及优势

目前,大多数的 LCD 电视厂家采用主板+电源板的系统架构。主板负责处理电视信号,电源板负责管理系统电源以及 LCD 背光驱动。

支持 3D 模式的电视机上,电源板上采用一个 MCU1 来处理 3D Scanning 模式的背光扫描,在主板上使用一个 MCU2 控制 3D 眼睛的红外信号发射。如图4 所示。这种架构的方案有如下几个缺点:

  1. 由于不同的 LCD 显示屏对背光扫描的参数不一样,所以位于电源板上的MCU1 要根据不同的 LCD 显示屏配置不同的参数, 生产和管理很不方便;


    2. 不同的电视尺寸背光的通道数是不一样的,同一个 MCU 的软件很难支持各种规格的电视;


    3. 背光 MCU 的 SYNC 信号和主芯片发送给主板上的 MCU 的 L/R 信号存在一定相差,容易造成 3D 眼睛和背光不同步。

TI 的二合一方案,利用一个 MCU 处理 3D 电视的背光和 3D 眼睛的红外信号,系统框图如图 5 所示。本方案的优势如下:

1. 该方案采用一个 MCU,只需要一套软件;便于软件开发和管理;
2. 在主芯片和 MCU 之间增加了 I2C 接口进行通信,所有的参数都可以通过该接口传给 MCU;
3. 使用同一套软件不同的屏参和 LED 背光通道数的控制,方便生产和物料管理。

3. 设计原理

3.1 2D 模式下的背光控制

在 2D 模式下,MCU 控制 8-CH 的背光输出跟随 PWMIN 的信号。本应用中,采用 P2.4 引脚作为 2D 模式下的 PWM_IN 的输入引脚,P2.4 被设计成上升/下降沿触发中断,在中断处理函数中,CPU 根据 PWM_IN 的信号设置 8 个通道的 PWM 输出电平。背光输出波形如下图所示:

由于采用的管脚中断触发 PWM 输出,所以 PWM 的输出精度受到中断处理的影响,会带来 10~20uS 的延时误差。

3.2 3D 模式下的背光控制

3.2.1 需求分析

在 3D 模式下,MCU 接收从 LCD 显示屏发出的 R/L 信号,并根据设置好的Phase 和 Duty 参数,分别输出 8 路 PWM 控制信号驱动 LED Driver 点亮背光。为了适应各种屏的需要,8 路 PWM 信号的 Phase 和 Duty 可以由主机通过 I2C总线设置。具体的命令参见本文的“4. 命令字”章节。

3D 模式下的背光控制输出和 R/L 信号的波形图,如下图所示:

由于 MCU 采用 GPIO 的中断触发方式检测 R/L 信号,每个通道的处理是通过 TIMER 中断触发,所以在实际操作中会带来一定的延时误差。实际测试的误差在 20uS 以内。

由于中断处理需要占用 CPU 一定的处理时间,所以不同通道的 Phase 延时会受到影响,不同的通道之间的 Phase 值不能相差太小。根据实际测试,最小的相位差不能低于 50us。

3.2.2 软件实现

从波形上分析,8 个通道的 PWM 信号的 Phase 各不相同,我们把在一个SYNC 周期内的 8 路通道的 PWM 波形的上升沿和下降沿看成 8 个 GPIO 上升事件和 8 个下降事件,然后根据事件发生的先后时间排序。由于上升沿和下降沿有可能在同一时间发生,所以我们就用 TIMER_A0 的 CPP1 和 CPP2 分别处理上升沿事件和下降沿事件。

在 3D 模式时,设置 Timer_A0 工作在连续模式; P2.3 管脚接收主机的 R/L信号。在 R/L 信号的上升沿和下降沿触发 GPIO 中断,在中断处理函数中清零TIMER_A0 计数器。然后,按照排好序的事件序列,设置第一个上升沿事件的时间点到 TIMER_A0 的 CCP1 和第一个下降沿事件的时间点到 TIMER_A0 的CCP2。最后,使能 TIMER_A0 的 CCP1 和 CPP2 中断。

在 TIMER_A0 的 CCP1 和 CCP2 中断发生时,CPU 根据上升沿和下降沿的事件设置对应的 GPIO 电平,并更新 CCP1 或 CCP2 中的上升沿或下降沿事件的时间点。

这样就顺序实现了 3D 背光的 Scanning 扫描功能。

3.3 3D 模式下的红外信号发射

3.3.1 需求分析

在 3D 模式下,MCU 根据图像帧的同步信号控制三级管驱动一个红外发射管,给 3D 眼镜发送红外信号。3D 眼镜根据接收到的信号开关左右眼的快门,从而使左右眼分别看到不同的电视信号,实现 3D 效果。

红外信号的频率为 20kHz,50%的占空比。如下图所示:

在本应用中使用 L/R (左、右眼) 信号替代帧同步信号,MCU 检测到该信号后,按照设置好的参数输出固定的红外 R/L 同步信号给眼镜。为了节约功耗,每 3 次 R/L 信号发射一次红外信号。

为了避免累计的时间误差,MCU 每检测到 15 个 R/L 信号需发送一次帧同步信号给眼镜,具体波形如下。为了防止和 3D R/L 同步信号冲突,该信号在R/L 同步信号的第二个 R/L 信号之后发送。

编码各部分时长及包含的方波脉冲数见表一。

3.3.2 软件实现

由于红外信号载波频率的精度会影响到 3D 眼睛的接收距离和角度,所以我们使用硬件 Timer 来产生 20kHz 的红外载波信号。我们设置 Timer_A1 工作在 PWM 模式,周期为 50us,占空比为 50%。

在背光控制一节,已经介绍了使用如何设置 Timer_A0,使其工作在连续计数器模式。在 3D 红外发射部分需要利用 Timer_A0 的 CCP0 功能。

利用 P2.3 来检测 R/L 信号,分别在上升沿和下降沿产生同步信号的中断。

在 R/L 信号的上升/下降沿中断中,按照表 1 的参数,设置 Timer_A0 的CCP0,并根据波形开启和关闭 Timer_A1 产生的 PWM 波形,从而实现红外编码。

由于在不同的 R/L 信号周期要求产生不同红外波形,我们定义一个计数器来计算 R/L 同步信号的周期数,该计数器范围从 1 到 15。MCU 在不同的计数值,产生对应的红外信号。

由于软件采用中断的方式检测 R/L 信号,采用 Timer 中断的方式处理红外编码,所以在计算编码周期时需要把中断处理的时间考虑进去,尽量避免由于中断处理带来的累计误差。

3.4 帧频率的判断

由于电视信号的制式不同,帧同步信号分为 50HZ 和 60HZ 两种。MCU 需要判断帧同步信号的频率,并根据频率调用各自的背光参数。这个工作分为两个部分。

第一部分在 TV 信号从 2D 切换到 3D 的过程,在这个过程中由于 R/L 信号还未稳定,所以不能输出 3D 红外信号,同时 8 路 PWM 控制单元输出一个固定的 50HZ,占空比位 30%的 PWM 信号驱动 LED driver 点亮背光。在此期间,我们利用 Timer_A1 的 CCP 功能,捕获 R/L 信号的脉宽,并判断其周期。等其稳定在 50HZ 或 60HZ 之后,才载入 50HZ 或 60HZ 的参数,并切换到 3D 工作模式。

第二部分发生在 3D 工作模式,我们利用 MCU 的 T imer_A1 定期检测 R/L信号,判断其周期是否有变化,如果发生有效的 50HZ 和 60HZ 的切换,MCU会重新载入当前的频率参数。为了不影响到正常的 3D 红外发射功能和Scanning 背光扫描功能,我们在 R/L 信号周期计数器计数到 15 时才判断一次R/L 信号。

4. 通信功能

4.1 I2C 总线接口

TV 的主芯片通过 I2C 接口和 MCU 进行通信,并把相关的参数信息通过I2C 总线传给 MCU。主芯片工作在 I2C 主模式,MCU 工作在 I2C 从模式。

I2C 接口设计成符合 I2C 总线读写规范的标准工作模式,包含 7 位地址,8-BIT 数据访问模式。

4.2 I2C 数据帧格式描述

主芯片通过数据帧和 MCU 通信,一帧数据以 START 信号为起始,以STOP 信号为结束,I2C 的数据帧格式如下表所示:

具体的帧格式描述如下:
uf06c I2C 地址+W/R - 主机通过 7 位地址访问从机,访问地址为 0xC4
uf06c 命令字 - 从机通过解析命令字,更改参数数据
uf06c 数据域长度 - 根据不同的命令字,有不同的数据域长度
uf06c 数据域 - 命令字匹配的数据参数,详细见命令字说明
uf06c 校验码 - 从命令字到数据域的所有字节和,取最低的 8 位
uf06c 结束符 - 帧结束符:0x9B64

4.3 命令字

MCU 接收到完整的 I2C 帧数据后,解析出命令字并根据命令字设置新的参数。

其中命令字包括如下定义:

5. Firmware 设计

本设计采用 C 语言开发,IDE 采用 IAR5.4 版本。

5.1 主函数流程

在主函数中,主要完成系统的初始化工作,并从 INFO Flash 中载入 TV 背光和 3D 红外发射需要的参数到 RAM 中。然后进入循环查询模式,等待主机I2C 命令操作。

主函数的流程图如下所示:

5.2 I2C 帧数据判断流程

MCU 接收到一帧 I2C 数据之后,首先判帧数据是否合法,判断的流程图如下图所示:

5.3 命令字解析处理

当检测到合法的 I2C 数据帧之后,MCU 提取出数据帧中的命令字,并根据命令字跳转到命令字处理函数。

在本应用中,把命令处理函数定义成一个函数指针数组,当接收到命令字后,根据命令字的来调用数组中的不同函数。详细代码如下:

// 定义 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
// 定义命令字处理函数指针
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;
}

更详细的关于各个 I2C 命令的处理参见附件中的软件包。

5.3 2D 模式的背光处理

TV 在 2D 模式下时,背光跟随输入的 PWM 信号调节输出,其处理函数如下:
if (P2IFG & PIN_PWMIN)
{
if (P2IN & PIN_PWMIN)
{
PWM_OUT_HIGH();
P2IES |= PIN_PWMIN; // 设置下降沿触发中断
}
else
{
PWM_OUT_LOW();
P2IES &= ~PIN_PWMIN; // 设置为上升沿触发中断
}
}

其它软件功能如 3D 模式下的背光处理和红外发射控制比较复杂,不在本文中详细列举。若对本文所述的方案和内容感兴趣,请联系德州仪器半导体获得进一步支持。

6. 参考文献

  1. MSP430G2303 数据手册
    2. MSP430F2XX 用户手册



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32 TIMx 配置