基于ARMCortexM处理器图像无线传输的应用毕业论文

上传人:b**** 文档编号:66191445 上传时间:2022-03-27 格式:DOC 页数:42 大小:567.50KB
收藏 版权申诉 举报 下载
基于ARMCortexM处理器图像无线传输的应用毕业论文_第1页
第1页 / 共42页
基于ARMCortexM处理器图像无线传输的应用毕业论文_第2页
第2页 / 共42页
基于ARMCortexM处理器图像无线传输的应用毕业论文_第3页
第3页 / 共42页
资源描述:

《基于ARMCortexM处理器图像无线传输的应用毕业论文》由会员分享,可在线阅读,更多相关《基于ARMCortexM处理器图像无线传输的应用毕业论文(42页珍藏版)》请在装配图网上搜索。

1、基于ARM_Cortex-M处理器图像无线传输的应用摘 要本论文主要阐述设计一款以ARM Cortex-M系列微处理器为核心的图像无线传输系统的设计方法和实现细节。论文主要针对未来对于智能家居以与安防设备的日益需求,采用迄今最为流行性能卓越的ARM Cortex-M系列嵌入式微处理器作为嵌入式智能设备的处理核心,并搭载使用Micrium公司的嵌入式实时操作系统uC/OSII。本论文开篇通过对智能家居和安防设备的需求分析与图像无线传输的发展现状,说明了现今以与未来人们希望图像监控能够无线获取,灵活操作和存取。接下来系统硬件设计,将介绍了图像无线传输系统的硬件组成与基本理论。然后进行系统软件设计,

2、讲介绍了图像无线传输系统各硬件的驱动程序设计。最后实现实时操作系统应用,介绍了uC/OSII在图像无线传输系统的使用。展示了系统完成后运行效果,并指出该系统的不足与以后改进的方向。该智能设备实现了图形界面触摸操控、驱动摄像头图像的采集、对图像的无线传输、接收和存储等功能,并测试表明该设备达到了预期的稳定要求。关键字 ARM Cortex-M uC/OSII 无线图像传输AbstractThis thesisdescribesthe design of acoreARM Cortex-Mseriesmicroprocessorsmart homesystem design methodsand

3、implementation details. Focused onthefutureistheincreasing demandforsmart homeandsecurity equipment, by far the mostpopularhigh performanceARM Cortex-Mfamily of embeddedmicroprocessorasaprocessing coreforembeddedintelligent devices, and equipped with Micriums embedded real-timeoperating systemuC/OS-

4、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 operation and access.The second part of the system hardwar

5、e 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 operating system uC/OS-II transplantation in the ARM cortex-M

6、 series processors.The smart devicesto achievethegraphical interfacetouch control, drivercameraimage acquisition, wirelessimagetransmission, receiving and storage, andtests show thattheequipmentto achieve the desiredstability requirements.AlphaKeywordsARMCortex-M uC/OSII wireless image transmission3

7、7 / 42目 录第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 图像无线传输系统不足以与改进33结束语34参考文献35附录1 各模块驱动程序一览36附录2 电路原理图39第1章 绪 论本章通过对智能家居和安防设备的需求

8、分析与图像无线传输的发展现状,说明了现今以与未来人们希望图像监控能够无线获取,灵活操作和存取。1.1 课题背景如今摄像头监控、图像显示、无线数据传送和无线控制已经广泛地应用在人类生活与生产各个领域当中。如家电、汽车、交通安全、工业生产、电子电力等。在半导体集成电路芯片和数字技术没有广泛运用的过去,人类只能依赖超声波、红外传感、电磁等手段进行监控。对距离稍微远的场景使用来说,开发起来很麻烦,费工费,使用起来也不是很方便。目前,国际先进的实时监控系统都实现了图像采集,并且有部分设备实现无线收发并显示的功能。以前在安防监控系统当中需要密密麻麻的装上一大堆传感器,如今已被一个拇指般大小的、毫不起眼的数

