OpenEdv-开源电子网

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

ADC DMA传输问题

[复制链接]

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2012-2-14 12:13:42 | 显示全部楼层 |阅读模式

adc_init();
void adc_init()
 {             
  RCC->APB2ENR|=1<<2|1<<9; //开启PA时钟 ,以及ADC时钟
  RCC->APB2RSTR|=1<<9;//复位adc1
  RCC->APB2RSTR&=~(1<<9);//复位完成,需要将复位关闭,否则将一直保持复位    
  RCC->CFGR|=1<<15;//设置为6分频给ADC转换时钟        //读取ADC0的值
  GPIOA->ODR=1<<0;//设置PA0口为模拟上拉输入 
  ADC1->CR2|=1<<20;//允许软件外部触发   
  ADC1->CR2|=1<<19|1<<18|1<<17;//选择为软件触发
  ADC1->SMPR1=0X1c0000; //为了提高精度,1通道以及16通道
  ADC1->SMPR2=0X07; //为了提高精度,1通道以及16通道
  ADC1->CR2|=1<<23;//开启内部温度传感器
  ADC1->CR2|=1<<0;//开启转换     
  ADC1->CR2|=1<<3;//初始化复位校准寄存器 
  ADC1->CR2|=1<<8;//允许dma访问
  while(ADC1->CR2&1<<3);  //等待校准结束    
  ADC1->CR2|=1<<2;//开始校准
  while(ADC1->CR2&1<<2);  //等待校准结束
  //ADC1->CR1|=1<<5;//允许中断
  ADC1->CR2|=1<<1;//设置为连续模式
  ADC1->CR2|=1<<22;//开始转换
 ADC1->SQR3=16;  //这个表明在第一规则通道当中,进行转换的将是16通道的数据
 }
dma_init(DMA1_Channel1,(u32)&Receive,(u32)&ADC1->DR,16);
void dma_init(DMA_Channel_TypeDef*dma_number,u32 masteraddr,u32 slaveaddr,u16 number)
{
 u32 p;
p=slaveaddr;
m=number;
RCC->AHBENR|=1<<0;//打开dma时钟
dma_number->CCR|=0<<4; //从外设读取数据
dma_number->CMAR=masteraddr; //存储器地址
dma_number->CPAR=p; //做缓冲使用,外设地址
dma_number->CCR|=1<<8;//外设数据宽度为16位
dma_number->CCR|=1<<10;//存储器数据宽度为16位
dma_number->CCR|=2<<12;//dma优先级高
dma_number->CCR|=1<<5; //执行循环模式
dma_number->CCR|=(1<<0); //开启dma传输
}
void main()
{
u16 Receive,adc_dat;
//省略了前面的初始化的内容
 adc_init();
dma_init(DMA1_Channel1,(u32)&Receive,(u32)&ADC1->DR,16);
while(1)
{
adc_dat=Receive;
}
}
这是我写的读寄存器内部温度的程序,如果不用dma传输,直接读取ADC1->DR是直接可以读取到的
但是我使用DMA传输了,却读不到adc_dat,实际验证,并没有进行DMA传输,一直为0,我在初始化adc的时候,开启了dma请求的允许,在dma初始化的时候,最后也开启了dma传输!我想知道这是为什么呢,是我哪里设置错误了,为啥一直读取不到数据呢
谢谢了!

专业制作STM32 物联网通信模块板,模块交流群:369840039。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-14 12:35:14 | 显示全部楼层
参考这里:http://www.openedv.com/posts/list/1772.htm
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
 楼主| 发表于 2012-2-14 12:49:52 | 显示全部楼层
谢谢你
回复 支持 反对

使用道具 举报

14

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2013-7-14
在线时间
0 小时
发表于 2013-7-20 08:15:20 | 显示全部楼层
你的情况和我一样,最后怎么解决了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-17 13:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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