基于ARM-Linux的自主避障机器鱼设计
进行通信。在ARM芯片中,摄像头的接口控制模块(CAMIF)由图像采集模块、视频预览尺度模块、模式混合模块、特殊功能寄存器(SFR)模块、码流尺度模块、视频预览DMA模块以及码流DMA模块构成。COMS摄像头OV9650输出的ITU-656格式视频码流,经CAMIF处理后,将采集到的视频码流成两路不同的格式进行传输,两路格式不同的信号分别进入不同的帧存储单元进行存贮,之后根据ARM控制器的指令通过视频DMA通道进行传输。摄像头原理如图3所示。
1.5 LCD模块
LCD液品显示器是(Liquid Crystal Display)的简称,LCD的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。LCD有扭转式向列型(Super Twisted Nematic,简称STN)和薄膜式晶体管型(Thin Film Transistor,简称TFT)两种主流类型。因为TFT有反应速度快、可视角度大、色彩丰富、分辨率高、对比度、亮度高等优点,所以我们选择TFT的LCD。LCD硬件原理、LCD控制器功能如图4所示。
LCD的工作受其控制器控制完成,图5为LCD控制器功能图。通过LCD控制器的寄存器组REGBANK来对LCD控制器的各项参数进行设置。而LCDCDMA则是LCD控制器专用的DMA通道,负责将视频数据从显存(显存是SDRAM中的一块区域,可利用REGBANK编程设定)中取出,并从VIDPRCS从VD[23:0]发送给LCD屏。同时LPC3600和TIMECEN负责产生LCD屏所需的控制时,然后从VIDEOMUX送给LCD屏。TIMEGEN包含可编程逻辑,可通过程序进行设定。TIMEGEN能产生不同LCD屏驱动电路所需要的时序信号。
LCD部分接口介绍。VFRAME/VSYNC/STV接口:传送LCD控制器和LCD驱动器之间的帧同步信号。
VLINE/HSYNC/CPV接口:传送LCD控制器和LCD驱动器之间的同步脉冲信号。
VCLK/LCD_HCLK接口:传送LCD控制器和LCD驱动器之间的像素时钟信号。
VM/VDEN/TP接口:传送LCD驱动器使用的交流信号。
VD [23:0]接口:LCD的像素数据输出端即RGB信号线。
2 系统软件设计
2.1 主程序流程
ARM芯片通过AD管脚对红外传感器的发射模块传送命令。发射模块发射红外线,接收模块接收遇到障碍物反射回来的红外线,根据返回光强产生相应的模拟电压,经过A/D转换器后变成十位的二进制数据量,通过一定算法计算出到障碍物的距离。ARM芯片判断计算出的距离与预设值的逻辑关系,根据结果判断是否进行避障。摄像头采集图片后,将图片缓存于SDRAM中,LCD读取数据并将图像显示出来。主程序流程如图6所示。
2.2 红外模块
在ARM的A/D进行转换时,首先要对ADC控制寄存器进行初始化,选择进行转换的模拟输入端,进行A/D转换,并从ADCDAT0读取转换结果。探测的结果小于预设值时ARM芯片执行中断,改变PWM波的占空比使机器鱼转向进行避障,反之继续前进。红外模块流程如图7所示。
2.3 摄像头模块
摄像头属于字符类设备,所以能够像字节流一样被程序访问,而且只能够按顺序读写。Linux内核程序通过设备的位号来寻找摄像头。Linux内核发送测试信号到地址0X9650,以检测摄像头是否存在。OV9650拥有多组寄存器,图像的输出编码方式和分辨率等参数取决于OV9650的寄存器。IIC (Inter Integration Circuit)是指内部整合电路,是常用的标准串行接口。系统是通过IIC总线对寄存器进行整体配置,所以此过程不会占用系统数据总线。考虑到图像传输的效率,所以摄像头与ARM芯片之间的Data[0]~Data[7]的通道仅用以传输图像数据。以下为摄像头的部分初始化代码。
SrcWidth=640-WinHorOffset*2;//CAM_SRC_HSIZE为640,CAM_SRC_VSIZE为480
SrcHeight=480-WinVerOffset*2;//计算得SrcWidth=440,SrcHeight=280
rCIWDOFST=0;//窗口垂直偏移为0
rCIWDOFST=(WinOfsEn<<31) " (WinHorOffset<<16) | (WinVerOffset);//水平偏移为100,垂直偏移为100
rCISRCFMT=(1<<31) | (0<<30) | (0<<29) |(640<<16) | (0<<14) | (480);//30位设置为1后,图像颜色失真,偏彩色
Calculate Prescaler RatioShift (SreWidth,PrDstWidth,&PreHorRatio,&H_Shin);//计算并设置突发长度
Calculate Prescaler RatioShift (SrcHeight,PrDstHeight,&PreVerRatio,&V_Shift);//计算水平和垂直缩放比率和位移量、水平和垂直比率
摄像头模块流程如图8所示。
3 结束语
本文介绍了红外探测器在机器鱼上的应用以及画面的实时显示。通过红外传感器使机器鱼具有了自主避障的功能。实验表明基于ARM芯片和LINUX嵌入式系统平台开发的自主避障功能的机器鱼具有较高的实时避障功能,表明该机器鱼具有灵敏度较高的自主避障功能。此设计提高了机器鱼智能度,可作为后续自主视觉机器鱼开发的基础。相信随着高智能的机器鱼的研究与设计会给人类探索、开发海洋提供更多的帮助与便利。
- SoC前段(ARM)嵌入式系统开发实作训练(上) (02-28)
- 基于嵌入式Linux的智能手机系统设计(05-10)
- 基于ARM+uCLinux的网络控制系统设计与实现(05-03)
- 基于Linux和S3C2410的嵌入式图象传输系统设计(05-24)
- 北大首倡“中国芯”出成果 未来充满变数(06-09)
- 嵌入式系统中闪存设备IO软件的设计与实现(07-08)