9、字摄像头所替代了。OV系列的数字摄像头已经根据不同应用领域的不同需求推出了多款产品,性能良好、价格低廉。使得我们对图像传感器有了足够的选择。本课题研究的是图像采集系统中的无线传输和显示。在翻阅了大量资料后,决定以CMOS摄像头应用技术和嵌入式应用技术为核心进行开发。其中,涉与到了一些嵌入式实时操作系统应用开发、ARM技术开发应用、图像采集、TFT显示、2.4G无线传送模块的应用等。在对上述技术问题进行充分深入地分析之后,制定了简便可行的技术方案。并且以理论分析和该技术方案为基础,在不断地实验和方案调整代码调试中,终于完成了一个可以应用在一般智能家居的图像无线传输系统的设计。完成系统设计之后,还

10、通过一系列测试,测试结果证明,设计的图像无线传输系统,完全达到了课题预期制定的各项指标,成功地完成了课题的最终目标实现基于ARM cortex-M系列处理器的图像无线传输系统。1.2 图像无线传输发展现状图像无线传输具有十分广阔的应用前景,在军事、国防、工农业、城市管理、生物医疗、环境监测、危险区域等许多领域都有重要的科研价值和潜在的实用价值, 已经引起了人们广泛的关注。美国技术评论杂志把图像无线传感器视为未来新兴十大技术的首位。美国早在上个世纪90年代就着手对无线传感器网络展开了先期研究,并在军方应用与推广。美国军方的远景研究计划局(DARPA)陆续支持了Wins、SmartDust等一系列

11、重要的图像无线传感器项目。进入21世纪,随着传感器网络研究的深入发展,美国一些大型的IT企业(如Microsoft,Intel等)也通过与高校合作的方式加入到图像无线传感器的研究队列中来。当前美国许多著名的大学在进行无线传感器方面的研究工作,如哈佛大学专注于无线传感器通信理论的研究;加州大学伯克利分校致力于传感器节点的研究与开发,目前市面上比较流行的mica系列节点平台就是该分校的研究成果。在欧洲的一些国家,如英国、意大利也在开展该领域的研究工作。相对而言,国对无线传感器的研究起步较晚,但是我国对无线传感器的发展也非常重视。从2002年开始,国家自然科学基金委员会已经批准了和无线传感器相关的多

12、个课题,在国家发展改革委员会的下一代互联网示工程中,也部署了和无线传感器相关的课题。除此以外,中科院、清华大学、邮电大学、大学和中国科技大学等众多高等院校也积极开展对无线传感器网络的研究。由于在很多领域有广阔的应用前景,无线传感器的研究开发工作众多。当前,对WSN的研究主要集中在通信协议、能耗管理、定位算法等方面。通信协议的研究约占研究点的35;其次是能耗管理,约占16;再次是定位算法、体系结构设计和可靠性研究,三者共占研究点的24,然而在无线传感器的操作系统方面的研究相对较少。其实,WSN操作系统实现对硬件资源的抽象,并负责管理处理器、有限的存等资源,它直接影响到系统的性能,因此研究WSN上

13、的操作系统是很有必要的。此外,无线图像传输的研究还处于起步阶段,属于无线传感器领域的一个新兴的研究课题,目前国航天航空大学开始了这方面的研究。第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系列属于ARMv7架构,这是ARM公司最新的指令集架构。ARMv7架构定义了三大分工明确的系列:“A”(Application)系列面向尖端的基于虚拟存的操作系统和用户应用,处理性能

15、越来越接近于电脑,典型的产品有平板电脑、iphone、安卓手机和windows phone8;“R”(Realtime)系列针面向实时系统;“M”(Microcontroller)系列面向微控制器。由于应用领域不同,基于v7架构的Cortex处理器系列所采用的技术也不一样,基于v7A的称为Cortex-A系列,基于v7R的称为Cortex-R系列,基于v7M的称为Cortex-M系列。本系统设计便使用了Cortex-M系列的处理器。ARM Cortex-M 处理器系列是一系列可向上兼容的高能效、易于使用的处理器,这些处理器旨在帮助开发人员满足将来的嵌入式应用的需要。这些需要包括以更低的成本提供

