1、长春工业大学人文信息学院毕业设计(论文) 信息工程系 基于ARM_Cortex-M处理器图像无线传输的应用摘 要本论文主要阐述设计一款以ARM Cortex-M系列微处理器为核心的图像无线传输系统的设计方法和实现细节。论文主要针对未来对于智能家居以及安防设备的日益需求,采用迄今最为流行性能卓越的ARM Cortex-M系列嵌入式微处理器作为嵌入式智能设备的处理核心,并搭载使用Micrium公司的嵌入式实时操作系统uC/OSII。本论文开篇通过对智能家居和安防设备的需求分析及图像无线传输的发展现状,说明了现今以及未来人们希望图像监控能够无线获取,灵活操作和存取。接下来系统硬件设计,将介绍了图像无
2、线传输系统的硬件组成及基本理论。然后进行系统软件设计,讲介绍了图像无线传输系统各硬件的驱动程序设计。最后实现实时操作系统应用,介绍了uC/OSII在图像无线传输系统的使用。展示了系统完成后运行效果,并指出该系统的不足及以后改进的方向。该智能设备实现了图形界面触摸操控、驱动摄像头图像的采集、对图像的无线传输、接收和存储等功能,并测试表明该设备达到了预期的稳定要求。关键字 ARM Cortex-M uC/OSII 无线图像传输AbstractThis thesis describes the design of a core ARM Cortex-M series microprocessor s
3、mart home system design methods and implementation details. Focused on the future is the increasing demand for smart home and security equipment, by far the most popular high performance ARM Cortex-M family of embedded microprocessor as a processing core for embedded intelligent devices, and equippe
4、d with Micriums embedded real-time operating system uC/OS-II. The first part of the system analysis, the demand for smart home and security equipment and the development status of the wireless transmission of the image, indicating the present and future image monitoring to wireless access, flexible
5、operation and access.The second part of the system hardware design, wireless image transmission system hardware components.The third part of the system software design, wireless image transmission system hardware driver design.The fourth part of the real-time operating system design of real-time ope
6、rating system uC/OS-II transplantation in the ARM cortex-M series processors.The smart devices to achieve the graphical interface touch control, driver camera image acquisition, wireless image transmission, receiving and storage, and tests show that the equipment to achieve the desired stability req
7、uirements.AlphaKey words ARM Cortex-M uC/OSII wireless image transmissionI目 录第1章 绪 论11.1 课题背景11.2 图像无线传输发展现状2第2章 系统硬件设计32.1 系统框图32.2 系统硬件实现3第3章 系统软件设计143.1 无线模块驱动程序设计143.2 摄像头驱动程序设计173.3 LCD显示驱动程序设计193.4 文件系统21第4章 实时操作系统应用234.1 uC/OSII实时操作系统介绍234.2 在uC/OSII运行程序24第5章 系统实现315.1 图像无线传输系统最终运行结果315.2 图像无
8、线传输系统不足以及改进33结 束 语34参 考 文 献35附录1 各模块驱动程序一览36附录2 电路原理图39第1章 绪 论本章通过对智能家居和安防设备的需求分析及图像无线传输的发展现状,说明了现今以及未来人们希望图像监控能够无线获取,灵活操作和存取。1.1 课题背景如今摄像头监控、图像显示、无线数据传送和无线控制已经广泛地应用在人类生活及生产各个领域当中。如家电、汽车、交通安全、工业生产、电子电力等。在半导体集成电路芯片和数字技术没有广泛运用的过去,人类只能依赖超声波、红外传感、电磁等手段进行监控。对距离稍微远的场景使用来说,开发起来很麻烦,费工费,使用起来也不是很方便。目前,国际先进的实时
9、监控系统都实现了图像采集,并且有部分设备实现无线收发并显示的功能。以前在安防监控系统当中需要密密麻麻的装上一大堆传感器,如今已被一个拇指般大小的、毫不起眼的数字摄像头所替代了。OV系列的数字摄像头已经根据不同应用领域的不同需求推出了多款产品,性能良好、价格低廉。使得我们对图像传感器有了足够的选择。本课题研究的是图像采集系统中的无线传输和显示。在翻阅了大量资料后,决定以CMOS摄像头应用技术和嵌入式应用技术为核心进行开发。其中,涉及到了一些嵌入式实时操作系统应用开发、ARM技术开发应用、图像采集、TFT显示、2.4G无线传送模块的应用等。在对上述技术问题进行充分深入地分析之后,制定了简便可行的技
10、术方案。并且以理论分析和该技术方案为基础,在不断地实验和方案调整代码调试中,终于完成了一个可以应用在一般智能家居的图像无线传输系统的设计。完成系统设计之后,还通过一系列测试,测试结果证明,设计的图像无线传输系统,完全达到了课题预期制定的各项指标,成功地完成了课题的最终目标实现基于ARM cortex-M系列处理器的图像无线传输系统。1.2 图像无线传输发展现状图像无线传输具有十分广阔的应用前景,在军事、国防、工农业、城市管理、生物医疗、环境监测、危险区域等许多领域都有重要的科研价值和潜在的实用价值, 已经引起了人们广泛的关注。美国技术评论杂志把图像无线传感器视为未来新兴十大技术的首位。美国早在
11、上个世纪90年代就着手对无线传感器网络展开了先期研究,并在军方应用与推广。美国军方的远景研究计划局(DARPA)陆续支持了Wins、SmartDust等一系列重要的图像无线传感器项目。进入21世纪,随着传感器网络研究的深入发展,美国一些大型的IT企业(如Microsoft,Intel等)也通过与高校合作的方式加入到图像无线传感器的研究队列中来。当前美国许多著名的大学在进行无线传感器方面的研究工作,如哈佛大学专注于无线传感器通信理论的研究;加州大学伯克利分校致力于传感器节点的研究与开发,目前市面上比较流行的mica系列节点平台就是该分校的研究成果。在欧洲的一些国家,如英国、意大利也在开展该领域的
12、研究工作。相对而言,国内对无线传感器的研究起步较晚,但是我国对无线传感器的发展也非常重视。从2002年开始,国家自然科学基金委员会已经批准了和无线传感器相关的多个课题,在国家发展改革委员会的下一代互联网示范工程中,也部署了和无线传感器相关的课题。除此以外,中科院、清华大学、北京邮电大学、浙江大学和中国科技大学等众多高等院校也积极开展对无线传感器网络的研究。由于在很多领域有广阔的应用前景,无线传感器的研究开发工作众多。当前,对WSN的研究主要集中在通信协议、能耗管理、定位算法等方面。通信协议的研究约占研究点的35;其次是能耗管理,约占16;再次是定位算法、体系结构设计和可靠性研究,三者共占研究点
13、的24,然而在无线传感器的操作系统方面的研究相对较少。其实,WSN操作系统实现对硬件资源的抽象,并负责管理处理器、有限的内存等资源,它直接影响到系统的性能,因此研究WSN上的操作系统是很有必要的。此外,无线图像传输的研究还处于起步阶段,属于无线传感器领域内的一个新兴的研究课题,目前国内北京航天航空大学开始了这方面的研究。第2章 系统硬件设计本章介绍了图像无线传输系统的硬件组成及基本理论。2.1 系统框图摄像头模块发送端处理器ILI9325显示屏SD卡存储单元2.4G无线模块接受端处理器ILI9325显示屏SD卡存储单元2.4G无线模块能源供应部分能源供应部分图2-1 图像无线传输工作原理框图处
14、理器模块是整个传感器节点的核心部分,包括处理单元和存储单元,它负责控制整个节点的操作,处理所有相关数据;传感器模块是外围的设备的真正接口,负责监测区域内数据的采集和转换;无线通信模块负责与其他传感器节点进行无线通信,并传递数据;能量供应模块也就是传感器节点运行所需的电源,一般直接供电不太实际,通常采用微型电池。此外,还提供与用户的通信接口,方便与用户进行交互。图像无线传输工作原理框图见图2-1.2.2 系统硬件实现2.2.1 ARM处理器系统核心部分采用ARM处理器。ARM公司在经典处理器ARM11以后的产品改用Cortex命名,并分成A、R和M三类,旨在为各种不同的市场提供服务。Cortex
15、系列属于ARMv7架构,这是ARM公司最新的指令集架构。ARMv7架构定义了三大分工明确的系列:“A”(Application)系列面向尖端的基于虚拟内存的操作系统和用户应用,处理性能越来越接近于电脑,典型的产品有平板电脑、iphone、安卓手机和windows phone8;“R”(Realtime)系列针面向实时系统;“M”(Microcontroller)系列面向微控制器。由于应用领域不同,基于v7架构的Cortex处理器系列所采用的技术也不相同,基于v7A的称为Cortex-A系列,基于v7R的称为Cortex-R系列,基于v7M的称为Cortex-M系列。本系统设计便使用了Corte
16、x-M系列的处理器。ARM Cortex-M 处理器系列是一系列可向上兼容的高能效、易于使用的处理器,这些处理器旨在帮助开发人员满足将来的嵌入式应用的需要。这些需要包括以更低的成本提供更多功能、不断增加连接、改善代码重用和提高能效。 Cortex-M 系列针对成本和功耗敏感的 MCU 和终端应用(如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械)的混合信号设备进行过优化。以更低的 MHz 或更短的活动时段运行基于架构的睡眠模式支持比 8/16 位设备的工作方式更智能、睡眠时间更长。多个供应商之间的全球标准代码兼容性统一的工具和操作系统支持。每 MHz 提供更高的
17、性能能够以更低的功耗实现更丰富的功能。现在的面世的Cortex-M 系列产品有Cortex-M0、M0+、M1、M3、M4。2.2.2发射端核心部分发射端核心部分采用STM32F407VGT6处理器,STM32F407VGT6属于先进的Cortex-M4F内核,FPU浮点运算能力,增强的DSP处理指令;更多的存储空间,高达1M字节的片上闪存高达196K字节的内嵌SRAM;灵活的外部存储器接口;极致的运行速度,以168MHz高速运行时可达到1.25DMIPS/MHz的处理能力。该处理器是由ARM专门开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效
18、的信号处理功能与Cortex-M处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。片上资源有LCD并行接口,8080/6800模式;时钟,复位和电源管理1.8 V至3.6 V供电和I / O的POR,PDR,PVD和BOR4至26 MHz晶体振荡器内部16 MHz工厂调整的RC(精度为1)32 kHz振荡器作为RTC与校准内部32 kHz RC与校准睡眠,停机和待机模式VBAT供应RTC,2032位的备份寄存器+可选的4 KB备份SRAM;3个12位,2.4MSPS一个A/D转换器:多达24通道,三
19、重交叉模式下的性能高达7.2 MSPS;2个12位D / A转换器;通用DMA:具有FIFO和突发支持的16路DMA控制器;多达17个定时器:12个16位定时器,和2个频率高达168MHz的32位定时器,每个定时器都带有4个输入捕获/输出比较/PWM,或脉冲计数器与正交(增量)编码器输入;高级连接功能USB 2.0全速器件/主机/ OTG控制器,带有片上物理层USB的2.0 high-speed/full-speed设备/主机/ OTG控制器的专用DMA,片上全速PHY和ULPI10/100以太网MAC专用DMA:支持IEEE 1588v2的硬件,MII/RMII;14位parallel-照相
20、机接口:速度高达54MB/S。通用DMA:具有F?6?7?6?7IFO和突发支持的16路DMA控制器2个12位D / A转换器.LCD并行接口,8080/6800模式该处理器是由ARM专门开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功能与 Cortex-M 处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。该处理器是由ARM专门开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功
21、能与 Cortex-M 处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。该处理器是由ARM专门开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功能与 Cortex-M 处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。2.2.3 接收端核心部分接收端核心部分使用STM32F103ZET6处理器,STM32F103ZET6处理器增强型系列使用高性
22、能的ARM Cortex-M3 32位的RISC内核,ARM的Cortex-M3处理器是最新一代的嵌入式ARM处理器,以72MHz主频运行时可达到1.20 DMIPS/MHz的处理能力,它为实现MCU的需要提供了低成本的平台、缩减的管脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。 ARM的Cortex-M3是32位的RISC处理器,提供额外的代码效率,在通常8和16位系统的存储空间上发挥了ARM内核的高性能。片上资源有LQFP144脚LQFP144脚,512K 片内FLASH(相当于硬盘),64K片内RAM(相当于内存),片内FLASH 支持在线编程(IAP);片内双RC
23、晶振,提供8M和32K的频率;3路共16通道的12位AD输入,2路共2通道的12位DA输出;支持片外独立电压基准;8个定时器;3个SPI接口;2个IIC接口;2个IIS接口;5个USART通信接口;1个SDIO接口;1个USB微控制器;1个CAN微控制器。所有的I/O口都可作为外部中断触发端。这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合:电机驱动和应用控制;医疗和手持设备;PC外设和GPS平台;工业应用,可编程控制器、变频器、打印机和扫描仪;警报系统,视频对讲,和暖气通风空调系统2.2.4 无线模块图2-2 NRF24L01+无线模块原理图发送端和接收端的无线
24、模块硬件原理均一致。NRF24L01+是NORDIC公司最近生产的一款工作在2.4GHz2.5GHz的ISM 频段的单片无线收发器,采用FSK调制,内部集成NORDIC自己的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2M(bps)。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。输出功率频道选择和协议的设置可以通过SPI接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传送工作。从驱动控制的角度来看,只需关注NRF24L01+对处理器链接的六个控制信号,分别为CE
25、、CSN、SCK、MISO、MOSI、IRQ。CE: 芯片的模式控制线。在 CSN为低的情况下,CE协同NRF24L01的CONFIG 寄存器共同决定NRF24L01的状态。CSN: 芯片的片选线,CSN 为低电平芯片工作。SCK: 芯片控制的时钟线(SPI 时钟)MISO:芯片控制数据线(Master input slave output)MOSI:芯片控制数据线(Master output slave input)IRQ: 中断信号。无线通信过程中MCU 主要是通过IRQ 与NRF24L01 进行通信。2.2.5 发送端图像采集部分图2-3 OV7670摄像头图2-7是OV7670摄像头与
26、处理器的连接图。OV7670图像传感器,体积小、工作电压低,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率8位影响数据。该产品VGA图像最高达到30帧/秒。OV7670/7171共有656x488即320128个像素,其中640x480个有效(即307200)。SDA:SCCB数据口;SCL:SCCB始终输出口;RESET: 初始化所有寄存器到默认值 0:RESET 模式 1:一般模式;VSYNC: 帧同步;PWDN: POWER DOWN模式选择 0:工作 1:POWER DOWN;HSYNC: 行同步;MCLCK: 系统时
27、钟输入;PCLK: 像素时钟;D0D7:数据位07;使用摄像头,尤其是采用CMOS芯片的产品时就更应该注重技巧:A. 不要在逆光环境下使用(这点CCD同),尤其不要直接指向太阳,否则“放大镜烧蚂蚁”的惨剧就会发生在您的摄像头上。B. 环境光线不要太弱,否则直接影响成像质量。克服这种困难有两种办法,一是加强周围亮度,二是选择要求最小照明度小的产品,现在有些摄像头已经可以达到5lux。C. 要注意的是合理使用镜头变焦,不要小瞧这点,通过正确的调整,摄像头也同样可以拥有拍摄芯片的功能。受市场情况及市场发展等情况的限制,摄像头采用CCD图像传感器的厂商为数不多,主要原因是采用CCD图像传感器成本高的影
28、响。在MOBILE PHONE上使用的CAMREA还是以CMOS为主,不仅是价格而且体积也是影响在MOBILE PHONE上使用CCD CAMERA的另一原因。SCCB总线:SCCB是欧姆尼图像技术公司(OmniVision)开发的一种总线,并广泛的应用于OV系列图像传感器上。SCCB是一种3线的总线,它由SCCB_E、SIO_C、SIO_D组成。在为了减少引脚的芯片上缩减为2根线,SIO_C和SIO_D。2线的SCCB总线只能是一个主器件对一个从器件控制,但3线SCCB接口可以对多个从器件控制。2线的SCCB总线需要主机具备如下条件中的一个或多个:一、主机必须能够使SIO_D处于第三态,即高
29、阻态。二、主机必须能够驱动SIO_D比正常识别电压更高或更低。图2-4 SCCB时序图SIO_E:输出(主机发出,单向),低电平有效,总线空闲时主机驱动此引脚为1,驱动为0时表示开始传输或者挂起模式(在表面没有该引脚的芯片中,该引脚默认为可用的,并且保持高电平)。它标志这数据传输的开始和结束,高电平向低电平转变表示开始传输,低电平向高电平转变表示结束传输。在数据传输过程中,SIO_E必须保持为0。SIO_C:输出(主机发出,单向),总线空闲时主机驱动此引脚为1;当驱动SIO_E为0时,主机驱动此引脚为0或1;当挂起时主机驱动SIO_C为0; 它表明每一个传输位;SIO_C为1时表示一个传输位;
30、SIO_D只能在SIO_C为0时发生变化。 SIO_D:I/O口,双向传输线,既可以由主机驱动也可以由从机驱动。当总线空闲时保持浮动,状态不固定(0、1或三态高阻)。当系统挂起时驱动该引脚为0。为了不让该引脚产生未知的状态,主机和从机有职责保持该引脚的电平。SIO_C为1表示传输一位数据,SIO_D只能在SIO_C为0时发生变化。然而,在开始传输和结束传输时却可以存在例外。当SIO_E有效且SIO_C变为0之前,SIO_D可以被驱动为0。在SIO_E失效前,SIO_C转为1时,SIO_D也能被驱动为0。摄像头工作时序:图2-5 摄像头工作时序图当图像当中一行的数据来临之际,行中断引脚HREF=
31、0,tPHL过后HREF=1,表示像素数据开始输出,在像素时钟引脚PLCK=0时改变输出数据,PLCK=1是通知处理器数据输出稳定,以此反复输出一行数据。2.2.6 LCD显示部分图2-6 发送端TFT屏电路原理图图2-7 接受端TFT屏电路原理图发送端和接收端的显示屏均使用ILI9325芯片驱动的显示屏。在ARM cortex-M系列处理器内部,是通过FSMC(静态存储器控制器)来控制ILI9325,ARM cortex-M系列处理器把TFT模块当做一块NOR FLASH来操作。使用FSMC控制器后,可以把FSMC提供的FSMC_A25:0作为地址线,而把FSMC提供的FSMC_D15:0作
32、为数据总线。当存储数据设为16位时,地址各位对应FSMC_A24:0,数据位对应FSMC_D15:0。FSMC 包括4个模块:(1)AHB接口(包括FSMC配置寄存器)(2)NOR闪存和PSRAM控制器(驱动LCD的时候LCD就好像一个PSRAM的里面只有2个16位的存储空间,一个是DATA RAM 一个是CMD RAM)(3)NAND闪存和PC卡控制器(4)外部设备接口注:FSMC可以请求AHB进行数据宽度的操作。如果AHB操作的数据宽度大于外部设备(NOR或NAND或LCD)的宽度,此时FSMC将AHB操作分割成几个连续的较小的数据宽度,以适应外部设备的数据宽度。FSMC对外部设备的地址映
33、像从0x6000 0000开始,到0x9FFF FFFF结束,共分4个地址块,每个地址块256M字节。可以看出,每个地址块又分为4个分地址块,大小64M。对NOR的地址映像来说,我们可以通过选择HADDR27:26来确定当前使用的是哪个64M的分地址块,如下页表格。而这四个分存储块的片选,则使用NE4:1来选择。数据线/地址线/控制线是共享的。FSMC提供了所有的LCD控制器的信号:FSMC_D16:0: 16bit的数据总线;FSMC NEx: 分配给NOR的256M,再分为4个区,每个区用来分配一个外设,这四个外设的片选分为是NE1-NE4,对应的引脚为:PD7NE1,PG9NE2,PG1
34、0-NE3,PG12NE4;FSMC NOE: 输出使能,连接LCD的RD脚;FSMC NWE: 写使能,连接LCD的RW脚;FSMC Ax: 用在LCD显示RAM和寄存器之间进行选择的地址线,即该线用于选择LCD的RS脚,该线可用地址线的任意一根线,范围:FSMC_A25:0。注:RS = 0时,表示读写寄存器;RS = 1,表示读写数据RAM。2.2.7 片存储部分图2-8 SD卡存储部分存储部分使用SD卡,SD存储介质是一种非易失性外部存储器,可满足许多应用场合的要求。SD格式是“多媒体卡”(MMC)格式的继承产品。SD卡存储器一般工作于3.3V电压,具有适度的电流要求。SD卡的容量从几
35、百兆节到最高的几十GB不等。容量范围如此之宽,可为众多应用提供充足的外部存储空间。SD 总线有6 根通信线和三根电源供应线:CMD: 命令线是双向信号线。主机和卡通过push pull 模式工作。DAT0-3: 数据线是双向信号线。主机和卡通过push pull 模式工作。CLK: 时钟是从主机到卡的信号。CLK 通过push pull 模式操作。VDD: 是所有卡的电源供应线。VSS1:2:2根地线。SD 卡可以通过单数据线(DAT0)或四根数据线(DAT0-DAT3)进行数据传输。单根数据线传输最大传输速率为25 Mbit/s,四根数据线最大传输速率为100 Mbit/s。本次课题设计的系
36、统使用四根数据线。第3章 系统软件设计本章介绍了图像无线传输系统各硬件的驱动程序的设计。3.1 无线模块驱动程序设计发送端和接收端的无线模块驱动代码均由以上两个文件组成。对nrf24l01的操作方法见图3-1。对nrf24l01传送SPI数据设置nrf24l01为发送模式,指定发送速率和发送个数初始化处理器SPI接口发送指定数据发送函数是否返回0NOYES对nrf24l01传送SPI数据设置nrf24l01为接收模式,指定接收速率和接收个数初始化处理器SPI接口接收数据接收函数是否返回0NOYES图3-1-1 nrf24l01发送数据操作流程图图3-1-2 nrf24l01接收数据操作流程图图
37、3-1 nrf24l01工作在发送和接收的操作流程图对nrf24l01的操作很简单,不论是发送还是接收基本步骤都是先初始化处理器SPI接口,然后传送参数对nrf24l01进行设置,接下来便可以使用nrf24l01进行发送数据(或接收数据)。为了确保不发漏(或接漏)数据,每次发送(或接收)都通过while()循环检查是否发送(或接收)成功,发送(或接收)函数返回0表示无误,返回1表示还没成功或还没完成发送(或接收)。nrf24l01.c提供用户使用的函数有(完整形式参见附录1 nrf24l01.h文件的用户函数)NRF24L01_Init()NRF24L01_Detach()NRF24L01_T
38、xMode()NRF24L01_RxMode()NRF24L01_TxPacket()NRF24L01_RxPacket()NRF24L01_Init()函数初始化ARM处理器的SPI接口,完成SPI初始化后检测接口上是否连接好nrf24l01无线模块。NRF24L01_Detach()函数用于解除nrf24l01无线模块对ARM处理器的SPI接口的占用,也有减低系统功耗功能。NRF24L01_TxMode()设置nrf24l01无线模块为发送模式,包括设置通讯速率,通讯字节个数,本地地址和接收地址,频道的自动答应允许是否使能,允许接受的频道号和频道个数,自动重发时间和次数,输出功率频道选择。
39、NRF24L01_RxMode()设置nrf24l01无线模块为接收模式,包括设置通讯速率,通讯字节个数,本地地址和接收地址,频道的自动答应允许是否使能,允许接受的频道号和频道个数,自动重发时间和次数,输出功率频道选择。NRF24L01_TxPacket()发送具体数据包。具体实现代码:unsigned char NRF24L01_TxPacket(unsigned char* tx_buf, unsigned char len)unsigned char status = 0x00;NRF24L01_CE_LOW();NRF24L01_Write_Buf(RF_WRITE_REG + RX_
40、ADDR_P0, NRF24L01_ADDRESS, NRF24L01_ADR_WIDTH_5B); / 装载接收端地址NRF24L01_Write_Buf(WR_TX_PLOAD, tx_buf, len);/ 装载数据NRF24L01_CE_HIGH();while(NRF24L01_IRQ() != 0);status = NRF24L01_Read_Reg(RF_READ_REG + STATUS);NRF24L01_Write_Reg(RF_WRITE_REG + STATUS, status);if(status & MAX_TX)NRF24L01_Write_Reg(FLUSH_
41、TX, 0x00);return MAX_TX;if(status & TX_OK)return TX_OK;return 0xff;/其他原因发送失败NRF24L01_RxPacket()接收具体数据包。具体实现代码:unsigned char NRF24L01_RxPacket(unsigned char* rx_buf, unsigned char len) unsigned char revale = 0;unsigned char sta = 0;while(NRF24L01_IRQ() != 0);sta = NRF24L01_Read_Reg(RF_READ_REG+STATUS
42、);/ 读取状态寄存其来判断数据接收状况NRF24L01_Write_Reg(RF_WRITE_REG+STATUS, sta); /接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志if(sta & RX_OK) / 判断是否接收到数据NRF24L01_Read_Buf(RD_RX_PLOAD, rx_buf, len);/ read receive payload from RX_FIFO bufferNRF24L01_Write_Reg(FLUSH_RX, 0x00);revale = RX_OK; /读取数据完成标志return revale;3.2 摄
43、像头驱动程序设计图像采集端的摄像头驱动代码由以上两个文件组成。OV7670的操作流程如图3-2。初始化处理器SCCB接口和摄像头接口通过SCCB总线对OV7670写设置参数SCCB传送的数据书否完全到达OV7670启动OV7670OV7670采集图像NOYES图3-2 对OV7670操作流程图ov7670.c提供用户使用的函数有(完整形式参见附录1 ov7670.h文件的用户函数)OV7670_Init()OV7670_Start()OV7670_Detach()OV7670_ISR()OV7670_Init()初始化ARM处理器摄像头接口和OV7670模块,并检测OV7670模块是否连接在A
44、RM处理器摄像头接口上。具体实现代码:unsigned char OV7670_Init(void)unsigned char i;DCMI_NVIC_Init();DCIM_GPIO_Init();SCCB_Init();OV7670_Reset();delay_ms(5); for(i = 0; i OV7670_REG_NUM; i+) if(0 = OV7670_WriteReg(OV7670_regi0, OV7670_regi1)return 1; return 0;OV7670_Start()函数启动OV7670模块。此函数跟具体的硬件操作有关,具体实现代码:void OV767
45、0_Start(void)LCD_WriteReg(0x0003, 0x1008); LCD_SetCursor(0, 319);LCD_WriteRAM_Prepare();RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);DCMI_ITConfig(DCMI_IT_FRAME, ENABLE);/DCMI中断 DMA_Cmd(DMA2_Stream1, ENABLE); DCMI_Cmd(ENABLE); DCMI_CaptureCmd(ENABLE); LCD_REG = 0x22;OV7670_Detach()用于解除OV7670模
46、块对ARM处理器的摄像头接口的占用,也有减低系统功耗功能。OV7670_ISR()函数是OV7670模块中断服务函数,每当OV7670模块采集完一幅图像后便进入此函数进行关中断。此函数跟具体的硬件操作有很大关联,具体操作步骤和选用处理器有关,具体实现代码:void OV7670_ISR(void)if(DCMI_GetITStatus(DCMI_IT_FRAME) != RESET)DCMI_ClearITPendingBit(DCMI_IT_FRAME);LCD_SetCursor(0, 319); LCD_WriteRAM_Prepare();3.3 LCD显示驱动程序设计发送端和接受端LCD显示驱动代码由以上两个文件组成。ili9325的操作流程如图3-3。通过FSMC初始化ili9325初始化处理器FSMC接口写ili9325的寄存器