野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 24214|回复: 1

stm32f4的DMA问题

[复制链接]
发表于 2021-6-22 16:42:40 | 显示全部楼层 |阅读模式
楼主在尝试用DMA来将ADC的数据搬运至外部SRAM,在使能DMA的存储地址递增功能后,发现只能在存储器基地址处更新,也就是说之前设置的DMA存储器地址指针递增功能没有起作用,在网上找了别人的代码对比,也没有发现什么不一样,想请教一下各位,楼主的DMA配置是否有问题:搬运ADC1的数据(DMA2的 channel0 stream0)到设定的数组(数组地址传入dma初始化函数)
  1. void dma_init(uint32_t ADCvalue_addr){
  2.         //使能DMA总线时钟
  3.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
  4.         //channel0 stream0
  5.         DMA_DeInit(DMA2_Stream0); //先失能。将DMA所有寄存器复位为未修改状态
  6.         while(DMA_GetCmdStatus(DMA2_Stream0) != DISABLE){ //确保DMA数据流复位完成
  7.         }
  8.        
  9.         DMA_InitTypeDef DMA_InitStructure;
  10.         DMA_InitStructure.DMA_Channel = DMA_Channel_0;
  11.         DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_ADDRESS;
  12.         DMA_InitStructure.DMA_Memory0BaseAddr = ADCvalue_addr; //ADCvalue_addr为数组名
  13.         DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;

  14.         DMA_InitStructure.DMA_BufferSize = 3;
  15.         DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //ADC读取数据仅在DR处产生
  16.         DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  17.         DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  18.         DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  19.         DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;  //仿照例子用循环模式,传输完数据后,重新将BufferSize填满
  20.         DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  21.         DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;

  22.         DMA_Init(DMA2_Stream0, &DMA_InitStructure);
  23.         DMA_Cmd(DMA2_Stream0, ENABLE);
  24. }
复制代码


仅在数组第一位更新

仅在数组第一位更新
回复

使用道具 举报

 楼主| 发表于 2021-6-24 21:15:17 | 显示全部楼层
自己回答一下:在对DMA初始化时,即使不使用FIFO模式,也要对FIFO相关的成员进行赋值,否则像我上面的代码那样(仅对FIFO模式进行了disable设置,但是threshold和burst都未设置),FIFO相关成员的值不是0,会影响其他位置的值
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-7 12:56 , Processed in 0.029275 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表