16、更多功能、不断增加连接、改善代码重用和提高能效。 Cortex-M 系列针对成本和功耗敏感的 MCU 和终端应用(如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械)的混合信号设备进行过优化。以更低的 MHz 或更短的活动时段运行基于架构的睡眠模式支持比 8/16 位设备的工作方式更智能、睡眠时间更长。多个供应商之间的全球标准代码兼容性统一的工具和操作系统支持。每 MHz 提供更高的性能能够以更低的功耗实现更丰富的功能。现在的面世的Cortex-M 系列产品有Cortex-M0、M0+、M1、M3、M4。2.2.2发射端核心部分发射端核心部分采用STM32F407

17、VGT6处理器,STM32F407VGT6属于先进的Cortex-M4F核,FPU浮点运算能力,增强的DSP处理指令;更多的存储空间,高达1M字节的片上闪存高达196K字节的嵌SRAM;灵活的外部存储器接口;极致的运行速度,以168MHz高速运行时可达到1.25DMIPS/MHz的处理能力。该处理器是由ARM专门开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功能与Cortex-M处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。片上资源有

18、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通道,三重交叉模式下的性能高达7.2 MSPS;2个12位D / A转换器;通用DMA:具有FIFO和突发支持的16路DMA控制器;多达17个定时器:12个16位定时器,和2个频率高达168MHz的3

19、2位定时器,每个定时器都带有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-照相机接口:速度高达54MB/S。通用DMA:具有F?6?7?6?7IFO和突发支持的16路DMA控制器2个12位D / A转换器.LCD并行接口,8080/6800模式该处理器是由ARM专门开发

20、的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功能与 Cortex-M 处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。该处理器是由ARM专门开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功能与 Cortex-M 处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。该处理器是由ARM专门

21、开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功能与 Cortex-M 处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。2.2.3 接收端核心部分接收端核心部分使用STM32F103ZET6处理器,STM32F103ZET6处理器增强型系列使用高性能的ARM Cortex-M3 32位的RISC核,ARM的Cortex-M3处理器是最新一代的嵌入式ARM处理器,以72MHz主频运行时可达到1.20 DMIPS/MHz的处理能力,它为实现

22、MCU的需要提供了低成本的平台、缩减的管脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。 ARM的Cortex-M3是32位的RISC处理器,提供额外的代码效率,在通常8和16位系统的存储空间上发挥了ARM核的高性能。片上资源有LQFP144脚LQFP144脚,512K 片FLASH(相当于硬盘),64K片RAM(相当于存),片FLASH 支持在线编程(IAP);片双RC晶振,提供8M和32K的频率;3路共16通道的12位AD输入,2路共2通道的12位DA输出;支持片外独立电压基准;8个定时器;3个SPI接口;2个IIC接口;2个IIS接口;5个USART通信接口;1个SD

23、IO接口;1个USB微控制器;1个CAN微控制器。所有的I/O口都可作为外部中断触发端。这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合:电机驱动和应用控制;医疗和手持设备;PC外设和GPS平台;工业应用,可编程控制器、变频器、打印机和扫描仪;警报系统,视频对讲,和暖气通风空调系统2.2.4 无线模块图2-2 NRF24L01+无线模块原理图发送端和接收端的无线模块硬件原理均一致。NRF24L01+是NORDIC公司最近生产的一款工作在2.4GHz2.5GHz的ISM 频段的单片无线收发器,采用FSK调制,部集成NORDIC自己的Enhanced Short Bu

24、rst协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2M(bps)。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。输出功率频道选择和协议的设置可以通过SPI接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传送工作。从驱动控制的角度来看,只需关注NRF24L01+对处理器的六个控制信号,分别为CE、CSN、SCK、MISO、MOSI、IRQ。CE: 芯片的模式控制线。在CSN为低的情况下,CE协同NRF24L01的CONFIG 寄存器共同决定NRF24L01的状态。CSN: 芯片的片选线,CSN 为低电平

25、芯片工作。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摄像头与处理器的连接图。OV7670图像传感器,体积小、工作电压低,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率8位影响数据。该产品VGA图像最高达到3

