当前位置: 首页 > news >正文

模板网站建设制作适合0基础网站开发软件

模板网站建设制作,适合0基础网站开发软件,包装设计一键生成器,东莞网站建设代理1、DMA运用场景 随着智能化、信息化的不断推进#xff0c;嵌入式设备的数据处理量也呈现指数级增加#xff0c;因此对于巨大的数据量处理的情况时#xff0c;必须采取其它的方式去替CPU减负#xff0c;以保证嵌入式设备性能。例如SD卡存储器和音视频、网络高速通信等其它情…1、DMA运用场景 随着智能化、信息化的不断推进嵌入式设备的数据处理量也呈现指数级增加因此对于巨大的数据量处理的情况时必须采取其它的方式去替CPU减负以保证嵌入式设备性能。例如SD卡存储器和音视频、网络高速通信等其它情景使用时如果仅靠CPU去处理将会消耗大量的系统资源并且可能不能满足设备实时性的要求对于嵌入式等一众资源受限的设备中这是致命的。因此有必要采取一种特殊的方式使得在执行大量数据处理过程中CPU依然去执行正常的嵌入式系统任务。 在嵌入式系统中常用DMA去解决这一问题。DMADirect Memory Access直接存储器访问是一种特殊的硬件功能用于数据传输而不需要CPU的干预。DMA主要用于高速数据传输可以提高系统性能和效率。 ①数据传输DMA可以在外设和存储器之间进行高速数据传输例如将数据从外设如传感器、音频设备、网络接口等直接传输到存储器中或者从存储器中直接传输到外设中。这样可以减少CPU的负载并提高数据传输的速度和效率。 ②音视频处理在多媒体应用中DMA可以用于将音频、视频等数据从外设传输到存储器中进行处理或者从存储器传输到外设进行播放。通过使用DMA系统可以实现高质量的音视频数据传输和处理同时降低对CPU的负担。 ③存储器处理DMA可以用于将存储器中的数据备份到外部存储设备如硬盘、闪存等或从外部存储设备中恢复数据到存储器中。这样可以提高数据备份和恢复的速度并降低对CPU的负载。 ④高速通信DMA可以用于在嵌入式系统中实现高速通信例如通过网络接口卡如以太网、串行接口如UART、SPI等传输数据。DMA可以在数据传输时绕过CPU直接在外设和存储器之间进行传输提高数据传输的速度和效率。 2、STM32 DMA基础 在STM32F4xx官方参考手册文档中有对DMA控制器的讲解说明内容十分的丰富在这一部分中将其中较为核心基础的内容进行了梳理。 直接存储器访问 (DMA) 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可供其它操作使用。 DMA搬运的三种模式 ①、内存---内存 ②、内存---外设 ③、外设---内存 DMA1外设---内存内存---外设 DMA2外设---内存内存---外设内存---内存 DMA2比DMA1多了一个内存到内存的处理功能因此如果需要实现内存到内存的DMA搬运模式必须使用DMA2。 流是数据传输的一条链路每个DMA控制器有8条独立的数据流每次传输的最大数据量为65535如果数据单位为字的话可以一次传输256KB。 通道每个数据流有8个通道选择每个通道对应不同的DMA请求。 同一个数据流只能使用一个通道同一个DMA控制器可以使用多个数据流。 仲裁器仲裁器为两个 AHB 主端口存储器和外设端口提供基于请求优先级的 8 个 DMA 数据流请求管理并启动外设/存储器访问序列。 仲裁器优先级管理分为软件优先级管理和硬件优先级管理。多个数据流到来时仲裁器会分为两个阶段进行仲裁第一个阶段为软件优先级管理在其编程时设置数据流的优先级第二个阶段为硬件阶段由数据流的硬件编号决定。 FIFO源和目标之间的一个数据中转站。FIFO模式下可以将要传输的多个数据或字节累计存储在FIFO缓冲器中然后在FIFO缓冲器中设置存储阈值当到达阈值时FIFO会自动把所有存储的数据一次性的发送到目标地址。 一个FIFO为4个字的大小每个数据流有4字的FIFODMA配置为存储器---存储器模式时FIFO由硬件开启软件控制无效。且DMA配置为存储器到存储器模式时不能设置为循环传输。 如图所示可知DMA1、DMA2控制器挂载在AHB1总线下 由STM32F4xx官方参考手册可知对于STM32F407系列其嵌入式SRAM的起始映射的地址从0x2000 0000开始。 由STM32F4xx官方参考手册可知对于STM32F407系列其嵌入式FLASH的起始映射的地址从0x0800 0000开始。 3、STM32 编程实现DMA 在这一部分的讲解梳理中将DMA配置为了内存---内存模式如果是要配置为内存---外设或外设---内存修改 DMA结构体的DMA_InitStructure.DMA_DIR参数即可。其它参数的配置的思路大致相同。 //STM32F407中const修饰的全局存储到FLASH中 const uint32_t src_const_buf[32] {0x01020304,0x05060708,0x090A0B0C,0x0D0E0F10,0x11121314,0x15161718,0x191A1B1C,0x1D1E1F20,0x21222324,0x25262728,0x292A2B2C,0x2D2E2F30,0x31323334,0x35363738,0x393A3B3C,0x3D3E3F40,0x41424344,0x45464748,0x494A4B4C,0x4D4E4F50,0x51525354,0x55565758,0x595A5B5C,0x5D5E5F60,0x61626364,0x65666768,0x696A6B6C,0x6D6E6F70,0x71727374,0x75767778,0x797A7B7C,0x7D7E7F80}; uint32_t dst_buf[32] {0}; 因为DMA配置结构体中需要填入外设/内存的地址信息所以通过打印数组的内存地址查看数据的存储位置以确定外设/内存的地址。由上述STM32F4xx的官方参考手册嵌入式FLASH和SRAM部分说明和打印出来的内存地址可知const修饰的全局变量被存储于嵌入式FLASH中。 DMA数据传输测试DMA内存到内存模式代码实现效果如下图所示通过打印的数据也可确定DMA高速存储成功且数据无误。 实现DMA存储器到存储器高速数据传输模式的参考代码Demo如下 #include stm32f4xx.h #include stm32f4xx_dma.h #include stdio.h//const修饰的全局存储到FLASH中 const uint32_t src_const_buf[32] {0xAAAAAAAA,0xBBBBBBBB,0xCCCCCCCC,0xDDDDDDDD,0xEEEEEEEE,0xFFFFFFFF,0x10000000,0x11111111,0x22222222,0x33333333,0x44444444,0x55555555,0x66666666,0x77777777,0x88888888,0x99999999,0x10000000,0x10000000,0x10000000,0x10000000,0x11111111,0x11111111,0x11111111,0x11111111,0x22222222,0x22222222,0x22222222,0x22222222,0x33333333,0x33333333,0x33333333,0x33333333}; uint32_t dst_buf[32] {0};void DMA_Config(void); int8_t buf_cmp(uint32_t *pbuf1, uint32_t *pbuf2, int len);int main(void) {NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );USART1_Init(115200);printf(starting...\r\n);printf(const addr:%X\r\n, (uint32_t)src_const_buf);printf(addr:%X\r\n, (uint32_t)dst_buf); DMA_Config();while(DMA_GetCmdStatus(DMA2_Stream0) ! DISABLE); //传输完成后,DMA会进行复位if(buf_cmp((uint32_t *)src_const_buf, dst_buf, 32)0){printf(DMA传输完成且数据无误...\r\n);printf(src:\r\n);for(int i 0; i32; i){printf(%0X\t, src_const_buf[i]);}printf(\r\n);printf(dst:\r\n);for(int i 0; i32; i){printf(%0X\t, dst_buf[i]);}printf(\r\n);return 0;}else{printf(DMA数据传输故障...\r\n); return -1;}}void DMA_Config(void) {DMA_InitTypeDef DMA_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;volatile uint32_t Timeout 10000;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);//内存到内存的传送使用DMA2DMA_DeInit(DMA2_Stream0); //初始化DMA的寄存器到复位状态while(DMA_GetCmdStatus(DMA2_Stream0) ! DISABLE); //确保DMA复位完成//配置DMA流DMA_InitStructure.DMA_Channel DMA_Channel_0; //启用DMA通道0DMA_InitStructure.DMA_PeripheralBaseAddr (uint32_t)src_const_buf; //FLASH中的数据地址DMA_InitStructure.DMA_Memory0BaseAddr (uint32_t)dst_buf; //SRAM的数据地址DMA_InitStructure.DMA_DIR DMA_DIR_MemoryToMemory; //存储器到存储器模式DMA_InitStructure.DMA_BufferSize (uint32_t)32;DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Enable; //FLASH地址自增使能DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable; //SRAM地址自增//SRAM地址自增使能DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_Word;DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_Word;DMA_InitStructure.DMA_Mode DMA_Mode_Normal;DMA_InitStructure.DMA_Priority DMA_Priority_High;DMA_InitStructure.DMA_FIFOMode DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold DMA_FIFOThreshold_Full;DMA_InitStructure.DMA_MemoryBurst DMA_MemoryBurst_Single;DMA_InitStructure.DMA_PeripheralBurst DMA_PeripheralBurst_Single;DMA_Init(DMA2_Stream0, DMA_InitStructure); //DMA初始化DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE);DMA_Cmd(DMA2_Stream0, ENABLE); //DMA使能while(DMA_GetCmdStatus(DMA2_Stream0) ! ENABLE (Timeout--0));if(Timeout 0){while(1);}NVIC_InitStructure.NVIC_IRQChannel DMA2_Stream0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority 0;NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE;NVIC_Init(NVIC_InitStructure); }int8_t buf_cmp(uint32_t *pbuf1, uint32_t *pbuf2, int len) {int cnt 0;for(int i0; ilen; i){if(pbuf1[i] ! pbuf2[i]){return -1;}}return 0; }void DMA2_Stream0_IRQHandler(void) { //DMA2通道0数据流传输完成中断 if(DMA_GetITStatus(DMA2_Stream0, DMA_IT_TCIF0) SET){//清除DMA传输完成中断标志位DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TCIF0);//在此可根据项目需求增加DMA处理完时的操作}}
http://www.dnsts.com.cn/news/235835.html

