基于FreeRTOS的嵌入式视频矩阵系统设计与实现

2023-03-15 08:47李佳翔范文兵张真真
计算机应用与软件 2023年2期
关键词:下位字节上位

李佳翔 范文兵 张真真

(郑州大学信息工程学院 河南 郑州 450001)

0 引 言

随着电子技术的发展,显示屏的分辨率越来越高,高分辨显示屏越来越普及。同时,人民生活水平的提高使得高清视频普及,同时对高清视频切换的需求量就增大,视频切换速度要求提高。

国外视频矩阵技术发展较早,现在已有4K超高清的视频矩阵,如Kramer公司的VP- 427UHD,已经可以实现量产,另外8K视频矩阵已经在研发阶段。国内视频矩阵起步较晚,但由于需求量大而发展迅速。国内研究视频矩阵的公司,如北京翌特视讯科技有限公司,也研发出了4K视频矩阵HD8168SE,可以实现4K超高清视频切换。但是,目前市面上存在的视频矩阵鱼龙混杂,且价格普遍比较昂贵[1]。同时,当今社会还是1 920×1 080分辨率的HDMI视频普及率最高。综合以上因素,开发一种经济实用的HDMI(High Definition Multimedia Interface,高清晰度多媒体接口)矩阵是非常有必要的。HDMI矩阵[2]完成的功能是接收端接收信号源信号,经过芯片的通道选择,从发送端将信号送给显示设备[3]。本系统采用的切换芯片为国产芯片,故生产成本相对较低,同时又能满足需求。

1 视频矩阵系统总体设计方案

视频矩阵系统分为上位机和下位机两部分。下位机部分主要由电源模块、STM32控制模块、切换模块、存储模块以及HDMI接口模块构成,上位机部分主要实现对下位机的控制。电源模块为整个系统供电,上位机为一个客户端软件,通过点击界面操作向下位机发送命令,STM32接收上位机命令,然后向切换模块发送对应的数据,切换模块根据命令内容做出相应操作。系统设计框图如图1所示。

图1 视频矩阵系统总体模块图

2 视频矩阵系统硬件模块设计与实现

2.1 HDMI接口模块

HDMI接口[4]有5种类型,其中Type A类型使用最为广泛,本系统采用的是Type A类型,目的是让大多数设备直接使用。

2.1.1HDMI传输原理

HDMI是目前应用广泛的音视频传输协议[5-6],传输基于TMDS(Transition Minimized Differential Signal,最小化传输差分信号)协议。TMDS具有抗干扰性强等优点。19针HDMI Type A的各引脚含义如表1所示。

表1 HDMI Type A引脚含义表

续表1

HDMI工作原理如图2所示,HDMI包含了四路TMDS差分信号对,其中,前三路TMDS信号传输的是视频像素数据,第四路TMDS传输的是像素时钟信号,一个时钟信号分别在三个TMDS数据通道传输一个像素的R、G、B(8 bit)信号。19引脚为HPD,用于监测有没有HDMI设备存在。如果HPD引脚为高电平则代表有设备接入,为低则代表没有设备接入。

图2 HDMI工作原理图

2.1.2HDMI接口电路设计

HDMI接口电路分为接收端和发送端两部分。接收端从信号源接收信号,经过切换芯片转换,从发送端发送给显示设备。

接收端需要模拟显示器,将信号源的信号“骗取”过来,传送给切换芯片。这就用到了EDID技术,在接收端放置一个EDID存储芯片,模仿显示器与信号源之间的IIC通信。芯片采用AT24C02,最多可以存储256个字节的数据,EDID最多为256个字节,保证够用。

另外,为了防止静电,以防瞬间电压过高击穿电路板,在HDMI端口处增加了ESD(Electro-Static discharge)器件。将每一路TMDS信号的正负极分别接在ULC0524P引脚上,一个ESD器件可以接两路TMDS,一路HDMI有4路TMDS,故每个端口处都有两个ULC0524P,能有效防止静电击穿芯片管脚[7]。接收端HDMI电路图如图3所示。

图3 接收端HDMI电路设计图

发送端HDMI电路连接如图4所示,信号送到显示屏完成显示功能。虽然发送端不需要存储EDID,但是发送端需要读取显示器的EDID,才能把EDID存入接收端的EEPROM中。所以输入端的DDC通道与芯片相连。这样输入信号源才能根据EDID信息发送显示器支持的最佳分辨率信号。另外发送端每个端口也接了两个ESD器件防止静电击穿芯片管脚。

图4 发送端HDMI电路设计图

2.2 STM32控制模块

