对USB接口进行固件设计提升视频传输质量方案
扫描二维码
随时随地手机看文章
在如今这个依靠数据传输的时代,图像的传输算得上的领域中的发展难点,由于视频传输的信息量较大,并且在传输过程中经常会遇到线路抖动、图像失真等问题,因此图像总线的接口质量非常重要。本文将为大家介绍一种基于USB接口的同步视频输出的系统设计方案固件设计部分。
固件设计
固件是指固化在USB控制器中MCU的程序,它的主要功能是负责接收与处理主机发给设备的各种请求,并向主机返回设备的状态信息。FX2系列的固件代码可以存储到主机中,设备上电复位以后通过USB电缆手动下载到FX2,这种方法易于升级,在系统的开发过程中很方便;固件代码可以固化到片外存储器EEPROM或者是ROM,设备上电以后,自动下载固件到片内RAM,这两种方法可以将系统固件做成产品,无须每次手动下载。
本系统中固件分两个部分,一个是数据通道的控制,一个是主机控制命令的应答。数据通道的控制主要是GPIF控制数据传输管道完成。而控制管道EP0则负责主机和USB设备端的去掉数据部分的通信:更改管道和端点配置信息,设置软件中断,更改GPIF视频图像传输的大小,获取重要寄存器的状态等等。
图1
固件的程序框图如图1。其中设备请求部分即为控制管道信息,是由单片机负责,而数据通道主要是通过GPIF操作,隔离了单片机的参与,提高数据传输速度。
固件代码编写使用Keil uVision,GPIF编程应用CYPRESS公司的GPIF工具(GPIFTOOL)。GPIF可以控制FX2端点FIFO,也可以产生六个控制输出端(CTL0~CTL5)和九根地址线输出,并且可以接收六个外部输入信号,并对这些信号进行逻辑编程控制,从而控制FX2与外部接口的读写时序。实际操作可以利用GPIFTOOL绘制波形描述符,转为C文件,配置各个相关的寄存器,控制SRAM接口读写逻辑。
SRAM硬件接口的时序图如下:
图2
依据上面的波形图,只需要在S1结束的时候跳转S0状态即可。将绘制的波形图应用GPIF TOOL转换为gpif.c文件,加入Project中,连接编译即可得到固件。
在固件编程中电源管理部分,由于FX2在首次枚举电流大约是75mA,FX2设备的识别则至少需要100mA,小于500mA,因此在固件中要加进电源检测,如果小于100mA,必须向主机申请更大的电流,直到主机正确识别FX2。
以上就是基于USB接口的同步视频输出系统设计方案固件部分。对USB口进行适当的改造能够最大程度的使传输的图像保持清晰,对于USB口感兴趣的朋友可以收藏本文进行仔细研究。