相关文章:

  • 沈阳个人网站建设选择wordpress书画
  • 基于php旅游网站开发源代码免费网站设计定制
  • 怎么查询网站的域名备案大华天途建设集团网站
  • 衡水企业网站建设费用北京做网站公司电话
  • 三桥做网站芙蓉区乡建设局网站
  • 网站可以做什么lnmp wordpress php7
  • 重庆企业网站建设哪家好网络工程师岗位
  • 针对网站做搜索引擎做优化江苏住房城乡建设部部官方网站
  • 电子商务网站开发语言占比网站建设太金手指六六十一
  • 一元云购网站建设教程苏州网站开发电话
  • 北京汽车业务网站开发公司海淀网站设计
  • 手机网站智能建站河南旅游网站建设
  • 网站建设 锋云科技公司贵阳网站建设技术支持
  • 做网站的电脑拍个宣传片大概要多少钱
  • 网站建设问题清单wordpress产品页路径在哪儿
  • 东城区网站排名seo电子商务网站建设培训课件
  • 网站如何做等级保护网站站点
  • 做网站赚大钱网站建设岗位能力
  • 网站本地环境搭建软件四川seo推广方案
  • 做详情页生成代码的网站wordpress登陆密码
  • 信阳高端网站建设手机网站建站平台
  • 网站设计视频苏州专业网站建设
  • 网站营销的特征有wordpress本地访问速度慢
  • 织梦做的网站怎样网站系统应怎么做会计分录
  • 哈尔滨做网站费用网站喜报怎么做
  • WordPress微说网站seo快速排名优化的软件
  • 如何做好电商网站平面设计赣州信息港主页
  • 网站名加引号网站后台工程师
  • 网站导航大全服装效果图网站
  • 建设部166号令住建部网站外贸长尾关键词挖掘网站