26、0帧/秒。OV7670/7171共有656x488即320128个像素,其中640x480个有效(即307200)。SDA:SCCB数据口;SCL:SCCB始终输出口;RESET:初始化所有寄存器到默认值 0:RESET 模式 1:一般模式;VSYNC:帧同步;PWDN:POWER DOWN模式选择 0:工作 1:POWER DOWN;HSYNC:行同步;MCLCK:系统时钟输入;PCLK:像素时钟;D0D7:数据位07;使用摄像头,尤其是采用CMOS芯片的产品时就更应该注重技巧:A. 不要在逆光环境下使用(这点CCD同),尤其不要直接指向太阳,否则“放大镜烧蚂蚁”的惨剧就会发生在您的摄像头上

27、。B. 环境光线不要太弱,否则直接影响成像质量。克服这种困难有两种办法,一是加强周围亮度,二是选择要求最小照明度小的产品,现在有些摄像头已经可以达到5lux。C. 要注意的是合理使用镜头变焦,不要小瞧这点,通过正确的调整,摄像头也同样可以拥有拍摄芯片的功能。受市场情况与市场发展等情况的限制,摄像头采用CCD图像传感器的厂商为数不多,主要原因是采用CCD图像传感器成本高的影响。在MOBILE PHONE上使用的CAMREA还是以CMOS为主,不仅是价格而且体积也是影响在MOBILE PHONE上使用CCD CAMERA的另一原因。SCCB总线:SCCB是欧姆尼图像技术公司(OmniVision)

28、开发的一种总线,并广泛的应用于OV系列图像传感器上。SCCB是一种3线的总线,它由SCCB_E、SIO_C、SIO_D组成。在为了减少引脚的芯片上缩减为2根线,SIO_C和SIO_D。2线的SCCB总线只能是一个主器件对一个从器件控制,但3线SCCB接口可以对多个从器件控制。2线的SCCB总线需要主机具备如下条件中的一个或多个:一、主机必须能够使SIO_D处于第三态,即高阻态。二、主机必须能够驱动SIO_D比正常识别电压更高或更低。图2-4 SCCB时序图SIO_E:输出(主机发出,单向),低电平有效,总线空闲时主机驱动此引脚为1,驱动为0时表示开始传输或者挂起模式(在表面没有该引脚的芯片中,

29、该引脚默认为可用的,并且保持高电平)。它标志这数据传输的开始和结束,高电平向低电平转变表示开始传输,低电平向高电平转变表示结束传输。在数据传输过程中,SIO_E必须保持为0。SIO_C:输出(主机发出,单向),总线空闲时主机驱动此引脚为1;当驱动SIO_E为0时,主机驱动此引脚为0或1;当挂起时主机驱动SIO_C为0; 它表明每一个传输位;SIO_C为1时表示一个传输位;SIO_D只能在SIO_C为0时发生变化。 SIO_D:I/O口,双向传输线,既可以由主机驱动也可以由从机驱动。当总线空闲时保持浮动,状态不固定(0、1或三态高阻)。当系统挂起时驱动该引脚为0。为了不让该引脚产生未知的状态,主

30、机和从机有职责保持该引脚的电平。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=0,tPHL过后HREF=1,表示像素数据开始输出,在像素时钟引脚PLCK=0时改变输出数据,PLCK=1是通知处理器数据输出稳定,以此反复输出一行数据。2.2.6 LCD显示部分图2-6 发送端TFT屏电路原理图图2-7 接