矩阵系统的MCU控制着整个系统逻辑[8],读入按键输入,控制LCD1602显示屏输出,控制芯片切换TMDS信号,控制着显示屏EDID的读取与EEPROM中EDID的写入。控制RS232与NET通信与上位机通信。上位机通过NET网口向下位机发送数据,由于网口跟STM32电平不匹配,故需要经过网口转串口模块将网口电平转换为TTL电平发送给STM32。框图如图5所示。

图5 主控芯片连接框图

2.3 切换模块

切换模块主要是由两个LT8644芯片完成。LT8644是一种16×16的数字交叉开关,具有16个TMDS输入通道和16个TMDS输出通道。

HDMI信号分辨率为1 920×1 080,每秒传输60帧。一个时钟周期内,一个TMDS通道传输8位像素信息和两个控制信息共10位信息。假设每个像素使用48位色深,即3个16 bit,两个时钟内传输一遍RGB。加上控制信息以后,每个像素包含RGB总和为20×3=60 bit信息。每帧图像的像素为1 920×1 080=2 073 600,HDMI要求预留20%空白像素,所以一帧的真实像素为2 073 600×(1+20%)=2 488 320。最大速率每秒60帧,所以每秒需要传输60×2 488 320×60=8 957 952 000位信息,即总速率约为8.958 Gbit,HDMI有三个TMDS通道传数据,所以每个通道速率至少为2.986 Gbit/s。而LT8644给定的通道速率至高可以达到3.4 Gbit/s,完全够用。

LT8644芯片通过UPDATE和RESET引脚与STM32连接,完成芯片的复位功能和更新寄存器功能。通过IIC总线与STM32通信,作为STM32的从机,通过SCL时钟线和SDA数据线通信,从STM32接收数据并写入切换芯片寄存器,寄存器的值改变了以后,执行UPDATE操作,芯片就会完成切换动作,如图6所示。STM32也可以从切换芯片寄存器读取数据来查看芯片状态。

图6 切换模块框图

2.4 电源模块

电源模块使用的是TPS54302芯片,可利用不同的反馈电阻得到不同的电压输出。视频矩阵的输入电压为5 V直流电,LT8644芯片工作电压需要3.3 V和1.8 V,STM32工作所需电压为3.3 V。转换电路如图7所示。TPS54302将5 V直流转换为3.3 V直流,转换为1.8 V的电路图与之类似,不过是将R502的22.1 kΩ换成49.9 kΩ。

图7 电源模块电路图

STM32的3.3 V工作电压通过LT8644的3.3 V经过磁珠隔离后得到,20 MHz带宽纹波不大于30 mV。电路图如图8所示。

图8 主控芯片供电图

PCB示意图如图9所示。

图9 硬件电路PCB示意图

3 系统软件设计与实现

3.1 下位机软件设计与实现

3.1.1 下位机软件总流程

视频矩阵下位机软件使用FreeRTOS系统,采用了时间片轮转的方式来满足系统实时性。设置两个任务优先级相同,然后打开系统时间片轮转方式。同时为了增加实时性,每个任务后面都增加了一段时延,使得刚执行完一个任务后释放CPU控制权,让另一个任务执行。因为切换任务都是人为操作的,所以毫秒级的切换完全是可以满足实时性要求的。

系统上电后,首先需要设置时钟、串口,以及各个芯片的初始化状态并进行初始化。然后将系统也初始化。待初始化完毕,在系统中创建两个任务并进入任务调度函数。一个任务用来从串口接收数据并且分析数据的有效性,若无效则丢弃,有效则存为命令结构。另一个任务用来解析命令,执行所需要的操作。系统就在这两个任务中来回切换[9],实现对视频矩阵的控制。系统总体流程如图10所示。

图10 系统软件总流程

3.1.2 通信协议的设计

通信协议的设计是完成上位机与下位机交互的重要步骤。通信协议数据包的前三个字节为协议头“XG”,协议头是数据的开始,同时起着分隔命令的作用,只有在收到协议头时才可能认定为有效数据。接下来的一个字节数据为长度,代表内容的长度,内容的长度1~250个字节。假设长度字节数据的值为N,那么再接下来的N个字节数据即为数据内容,数据内容中的第一个字节代表控制命令号,其余的内容为自定义内容。接下来为最后两个字节,为数据校验和,采用小端序,校验和应该等于长度和内容按字节相加所得出的和,如果溢出两个字节就舍弃高位。协议数据包格式如表2所示。

表2 协议数据包格式表 单位:B

