基于arm_cortex-m处理器图像无线传输的应用_毕业设计(论文)(编辑修改稿)内容摘要:
CD的RD脚;FSMC NWE: 写使能,连接LCD的RW脚;FSMC Ax: 用在LCD显示RAM和寄存器之间进行选择的地址线,即该线用于选择LCD的RS脚,该线可用地址线的任意一根线,范围:FSMC_A[25:0]。 注:RS = 0时,表示读写寄存器;RS = 1,表示读写数据RAM。 片存储部分图28 SD卡存储部分存储部分使用SD卡,SD存储介质是一种非易失性外部存储器,可满足许多应用场合的要求。 SD格式是“多媒体卡”(MMC)格式的继承产品。 ,具有适度的电流要求。 SD卡的容量从几百兆节到最高的几十GB不等。 容量范围如此之宽,可为众多应用提供充足的外部存储空间。 SD 总线有6 根通信线和三根电源供应线:CMD: 命令线是双向信号线。 主机和卡通过push pull 模式工作。 DAT03: 数据线是双向信号线。 主机和卡通过push pull 模式工作。 CLK: 时钟是从主机到卡的信号。 CLK 通过push pull 模式操作。 VDD: 是所有卡的电源供应线。 VSS[1:2]:2根地线。 SD 卡可以通过单数据线(DAT0)或四根数据线(DAT0DAT3)进行数据传输。 单根数据线传输最大传输速率为25 Mbit/s,四根数据线最大传输速率为100 Mbit/s。 本次课题设计的系统使用四根数据线。 第3章 系统软件设计本章介绍了图像无线传输系统各硬件的驱动程序的设计。 无线模块驱动程序设计 发送端和接收端的无线模块驱动代码均由以上两个文件组成。 对nrf24l01的操作方法见图31。 对nrf24l01传送SPI数据设置nrf24l01为发送模式,指定发送速率和发送个数初始化处理器SPI接口发送指定数据发送函数是否返回0NOYES对nrf24l01传送SPI数据设置nrf24l01为接收模式,指定接收速率和接收个数初始化处理器SPI接口接收数据接收函数是否返回0NOYES图311 nrf24l01发送数据操作流程图图312 nrf24l01接收数据操作流程图图31 nrf24l01工作在发送和接收的操作流程图对nrf24l01的操作很简单,不论是发送还是接收基本步骤都是先初始化处理器SPI接口,然后传送参数对nrf24l01进行设置,接下来便可以使用nrf24l01进行发送数据(或接收数据)。 为了确保不发漏(或接漏)数据,每次发送(或接收)都通过while()循环检查是否发送(或接收)成功,发送(或接收)函数返回0表示无误,返回1表示还没成功或还没完成发送(或接收)。 (完整形式参见附录1 )NRF24L01_Init()NRF24L01_Detach()NRF24L01_TxMode()NRF24L01_RxMode()NRF24L01_TxPacket()NRF24L01_RxPacket() NRF24L01_Init()函数初始化ARM处理器的SPI接口,完成SPI初始化后检测接口上是否连接好nrf24l01无线模块。 NRF24L01_Detach()函数用于解除nrf24l01无线模块对ARM处理器的SPI接口的占用,也有减低系统功耗功能。 NRF24L01_TxMode()设置nrf24l01无线模块为发送模式,包括设置通讯速率,通讯字节个数,本地地址和接收地址,频道的自动答应允许是否使能,允许接受的频道号和频道个数,自动重发时间和次数,输出功率频道选择。 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_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 amp。 MAX_TX) { NRF24L01_Write_Reg(FLUSH_TX, 0x00)。 return MAX_TX。 } if(status amp。 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)。 // 读取状态寄存其来判断数据接收状况 NRF24L01_Write_Reg(RF_WRITE_REG+STATUS, sta)。 //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 if(sta amp。 RX_OK) // 判断是否接收到数据 { NRF24L01_Read_Buf(RD_RX_PLOAD, rx_buf, len)。 // read receive payload from RX_FIFO buffer NRF24L01_Write_Reg(FLUSH_RX, 0x00)。 revale = RX_OK。 //读取数据完成标志 } return revale。 } 摄像头驱动程序设计 图像采集端的摄像头驱动代码由以上两个文件组成。 OV7670的操作流程如图32。 初始化处理器SCCB接口和摄像头接口通过SCCB总线对OV7670写设置参数SCCB传送的数据书否完全到达OV7670启动OV7670OV7670采集图像NOYES图32 对OV7670操作流程图(完整形式参见附录1 ) 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_Reset()。 delay_ms(5)。 for(i = 0。 i OV7670_REG_NUM。 i++) { if(0 == OV7670_WriteReg(OV7670_reg[i][0], OV7670_reg[i][1])) { 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_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模块采集完一幅图像后便进入此函数进行关中断。 此函数跟具体的硬件操作有很大关联,具体操作步骤和选用处理器有关,具体实现代码:void OV7670_ISR(void){ if(DCMI_GetITStatus(DCMI_IT_FRAME) != RESET) { DCMI_ClearITPendingBit(DCMI_IT_FRAME)。 LCD_SetCursor(0, 319)。 LCD_WriteRAM_Prepare()。 }} LCD显示驱动程序设计发送端和接受端LCD显示驱动代码由以上两个文件组成。 ili9325的操作流程如图33。 通过FSMC初始化ili9325初始化处理器FSMC接口写ili9325的寄存器地址写ili9325的寄存器数据图33 ili9325操作流程图(完整形式参见附录1 )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)垂直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_SetPo。基于arm_cortex-m处理器图像无线传输的应用_毕业设计(论文)(编辑修改稿)
相关推荐
围内调节,能够满足那些需要工作在 300mW 以下的功 耗优化的移动设备的要求;以及满足那些需要 2020 Dhrystone MIPS 的性能优化的消费类应用的要求。 因此采用 ARM CortexA8 处理器设计嵌入式工业控制计算机可以实现工控机的高性能、低功耗、低成本、小体积的要求。 二、控制要求 (一) 主处理器 主频要求 400MHz,支持 DDR2 存储器,低功耗,满足工业温度条件
Ni (218) 同理,由 X3(k)和 X4(k)的周期性和 2NWm 的对称性 /4/2 /2k N kNNWW 最后得到: 基于 FPGA的 FFT算法实现 第 6 页 共 41 页 14/,1,0,)()()4/( )()()(42/3142/31 NkkXWkXNkX kXWkXkX kNkN (219) 同理可得 14/,1,0
显示面积大、性能稳定、刷新率高等特点。 论文研究内容 本课题研究了全彩色 LED 显示屏的工作原理,设计了一个基于 FPGA 的彩色 LED 点阵显示屏控制器,该控制器以上位机软件播放器中的图片和视频为数据源,在 LED 显示屏上对播放器中的内容进行实时映射。 本课题设计的主要工作如下: 1)设计了 FPGA 控制模块,完成以太网交换控制器的 GMII 接口与 FPGA 之 间的数据通信
坐标与地图块的坐标有相同的时,则马里奥与地图块相碰撞,马里奥则停止运动。 具体实现代码在之前的马里奥控制实现模块中。 蘑菇和花运动控制的实现 蘑菇是能够移动的单位,它是按照 一定移动规律来移动的,当马里奥与蘑菇碰撞之后马里奥生命值会增加并且变大,所以制作蘑菇先要设置蘑菇的属性,然后给他设置移动方法,最后再检测与马里奥是否碰撞;花是不能移动的单位,当马里奥与花碰撞之后,马里奥能够释放子弹
系列操作系统是从微软计算机的 Windows操作系统上变化而来的。 Windows mobile 系列操作系统功能强大,而且支持该操作系统的智能手机大多数都采用了英特尔嵌入式处理器,主频比较高,在其它硬件设置(如内存、储存卡容量等)上也采用其他操作系统的智能手机要高出许多,因此性能比较强劲,速度比较快。 Windows mobile 系列操作系统包括 SmartPhone 以及 Pocket
图 验证窗口 图 展现的是用户 在 非首次开启应用时弹出的验证用户信息窗口。 此通行密码为用户设置的防盗安全密码,通过此方式保证了用户设置信息的安全性。 UI窗口层为本应用软件的最顶层,此层的 UI设计好坏 决定了用户对本软件的第一印象,所以要想得到用户的肯定, 这层的设计一定要做好。 为此,在选择文字的字体、北京工业大学毕业设计(论文) 8 颜色、大小以及摆放位置做了无数次的调整,努力达到最好