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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版