当串口接收到的数据符合以上协议时,一个线程将收到的数据进行处理,去掉数据头和数据尾,将有用的内容存储到一个共用的结构体中,以便于另一个线程直接从结构体中读出数据执行相应的操作。

3.1.3 存储功能实现

存储功能是为了存储视频矩阵的状态,以便于在断电重启之后可以恢复以前的状态。系统利用片内FLASH,将LT8644芯片中的寄存器状态读出,并且存储在FLASH中。由于FLASH有写入寿命,如果每次切换都直接存储,芯片使用寿命短,所以采用等待一段时间的方式去存储。若一段时间内状态未改变,STM32读取LT8644状态写入FLASH以便于下次上电以后恢复。FLASH是永久存储器,故不论断电多久,下次打开矩阵,都可以恢复到上一次打开的状态。

3.2 上位机软件设计与实现

上位机部分用Delphi[10]做了一个客户端软件,软件有两个界面:主页、功能页。主页中有切换类型,输入通道,输出通道和TCP/IP连接。主页面如图11所示,首先,上位机要跟下位机输入相同的IP号和端口号建立TCP连接。接下来选择输入通道,输入通道设置为单选,一次只能选择一个输入,但是可以同时选择多个输出,然后点击切换按钮,就可以完成一切多的操作。主页还有一个开启或关闭指定输出通道的功能,先选定输出,然后点击关闭输出通道按钮,就可以实现输出通道的关闭。再点击开启输出通道,输出通道开启。

图11 上位机主页图

第二个页面是功能页面,已完成的功能是读取某一路输出端口所接显示设备的EDID,然后通过IIC总线写入输入接口的EEPROM中。功能页如图12所示,输出只可以选一个,输入可以多选,之后点读取按钮之后上位机就生成相应的命令给下位机,下位机解析数据完成此操作。

图12 上位机功能页图

4 系统测试

本系统可以实现RS232串口控制切换,上位机软件通过网口控制切换。测试环境如下:所接输入1为笔记本电脑输入,输入2为台式机输入,一个HDMI显示屏接输出1。

4.1 串口测试结果

串口测试使用串口调试助手给下位机发送数据,串口设置波特率115 200,数据位8位,无校验,停止位1位,无硬件流控。上电以后系统初始化完毕,系统在多任务中切换。电路板运行状态如图13所示。

图13 视频矩阵电路板图

串口打印数据表示显示系统正在运行,发送数据以后,显示队列有一条命令待处理,然后IO Task运行解析数据,如图14所示。

图14 串口测试发送数据图

数据解析完成后,STM32控制切换芯片更新寄存器,切换芯片完成切换。切换前画面如图15所示,屏幕选择的输入端口为输入2。切换后的屏幕显示画面从输入2变为输入1,如图16所示。

图15 串口测试切换前显示器显示图

图16 串口测试切换完成后效果图

通过以上多次测试得出结论,视频矩阵可以准确快速地完成切换,还可以完成关闭开启输出通道,读取显示器EDID功能。视频矩阵在多数场合之下对实时性要求不需要达到硬实时。本系统测试多次,从图17可以看出,数据解析任务时间最坏情况在140-121=19 ms之内完成。图18可以计算得出,命令执行任务(1 167-824)/(2 884-2 829)=6.2 ms。均可以满足任务切换实时性。

图17 数据解析任务占用时间图

图18 命令执行任务占用时间图

4.2 网口测试结果

上位机输入IP与串口助手连接,选择相同的端口号,点击连接,左下角显示已连接,然后选择输入输出通道,点击切换,串口助手就收到一串数据,经分析确定正确。多次测试均无误。故上位机软件通过网口测试正确。图19为上位机通过网口发送数据用网口助手接收到正确数据,是在视频矩阵输出端口连接的显示器上截取的。

图19 上位机通过TCP发送数据测试图

5 结 语

该视频矩阵实现了视频快速切换的目标,可以完成视频切换、视频通道开启关闭、显示器EDID读写功能,并且在调好以后,即使断电,下次开机时也能还原上一次的输入输出对应状态。传统矩阵一般使用按键控制,并且价格高昂,可以完成的功能少。本矩阵价格便宜,性能不俗,能完成的功能多,不但能通过RS232串口控制,还可以通过TCP/IP控制。上位机软件界面友好,人性化设计及布局,操作简便易上手,通过网络控制,使控制方式多样化。

猜你喜欢
下位字节上位
No.8 字节跳动将推出独立出口电商APP
No.10 “字节跳动手机”要来了?
发射机房监控系统之下位机
特斯拉 风云之老阿姨上位
简谈MC7字节码
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
以新思路促推现代农业上位