你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407 定时器触发DMA 求助大神

[复制链接]
东方树叶乌龙茶 提问时间:2016-7-21 14:09 /
本帖最后由 东方树叶乌龙茶 于 2016-7-21 14:11 编辑

求助大神们,现在想用定时器触发DMA,将一个地址里的数据转移到数组里。每1us转移一次,一共转移30次。也就是说源地址不变,目标地址递增。这个数组最终用了30us存入30个数据。
DMA的配置:
  DMA_InitTypeDef       DMA_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
       
  DMA_InitStructure.DMA_Channel = DMA_Channel_7;  
  DMA_InitStructure.DMA_PeripheralBaseAddr =ADDRESS;//设置DMA源
  DMA_InitStructure.DMA_Memory0BaseAddr = DMA_Address;//(uint32_t)&Answer_Frame[5];//内存地址
  DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToMemory;//方向:内存到内存
  DMA_InitStructure.DMA_BufferSize = 1;//传输大小
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外设地址不增
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//内存地址自增
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//外设数据单位
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//内存数据单位
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;//正常模式,只做一次DMA传输
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;//优先级:高
  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;      
  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  DMA_Init(DMA2_Stream1, &DMA_InitStructure);

问题是:
BufferSize设置为30,则触发一次后30个数据就全转移完了。
BufferSize设置为1,就只能在数组第一位存入数据其余全是空白的了。
Mode设成Circular也是不对的。定时器那里我只是加了一句:TIM_DMACmd(TIM8,TIM_DMA_Update,ENABLE);
是要定时中断服务程序里面再写什么吗?还是STM32F4的DMA没法直接配置成我想要的这种形式?
请各位大神予以指点!谢谢

1 收藏 评论3 发布时间:2016-7-21 14:09

举报

3个回答
东方树叶乌龙茶 回答时间:2016-7-21 17:05:26
然后自己解决了....
MemoryToMemory模式不能设置请求源,DMA会直接以总线速率将数据转移。所以要用外设到内存模式
长风破 回答时间:2016-11-20 19:46:38
哥们,你的问题解决了吗?是触发一次传一个数据还是一下子全转移完?还有数据个数是怎么设置的?是1还是30?
遇春 回答时间:2024-4-8 14:57:30

东方树叶乌龙茶 发表于 2016-7-21 17:05
然后自己解决了....
MemoryToMemory模式不能设置请求源,DMA会直接以总线速率将数据转移。所以要用外设到内 ...

佬,能问下为啥memory to memory 不能被请求啊,是因为产生一个定时器中断也可以在中断处理函数里面进行memore to memory 所以不用DMA多次一举吗。佬,这个不能被请求是从哪里看到的呀

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版