31、受端TFT屏电路原理图发送端和接收端的显示屏均使用ILI9325芯片驱动的显示屏。在ARM cortex-M系列处理器部,是通过FSMC(静态存储器控制器)来控制ILI9325,ARM cortex-M系列处理器把TFT模块当做一块NOR FLASH来操作。使用FSMC控制器后,可以把FSMC提供的FSMC_A25:0作为地址线,而把FSMC提供的FSMC_D15:0作为数据总线。当存储数据设为16位时,地址各位对应FSMC_A24:0,数据位对应FSMC_D15:0。FSMC 包括4个模块:(1)AHB接口(包括FSMC配置寄存器)(2)NOR闪存和PSRAM控制器(驱动LCD的时候LCD就

32、好像一个PSRAM的里面只有2个16位的存储空间,一个是DATA RAM 一个是CMD RAM)(3)NAND闪存和PC卡控制器(4)外部设备接口注:FSMC可以请求AHB进行数据宽度的操作。如果AHB操作的数据宽度大于外部设备(NOR或NAND或LCD)的宽度,此时FSMC将AHB操作分割成几个连续的较小的数据宽度,以适应外部设备的数据宽度。FSMC对外部设备的地址映像从0x6000 0000开始,到0x9FFF FFFF结束,共分4个地址块,每个地址块256M字节。可以看出,每个地址块又分为4个分地址块,大小64M。对NOR的地址映像来说,我们可以通过选择HADDR27:26来确定当前使用

33、的是哪个64M的分地址块,如下页表格。而这四个分存储块的片选,则使用NE4:1来选择。数据线/地址线/控制线是共享的。FSMC提供了所有的LCD控制器的信号:FSMC_D16:0: 16bit的数据总线;FSMC NEx:分配给NOR的256M,再分为4个区,每个区用来分配一个外设,这四个外设的片选分为是NE1-NE4,对应的引脚为:PD7NE1,PG9NE2,PG10-NE3,PG12NE4;FSMC NOE:输出使能,连接LCD的RD脚;FSMC NWE:写使能,连接LCD的RW脚;FSMC Ax:用在LCD显示RAM和寄存器之间进行选择的地址线,即该线用于选择LCD的RS脚,该线可用地址

34、线的任意一根线,围:FSMC_A25:0。注:RS = 0时,表示读写寄存器;RS = 1,表示读写数据RAM。2.2.7 片存储部分图2-8 SD卡存储部分存储部分使用SD卡,SD存储介质是一种非易失性外部存储器,可满足许多应用场合的要求。SD格式是“多媒体卡”(MMC)格式的继承产品。SD卡存储器一般工作于3.3V电压,具有适度的电流要求。SD卡的容量从几百兆节到最高的几十GB不等。容量围如此之宽,可为众多应用提供充足的外部存储空间。SD 总线有6 根通信线和三根电源供应线:CMD: 命令线是双向信号线。主机和卡通过push pull 模式工作。DAT0-3: 数据线是双向信号线。主机和卡

35、通过push pull 模式工作。CLK: 时钟是从主机到卡的信号。CLK 通过push pull 模式操作。VDD: 是所有卡的电源供应线。VSS1:2:2根地线。SD 卡可以通过单数据线(DAT0)或四根数据线(DAT0-DAT3)进行数据传输。单根数据线传输最大传输速率为25 Mbit/s,四根数据线最大传输速率为100 Mbit/s。本次课题设计的系统使用四根数据线。第3章 系统软件设计本章介绍了图像无线传输系统各硬件的驱动程序的设计。3.1 无线模块驱动程序设计发送端和接收端的无线模块驱动代码均由以上两个文件组成。对nrf24l01的操作方法见图3-1。对nrf24l01传送SPI数

36、据设置nrf24l01为发送模式,指定发送速率和发送个数初始化处理器SPI接口发送指定数据发送函数是否返回0NOYES对nrf24l01传送SPI数据设置nrf24l01为接收模式,指定接收速率和接收个数初始化处理器SPI接口接收数据接收函数是否返回0NOYES图3-1-1 nrf24l01发送数据操作流程图图3-1-2 nrf24l01接收数据操作流程图图3-1 nrf24l01工作在发送和接收的操作流程图对nrf24l01的操作很简单,不论是发送还是接收基本步骤都是先初始化处理器SPI接口,然后传送参数对nrf24l01进行设置,接下来便可以使用nrf24l01进行发送数据(或接收数据)。

37、为了确保不发漏(或接漏)数据,每次发送(或接收)都通过while()循环检查是否发送(或接收)成功,发送(或接收)函数返回0表示无误,返回1表示还没成功或还没完成发送(或接收)。nrf24l01.c提供用户使用的函数有(完整形式参见附录1 nrf24l01.h文件的用户函数)NRF24L01_Init()NRF24L01_Detach()NRF24L01_TxMode()NRF24L01_RxMode()NRF24L01_TxPacket()NRF24L01_RxPacket()NRF24L01_Init()函数初始化ARM处理器的SPI接口,完成SPI初始化后检测接口上是否连接好nrf24l

