OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5793|回复: 9

急用

[复制链接]

20

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2016-3-28
在线时间
21 小时
发表于 2016-3-28 15:03:04 | 显示全部楼层 |阅读模式
STM32F4中使用ADC1进行采样时,如何确定DMA方式下的SRAM的地址啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3340
金钱
3340
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-28 15:12:26 | 显示全部楼层
本帖最后由 likunxue 于 2016-3-28 15:17 编辑

取缓存区首地址直接付值给 DMA就行了
ADC_Buf[SZIE];   //ADC缓存区

  DMA_CHx->CMAR  =   (u32)ADC_Buf      //DMA1,存储器地址         
回复 支持 反对

使用道具 举报

20

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2016-3-28
在线时间
21 小时
 楼主| 发表于 2016-3-28 15:13:51 | 显示全部楼层
likunxue 发表于 2016-3-28 15:12
取缓存区首地址直接付值给 DMA就行了

大神,请问芯片内部的SRAM的首地址在哪里查找呀?DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)ADC1_DR_Address   是这样写吗???
回复 支持 反对

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3340
金钱
3340
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-28 15:19:11 | 显示全部楼层
lishuaiwanm 发表于 2016-3-28 15:13
大神,请问芯片内部的SRAM的首地址在哪里查找呀?DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)ADC1 ...

你定义的缓存区数组名称就是首地址
回复 支持 反对

使用道具 举报

20

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2016-3-28
在线时间
21 小时
 楼主| 发表于 2016-3-28 15:20:33 | 显示全部楼层
likunxue 发表于 2016-3-28 15:12
取缓存区首地址直接付值给 DMA就行了
ADC_Buf[SZIE];   //ADC缓存区

大神,ADC_Buf[SZIE],这个不用在头文件中声明吧,芯片定义的缓存区就是Buf[SZIE]???  谢谢谢谢
回复 支持 反对

使用道具 举报

20

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2016-3-28
在线时间
21 小时
 楼主| 发表于 2016-3-28 15:22:50 | 显示全部楼层
likunxue 发表于 2016-3-28 15:19
你定义的缓存区数组名称就是首地址

那就是我自己定义一个数组的名字和大小,然后数组默认存储在芯片内部的SRAM中?
回复 支持 反对

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3340
金钱
3340
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-28 15:27:10 | 显示全部楼层
lishuaiwanm 发表于 2016-3-28 15:20
大神,ADC_Buf[SZIE],这个不用在头文件中声明吧,芯片定义的缓存区就是Buf[SZIE]???  谢谢谢谢

你是要取外设ADC的地址或是数据缓存区地址啊! 用DMA完成 ADC转换传输,就需要两个地址嘛
一是你需要保存的数据,转换后的ADC数据, 就是数据缓存区首地址
另一个是 ADC的数据转换寄存器地址, 就是DMA读取的数据的地址

DMA_CHx->CPAR  = (u32)&ADC1->DR;                //DMA1 外设地址
回复 支持 反对

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3340
金钱
3340
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-28 15:29:03 | 显示全部楼层
lishuaiwanm 发表于 2016-3-28 15:22
那就是我自己定义一个数组的名字和大小,然后数组默认存储在芯片内部的SRAM中?

是的
回复 支持 反对

使用道具 举报

20

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2016-3-28
在线时间
21 小时
 楼主| 发表于 2016-3-28 15:32:39 | 显示全部楼层
likunxue 发表于 2016-3-28 15:27
你是要取外设ADC的地址或是数据缓存区地址啊! 用DMA完成 ADC转换传输,就需要两个地址嘛
一是你需要保存 ...

奥,我明白啦,我是想要把ADC转换后存储在寄存器里的数据通过DMA传到SRAM中去,一开始我不知道SRAM的首地址怎么定义,听你这么一说,定义一个数组就可以啦,数组的默认地址就是SRAM的首地址。对吗?
回复 支持 反对

使用道具 举报

20

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2016-3-28
在线时间
21 小时
 楼主| 发表于 2016-3-28 15:57:16 | 显示全部楼层

好的,多谢,那我只需要声明一下数组的名称和大小就可以了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 15:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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