摘 要:为了解决液晶屏幕图像通过LED灯条延伸扩展显示效果,以及LED灯条实时同步显示画面颜色的问题,提出了一种基于SPI通信环境光控制技术方案,利用软件算法实现了对液晶屏幕图像的自动分割分区,分析分区图像子小区块的图像数据,运用深度融合图像算法,产出控制环境光输出的RGB数据。采用LED驱动芯片TLC5971串联连接,来控制对应分区的LED灯条显示。由主控制器通过SPI通信将分区的图像RGB数据传送给TLC5971控制LED灯条实时显示画面颜色,达到液晶屏幕的画面延伸。
关键词:SPI通信;LED;环境光;图像;嵌入式系统;液晶屏幕
中图分类号:TP23 文献标识码:A 文章编号:2096-4706(2024)17-0023-05
0 引 言
智能电视机图像所呈现的区域体积大小受液晶屏幕的物理尺度大小所影响,通过在智能电视机四边的LED[1]灯条形成环境灯,使显示屏的图像延伸显示至电视后背的墙壁,并通过在墙面上与电视图像相匹配的灯光作用,产生更加真实、细致的灯光效果和暗部细节,从而提供全新画质,带来更为真实的视觉感受。
为实现LCD屏幕图像通过LED灯条输出延伸扩展效果,采用LCD屏幕图像分割算法[2]进行自动分区,通过对屏幕图像分区各子区块的图像数据进行分析采集,利用深度融合图像算法建立输出环境光图像输出数据。因此,将采集液晶屏幕的图像数据,通过SPI通信控制LED驱动芯片驱动智能电视四边的LED灯条显示,是影响到图像延伸一致性和环境光显示延迟的重要因素。
1 系统整体设计
1.1 SPI通信
串行外设接口(Serial Peripheral Interface, SPI)的总线系统是一个同步串行外设端口,它能够使微控制单元MCU和各种外围设备之间以串行方式相互通信并交流信息。通常情况下,SPI总线由四根信号线进行主从间的信息通信,依次是SCLK、MOSI、MISO、CS,SPI通信结构图如图1所示。SPI接口的外围设备有传感器、存储器、网络控制器、通信接口、显示模块、A/D转换器、微控制器等[3-6]。
1.2 系统架构设计
在智能电视的液晶显示屏[7-8]四周,设置环境光LED灯条,LED灯条分布在上边区、下边区、左边区和右边区4个区域。依据智能电视环境光配置的需要,可以灵活设计形成单边、双边、三边或四边区域环境光,如图2所示。
将液晶屏幕图像上下左右四边进行图像分区域,每一边区域又划分为子小区块图像,每个子小区块的图像RGB颜色对应输出给一组环境光LED灯条,通过LED驱动芯片控制点亮LED,使得让小区块的图像画面得到延伸效果。
子小区块图像大小:水平X像素×垂直Y像素。对每一个子小分区内的所有像素的RGB值分别进行图像平均算法,得出此区域的平均像素RGB值,通过LED驱动芯片将此RGB数据控制点亮对应该子小分区的环境光LED灯。
LED灯条分布在智能电视上边区、下边区、左边区和右边区4个区域,每个区域由LED驱动芯片1,LED驱动芯片2,……,LED驱动芯片(N-1),LED驱动芯片(N)串联连接对应控制,如图3所示。由主控制器将各个小分区的图像RGB数据,通过SPI通信传送给LED驱动芯片1,LED驱动芯片2,LED驱动芯片N-1,LED驱动芯片N,再由LED驱动芯片控制LED灯条实时显示小分区的图像颜色。
2 硬件设计
2.1 线路设计
本系统硬件设计采用主-从模式(Master-Slave)的控制方式[9],SPI通信的主控制器采用MST9652智能电视Scaler多功能处理芯片,从设备选用TLC5971 LED驱动器,具有12通道16位RGB PWM。如图4所示,SCKI-BUF是时钟线(SCLK)用于同步数据传输,由主设备MST9652产生;SDI-BUF是MOSI(Master Out Slave In)是主设备(MST9652)输出从设备(TLC5971)输入的线路,通常用于发送数据;MISO(Master In Slave Out)是主设备输入(MST9652)从设备(TLC5971)输出的线路,通常用于接收数据。
2.2 LED驱动功能说明
如图5所示,224位移位寄存器用于从SDTI引脚与SCKI时钟同步输入数据到TLC5971。移位寄存器由写命令、功能控制和数据组成。用于锁定功能控制和数据的218位数据锁存器,在收到6位写命令25H(100101B)时,内部产生锁定控制脉冲,将224位移位寄存器中的218个LSB复制到数据锁存器中。
当TLC5971的N个单元串联连接控制设备时,必须从TLC5971第一设备中写入N×224位数据给所有控制设备。当一个数据包中的数据被改变,所有设备的报文都必须重新写入,数据写入步骤:
1)用SDTI和SCKI信号写入224位数据包(首先是MSB位),用于第n个TLC5971。224位数据包的前6位作为写入命令,写入命令必须是25H(100101B);否则,224位元移位寄存器中的218位元数据将不能在218位元数据锁存器中复制。
2)完成步骤1后,马上给第(n-1)TLC5971传送写入224位元数据包。
3)重复数据写入顺序,直到所有TLC5971都有数据。总移位时钟计数(SCKI)现在是224×N。
4)所有装置资料写入后,将所有装置中224位移位寄存器中的218个LSB拷贝到同时启动或更新PWM控制的218位资料锁存器中。
3 软件设计
3.1 环境光控制输出流程
环境光控制输出流程采用嵌入式系统[10]软件开发设计,如图6所示,根据智能电视环境光硬件设计的区域分区匹配灯条,进行软件配置环境光区域分区,配置每个区域子小区块数;采集屏幕分区里每一子小区块RGB图像数据,完成图像数据结构的存储,通过预设的图像处理算法处理后建立产出环境光图像输出数据模型;将环境光图像输出数据组合形成子小区块数据结构输出显示环境光;加载每个子小区块的图像像素RGB数据到系统内存,并将转换为环境光可识别的数据输出到环境光灯条,达到整屏视觉延伸效果。
3.2 INI配置文件结构
由于沿着电视一周环境光设计可以有单边、双边、三边、四边等效果,每一边的图像分区依据电视液晶屏幕的大小的不同、图像小分区的数量而不同,所需要采用的LED驱动芯片也不同。因此,为了灵活兼容及扩展使用,在软件设计采用主体软件解析程序唯一统一性,通过INI配置参数的方式匹配适用不同场景的需要。
TLC5971 LED驱动器,具有12通道16位RGB PWM,每颗LED分别有R、G、B三个PWM控制通道,所以可以驱动4颗或4组并联LED。当液晶屏幕图像小分区大于4个分区,需要增加TLC5971 LED驱动芯片,进行串联连接驱动。
因此,软件设计为了兼容环境光单边、双边、三边、四边设计效果,采用如下设计的INI配置文件结构,用于软件初始化配置调用,例如,AmbiTotalChipNumber用于定义TLC5971驱动芯片使用数量;AmbiLeftNumber,AmbiTopNumber,AmbiRightNumber,AmbiBottom用于定义上下左右四边图像小分区数量,“0”表示该分区没有LED灯条;AmbiChip(xx)定义每颗TLC5971的12通道RGB PWM(OUT3 ,OUT2,OUT1,OUT0),数值是对应映射的图像小分区,“255”表示该RGB PWM通道没有对应映射的图像小分区。以下为软件设计的分区INI配置文件的主要内容:
#AMBI LED驱动TLC5971数量
AmbiTotalChipNumber = 7;
#AMBI分区配置
AmbiLeftNumber = 5;
AmbiTopNumber = 11;
AmbiRightNumber = 5;
AmbiBottomNumber = 0;
##设置每颗LED驱动对应的图像小分区 ##
##OUT3, OUT2, OUT1, OUT0 ( 255表示没有使用)##
AmbiChip01 = 255, 2, 1, 0;
AmbiChip02 = 255, 255, 4, 3;
AmbiChip03 = 8, 7, 6, 5;
AmbiChip04 = 255, 11, 10, 9;
AmbiChip05 = 15, 14, 13, 12;
AmbiChip06 = 255, 255, 17, 16;
AmbiChip07 = 255, 20, 19, 18;
3.3 图像小分区处理函数
GSfizRHJqA0HPd/++/RDL/jN16u+iDSj6UsxM2yrKfU=通过vScreenDetectGetRGB()函数,获取图像小分区RGB数据,通过LED驱动芯片将此RGB数据控制点亮对应该子小分区的环境光LED灯。以下为vScreenDetectGetRGB()函数结构的简要说明。
Unsigned int HiAmbilight::vScreenDetectGetRGB
(HI_U32 u32Value_RGB[][3],HI_U32
wAmbiLeftNum,HI_U32 wAmbiTopNum, HI_U32
wAmbiRightNum, HI_U32 wAmbiBottomNum)
{
//定义相关变量
//1.初始化变量u32ScreenLeft,u32ScreenTop,
// u32ScreenRight,u32ScreenBottom;
......
//2.定义设置每个图像小分区起始和结束坐标,用于
//采集图像小分区RGB数据
u32Temp1 = wAmbiLeftNum + wAmbiTopNum + wAmbiRightNum;
u32Temp2 = wAmbiLeftNum + wAmbiTopNum + wAmbiRightNum + wAmbiBottomNum;
//定义左边区的每个图像小分区起始和结束坐标
for(i = 0; i < wAmbiLeftNum; i++)
{
mX_Start[i] = 0;
mY_Start[i] = u32ScreenLeft*i;
mX_End[i] = 360;
mY_End[i] = u32ScreenLeft*(i+1)-2;
}
//定义上边区的每个图像小分区起始和结束坐标
for(j = wAmbiLeftNum; j < wAmbiLeftNum + wAmbiTopNum; j++)
{
……
}
//定义右边区的每个图像小分区起始和结束坐标
for(k = wAmbiLeftNum + wAmbiTopNum; k < u32Temp1; k++)
{
……
}
//定义下边区的每个图像小分区起始和结束坐标
for(m = u32Temp1; m < u32Temp2; m++)
{
……
}
//3.采集图像小分区RGB数据
u32Temp3 = u32Temp2/8;
for(i = 0; i < u32Temp3 + 1; i++)
{
if(8 + i*8 <= u32Temp2)
u32Temp4 = 8 + i*8;
else
u32Temp4 = u32Temp2;
//3.1 设置需要采集的图像小分区
for(j = 0 + 8*i; j < u32Temp4; j++)
{
m = j%8;
stRegionAttr1[m].bEnable = HI_TRUE;
stRegionAttr1[m].stRegionRect.s32X = mX_Start[j];
stRegionAttr1[m].stRegionRect.s32Y = mY_Start[j];
stRegionAttr1[m].stRegionRect.s32Width=mX_End[j]-mX_Start[j];
stRegionAttr1[m].stRegionRect.s32Height=mY_End[j]-mY_Start[j];
ret = HI_UNF_DISP_SetRegionAttr(HI_UNF_DISPLAY1,m, &stRegionAttr1[m]);
}
usleep(delay_RGB);
//3.2 通过图像算法,回传该小分区一组RGB数据
for(k = 0 + 8*i; k < u32Temp4; k++)
{
m = k%8;
ret = HI_UNF_DISP_GetRegionAvgRgb(HI_UNF_DISPLAY1,m, &stRegionAvgRgb1);
ui4ScreenRGBValue[k][0] = stRegionAvgRgb1.u32R;
ui4ScreenRGBValue[k][1] = stRegionAvgRgb1.u32G;
ui4ScreenRGBValue[k][2] = stRegionAvgRgb1.u32B;
}
usleep(delay_RGB);
......
}
return ret;
}
4 应用效果
在实际应用中,在智能电视的周围三边设置环境光,将LED灯条部署在左边区、上边区和右边区3个区域。使智能电视显示屏的图像颜色延伸显示至电视背景墙,让图像更充分地扩展,产生更沉浸式体验的视觉体验,如图7所示。
5 结 论
本文分析了智能电视机环境光显示的特点,提出了解决液晶屏幕图像通过LED灯条延伸实时同步显示画面颜色的问题。利用软件算法实现了对液晶屏幕图像的自动分割分区,运用深度融合图像算法,产出控制环境光输出的图像子小区块RGB数据。采用基于SPI通信环境光控制技术方案,设计LED驱动芯片TLC5971串联连接,控制对应分区的LED灯条显示,具有硬件电路设计简易、方便数据控制的特点。由主控制器通过SPI通信将分区的图像RGB数据传送给TLC5971控制LED灯条显示,解决实时画面扩展延伸显示画面颜色的问题。此技术方案已经应用到实际工程项目中,取得了良好的效果,也为环境光设计提供了一个解决方案。
参考文献:
[1] 刘沅玲,王金莉.基于频率跟踪的LED数控恒流驱动电源设计 [J].电子器件,2023,46(5):1406-1412.
[2] 邵晓琦,徐海燕,侯一兴,等.基于多通道增强融合的自适应液晶屏图像分割 [J].电子测量与仪器学报,2020,34(12):76-84.
[3] 盛杨博严.基于SPI总线的Arduino显示与控制模块设计 [J].单片机与嵌入式系统应用,2020,20(3):74-76+80.
[4] 蒋国庆,顾军.基于FPGA的LPC总线转多路SPI总线设计 [J].电子质量,2022(10):39-45.
[5] 王少娅.基于FPGA的SPI IP核设计实现 [D].秦皇岛:燕山大学,2023.
[6] 杨梓鹤,彭秋雨,李湛艺,等.SPI接口仿真设计与实现 [J].科技与创新,2022(19):121-123+126.
[7] 任克强,王传强.基于STM32F4的多通道串口驱动TFT液晶屏显示系统设计 [J].液晶与显示,2020,35(5):449-455.
[8] 杨超普,方文卿,刘明宝,等.LED背光液晶屏的低色温调节及光谱分析 [J].发光学报,2019,40(12):1531-1537.
[9] 姜育生,梁妮,贺国旗.基于MDM9607平台的SPI接口驱动解析及应用 [J].现代信息科技,2023,7(2):149-152.
[10] 张萌,陈水忠,徐恺,等.基于TEE的机载嵌入式数据安全技术研究 [J].电光与控制,2024,31(1):87-91.
DOI:10.19850/j.cnki.2096-4706.2024.17.006
作者简介:叶林俊(1974—),男,汉族,福建平和人,高级工程师,硕士,研究方向:嵌入式软件系统、Android电视系统。
收稿日期:2024-02-21
Ambient Light Control Technology Based on SPI Bus
YE Linjun
(TPV Display Technology (Xiamen) Co., Ltd., Xiamen 361101, China)
Abstract: In order to solve the problems of extending the display effect of the LCD image through the LED light bar and synchronizing the display of screen color of LED light bar in real time, an ambient light control technology scheme based on SPI bus is proposed. The software algorithm is used to automatically partition the LCD image, analyze the image data of the sub-block of the partition image, and a deep fusion image algorithm is used to produce RGB data that controls ambient light. The LED driver chip TLC5971 is cascading connection for controlling the LED bar display of the corresponding partition. The main controller transmits the RGB data of the partitioned image to TLC5971 through SPI bus to control the LED light bar to display the screen color in real time, so as to achieve the LCD screen extension.
Keywords: SPI bus; LED; ambient light; image; embedded system; LCD