38、01无线模块。NRF24L01_Detach()函数用于解除nrf24l01无线模块对ARM处理器的SPI接口的占用,也有减低系统功耗功能。NRF24L01_TxMode()设置nrf24l01无线模块为发送模式,包括设置通讯速率,通讯字节个数,本地地址和接收地址,频道的自动答应允许是否使能,允许接受的频道号和频道个数,自动重发时间和次数,输出功率频道选择。NRF24L01_RxMode()设置nrf24l01无线模块为接收模式,包括设置通讯速率,通讯字节个数,本地地址和接收地址,频道的自动答应允许是否使能,允许接受的频道号和频道个数,自动重发时间和次数,输出功率频道选择。NRF24L01_T

39、xPacket()发送具体数据包。具体实现代码: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_ADDR_P0, NRF24L01_ADDRESS, NRF24L01_ADR_WIDTH_5B); / 装载接收端地址NRF24L01_Write_Buf(WR_TX_PLOAD, tx_buf, len);/ 装载数据NRF24L01_

40、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_TX, 0x00);return MAX_TX;if(status & TX_OK)return TX_OK;return 0xff;/其他原因发送失败NRF24L01_RxPacket()接收具体数据包。具体实现代码:unsigned c

41、har 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);/ 读取状态寄存其来判断数据接收状况NRF24L01_Write_Reg(RF_WRITE_REG+STATUS, sta); /接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志if(sta & RX_O

42、K) / 判断是否接收到数据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 摄像头驱动程序设计图像采集端的摄像头驱动代码由以上两个文件组成。OV7670的操作流程如图3-2。初始化处理器SCCB接口和摄像头接口通过SCCB总线对OV7670写设置参数SCCB传送的数据书否完全到达OV7670启动OV7670OV7670

43、采集图像NOYES图3-2 对OV7670操作流程图ov7670.c提供用户使用的函数有(完整形式参见附录1ov7670.h文件的用户函数)OV7670_Init()OV7670_Start()OV7670_Detach()OV7670_ISR()OV7670_Init()初始化ARM处理器摄像头接口和OV7670模块,并检测OV7670模块是否连接在ARM处理器摄像头接口上。具体实现代码:unsigned char OV7670_Init(void)unsigned char i;DCMI_NVIC_Init();DCIM_GPIO_Init();SCCB_Init();OV7670_Res

