基于ZigBee和H.264的无线视频传输系统的设计
引言
ZigBee是以IEEE 802.15.4标准[1]为基础的一种低成本、低功耗、网络容量大、通信范围广的无线网络技术[2],可支持多达65 000个节点。ZigBee的工作频段有3个,分别是868 MHz、915 MHz、2.4 GHz,当工作于2.4 GHz时,其拥有最高的传输速率250 KB/s。在存储量尽可能小的情况下获得好的图像质量和低带宽图像快速传输已成为视频压缩的两大难题。为此ISO/IEC和ITUT两大国际标准化组织联手制定了新一代视频压缩标准H.264[3]。H264具有图像质量好、连续性强、动态图像质量高、压缩比高、码流速率可调等优点。本文从硬件和软件两个方面讨论使用带H.264硬件编解码器、ARM9 CPU核的i.MX27和带ZigBee协议栈的微处理器CC2430来共同组建无线视频传输系统。
1.系统总体设计
系统总体设计如图1所示,整个ZigBee网络由一个ZigBee协调器、多个 ZigBee路由器和ZigBee无线视频终端组成[4]。由于CC2430集成了2.4 GHz DSSS射频收发器和单片机控制器,因此ZigBee设备可以使用CC2430单芯片来实现。ZigBee协调器用于组建最初的ZigBee网络,并为加入网络的每个ZigBee路由器和ZigBee无线视频终端分配16位网络短地址。ZigBee路由器在ZigBee网络中扮演路由和中继的角色,为各ZigBee无线视频终端传输数据并扩大无线数据传输的范围。ZigBee无线视频终端根据分配得到的16位网络短地址可以相互之间进行双向无线数据通信[5]。i.MX27上采用Linux操作系统,在Linux下通过对采集的图像进行硬件压缩编码,各ZigBee无线视频终端之间的数据以H.264码流的形式进行无线传输。
2.ZigBee无线视频终端的硬件设计
考虑到H.264软件编解码需要消耗大量的CPU资源,故本方案中选择了具有H.264硬件编解码器及ARM9 CPU核的Freescale微处理器i.MX27。ARM9 CPU核一方面负责将摄像头采集到的YUV图像数据送入H.264硬件编码器,并将硬件编码器输出的H.264码流通过ZigBee微处理器CC2430无线发送出去。另一方面通过CC2430接收H.264码流并送入H.264硬件解码器,然后将硬件解码器输出的YUV图像数据显示到液晶屏上。ZigBee微处理器CC2430负责H.264码流的收发工作,并通过SPI接口与i.MX27进行通信。 ZigBee无线视频终端的硬件组成如图2所示。
为了实现图像的采集,本方案采用含有OV9650芯片的CMOS摄像头,采集到的图像通过i.MX27的CSI接口传输到H.264硬件编码器中。对于图像的显示,则选择群创AT070TN83V.1(16∶9,800×480)7英寸TFT液晶屏。该屏支持18位数字RGB接口,格式为RGB666,即每个像素由6 bit红、6 bit绿、6 bit蓝构成18 bit数据。该屏与i.MX27的LCDC控制器主要通过18根数据线(LD[17:0])、帧同步(VSYNC)、行同步(HSYSNC)、时钟(LSCLK)进行连接。采用一片三星的K9F2G08R0A NAND Flash芯片(256 M×8 bit)来储存系统的Bootloader(RedBoot),Linux内核,文件系统和视频程序。由两片Infineon Technologies的HYB18M512160AF7.5芯片(4 Bank×8 M×16 bit)构成128 MB的DDR,主要用于加载Linux操作系统和运行视频编解码程序。
设计一个10针的JTAG接口,用来烧写系统的Bootloader、Linux内核和文件系统。使用MAX3232构成UART接口,用来将调试信息返回到MiniCom上显示。因处理器内核需要1.8 V、1.5 V电压,而存储器和外部I/O需要3.3 V电压,故把整个系统的输入电压设为5 V,经过DCDC转换器可完成到3.3 V、1.8 V、1.5 V的电压转换。采用26 MHz的有源晶振,晶振经过i.MX27片内的PLL电路倍频后最高可达到400 MHz。
ZigBee通信模块以CHIPCON公司的CC2430微处理器为核心。将CC2430的SPI接口与i.MX27的SPI接口连接,H.264码流通过SPI接口进行传输。
3.ZigBee无线视频终端的软件设计
3.1图像采集
CSI(CMOS Sensor Interface)是i.MX27中的CMOS图像传感器接口。图像的采集可通过CSI接口、图像传感器芯片OV9650和Linux下视频设备的内核驱动V4L2来实现,所以需要加载CSI驱动mx27_csi.ko、ov9650驱动ov9650_cam.ko和V4L2驱动mx27_v4l2_capture.ko。这样应用程序在打开V4L2后,就可以进行图像数据采集了。
3.2图像显示
LCDC(Liquid Crystal Display Controller)是i.MX27中的液晶显示控制器。可通过LCDC接口来控制图像的显示,故需要加载LCDC驱动mxcfb_modedb.ko和mxcfb.ko及帧缓冲驱动。使用帧缓冲设备时,可将显示缓冲区直接映射到Linux用户空间。这样在Linux用户空间,应用程序可按照预先设置好的R、G、B位数和偏移量,将图像数据直接写到经过mm
- 基于Zigbee技术家用无线网络的构架(12-14)
- 基于精简协议栈的ZigBee网络节点研究(07-17)
- ZigBee无线传感器网络的研究与实验(02-08)
- 解析ZigBee堆栈架构(03-26)
- 组建SMAC协议构架的ZigBee星形网络(06-11)
- ZigBee基本技术问答(12-07)