44、et();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 OV7670_Start(void)LCD_WriteReg(0x0003, 0x1008);LCD_SetCursor(0, 319);LCD_WriteRAM_Prepare();RCC_AHB2PeriphClockCmd(RCC_AHB2Periph

45、_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模块对ARM处理器的摄像头接口的占用,也有减低系统功耗功能。OV7670_ISR()函数是OV7670模块中断服务函数,每当OV7670模块采集完一幅图像后便进入此函数进行关中断。此函数跟具体的硬件操作有很大关联,具体操作步骤和选用处理器有关,具体实现代码:v

46、oid 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的寄存器地址写ili9325的寄存器数据图3-3 ili9325操作流程图ili932x.c提供用户使用的函数有(

47、完整形式参见附录1ili932x.h文件的用户函数)LCD_Initializtion()LCD_SetCursor()LCD_SetWindows()LCD_Clear()LCD_Font()LCD_Dispmd()LCD_GetPoint()LCD_SetPoint()LCD_Initializtion()用于初始化ARM处理器的FSMC接口和LCD模块,有几个重要的参数需要注意:(0x0000,0x0001)开启部时钟(0x0002,0x0700)电源开启(0x0050,0x0000)水平GRAM起始位置(0x0051,0x00ef)水平GRAM终止位置(0x0052,0x0000)垂直

48、GRAM起始位置(0x0053,0x013f)垂直GRAM终止位置第一个参数是LCD的寄存器地址,第二个值是给对应的寄存器写进对应的数值。LCD_SetCursor()函数是设置LCD的坐标。LCD_SetWindows()函数是设置LCD显示得窗口大小。LCD_Clear()函数是清除LCD并显示全屏为一种单一颜色。LCD_Clear()函数设置LCD显示文字的字体。LCD_Dispmd()函数设置LCD刷屏的方式。LCD_GetPoint()函数读取LCD屏指定像素的RGB值。LCD_SetPoint()函数是在LCD指定的像素设置其RGB值。3.4 文件系统发送端和接受端SD存储底层驱动

49、代码由以上两个文件组成。sdio_sd.c提供用户使用的函数有SD_Error SD_InitializeCards(void);SD_Error SD_GetCardInfo(SD_CardInfo *cardinfo);SD_Error SD_GetCardStatus(SD_CardStatus *cardstatus);SD_Error SD_EnableWideBusOperation(uint32_t WideMode);SD_Error SD_SelectDeselect(uint32_t addr);SD_Error SD_ReadBlock(uint8_t *readbuff

50、, uint32_t ReadAddr, uint16_t BlockSize);SD_Error SD_ReadMultiBlocks(uint8_t *readbuff, uint32_t ReadAddr, uint16_t BlockSize, uint32_t NumberOfBlocks);SD_Error SD_WaitReadOperation(void);SD_Error SD_WriteBlock(uint8_t *writebuff, uint32_t WriteAddr, uint16_t BlockSize);SD_Error SD_WriteMultiBlocks(

51、uint8_t *writebuff, uint32_t WriteAddr, uint16_t BlockSize, uint32_t NumberOfBlocks);SD_Error SD_WaitWriteOperation(void);SDTransferState SD_GetTransferState(void);SD_Error SD_StopTransfer(void);SD_Error SD_Erase(uint32_t startaddr, uint32_t endaddr);SD_Error SD_SendStatus(uint32_t *pcardstatus);SD_

52、Error SD_SendSDStatus(uint32_t *psdstatus);SD_Error SD_ProcessIRQSrc(void);void SD_ProcessDMAIRQ(void);由于直接操作SD卡存储数据十分复杂,因此移植了FAT文件系统来对SD卡进行管理操作。FAT文件系统是一种由微软发明并拥有部分专利的文档系统,供MS-DOS使用,也是所有非NT核的微软窗口使用的文件系统。cc936.c文件是拓展了FAT文件系统对中文的支持。diskio.c文件是FAT文件系统调用底层SD卡驱动代码的中间层。ff.c文件是FAT文件系统的核心部分。ffconf.h文件是FAT文

53、件系统的配置文件。fsearch.c文件是FAT文件系统的路径搜索功能文件。integer.c文件定义了FAT文件系统自己的数据类型。第4章 实时操作系统应用本章介绍了uC/OSII实时操作系统在图像无线传输系统中的应用。4.1 uC/OSII实时操作系统介绍uC/OS是一种免费公开源代码、结构小巧、具有可剥夺实时核的实时操作系统。uC/OS-II的前身是uC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在嵌入式系统编程杂志的5 月和6 月刊上刊登的文章连载,并把uC/OS 的源码发布在该杂志的BBS上。uC/OS和C/OS-II是专门为计算机的嵌入式应用设计

54、的,绝大部分代码是用C语言编写的。CPU硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI的C交叉编译器,有汇编器、连接器等软件工具,就可以将uC/OS-II嵌人到开发的产品中。uC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小核可编译至 2KB 。uC/OS-II 已经移植到了几乎所有知名的CPU 上。其252版本通过了美国航天航空管理局的安全认证,可靠性非常高。uC/OS-II目标是实现一个基于优先级调度的抢占式的实时核,并在这个核之上提供最基本的系统服务,如信号

55、量,消息队列,存管理,中断管理等。本课题选用uC/OS-II里最新的2.91版本,该版本最多可以支持256个任务,分别对应优先级0255,其中0为最高优先级。255为最低级,系统保留了4个最高优先级的任务和4个最顶优先级的任务,用户可以使用其他优先级。uC/OS-II提供了任务管理的各种函数调用,包括创建任务,删除任务,改变任务的优先级,任务挂起和恢复等。系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,该任务仅给一个整形变量做累加运算;另一个是系统任务,它的优先级为次低,该任务负责统计当前CPU的利用率。由于uC/OS-II实时性能优异,本课题我选用了该操作系统。4.2 在uC

56、/OSII运行程序运行任务0是否完整采集一幅图像任务1把一幅完整图像保存到SD卡任务2驱动无线模块发送图像数据系统启动建立任务0,1,2NONOYESYES驱动摄像头采集图像发邮箱通0知任务1图像是否发送完成返回任务0发邮箱通1知任务2图4-1 发送端程序流程图见图4-1,描述了发送端uC/OS-II的整体运行流程。uC/OS-II启动后,建立了任务0,任务1,任务2。任务0负责采集图像和显示采集图像,当一幅图像采集完成后,任务0发通知任务1保存图像到SD卡,任务1保存好后CPU返回任务0,任务0发通知任务2驱动无线模块发送图像数据,每发送20字节后等待接收端应答信号,再发送下一组20字节,知

57、道一幅图像发送完成。发送端代码如下:/*发送端主函数*/int main (void) OSInit();/初始化uC/OS-II,实时核OSTaskCreate(App4_Task0,(void *)0, (OS_STK *)&App4_Task0_Stk512 - 1, 14);OSTaskCreate(App4_Task1, (void *)0, (OS_STK *)&App4_Task1_Stk512 - 1, 13);OSTaskCreate(App4_Task2, (void *)0, (OS_STK *)&App4_Task2_Stk512 - 1, 12); OSStart()

58、;/启动操作系统 return (0);OS_EVENT *App4_Mbox2;/*定义两个事件指针*/*任务App4_Task0负责摄像头图像采集和显示*/static OS_STK App4_Task0_Stk 512 ;static void App4_Task0 (void *p_arg)char msg1 = 1, msg2 = 2;while(OSTaskDelReq(30) != OS_ERR_TASK_NOT_EXIST)OSTimeDly(10);while(OV7670_Init();OV7670_Start();(void)p_arg;while(OS_TRUE)if

59、(DCMI_GetFlagStatus(DCMI_FLAG_FRAMERI) = SET)DCMI_ClearFlag(DCMI_FLAG_FRAMERI);OV7670_Detach();OSMboxPost(App4_Mbox0, (void *)&msg1);OSMboxPost(App4_Mbox1, (void *)&msg2);OV7670_Start();/*任务App4_Task1负责图像无线传输*/static OS_STK App4_Task1_Stk 512 ;static void App4_Task1 (void *p_arg)char* msg1;unsigned

60、char err;App4_Mbox0 = OSMboxCreate(void *)0);(void)p_arg;while(OS_TRUE)msg1 = OSMboxPend(App4_Mbox0, 0, &err);if(err = OS_ERR_NONE)if(*msg1 = 1)Image_Transmit();/*任务App4_Task2负责图像保存*/static OS_STK App4_Task2_Stk 512 ;static void App4_Task2 (void *p_arg)char* msg2;unsigned char err;unsigned int n = 0

61、;App4_Mbox1 = OSMboxCreate(void *)0);(void)p_arg;while(OS_TRUE)msg2 = OSMboxPend(App4_Mbox1, 0, &err);if(err = OS_ERR_NONE)if(*msg2 = 2)while(GUI_PrtScreen(Photog_pathn+);第一个函数是主函数,初始化操作系统,创建了任务App4_Task0、任务App4_Task1、任务App4_Task2,最后启动系统。第二个函数是任务App4_Task0,初始化摄像头,启动摄像头,并在没采集一幅图像后发送系统给任务App4_Task1、任务App4_Task2。第三个函数是任务App4_Task1,建立系统0,并在接收到任务App4_Task0发来的系统后开始发送图像。第四个函数是任务App4_Task2,建立系统1,并在接收到任务App4_Task0发来的系统后保存图像到SD卡中。任务0把一幅完整图像保存到SD卡任务0驱动无线模块接收图像数据系统启动建

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!