打印
[STM8]

STM8L152 ADC采集

[复制链接]
3452|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我使用的是STM8L152K4T6,现在用AIN0,也就是PA6能够采集电压。初始化程序例子如下

void ADC0_Init()
{
   CLK_PCKENR2_bit.PCKEN20 = 1;   //打开ADC的时钟
  
   PA_DDR_bit.DDR6 = 0;   //设置PA->6 为输入
  PA_CR1_bit.C16 = 0;    //设置为悬空输入
  PA_CR2_bit.C26 = 0;    //设置中断禁止
  
   ADC1_CR1_bit.RES = 0;   //设置为12位转换模式
  ADC1_CR1_bit.CONT = 0;   //设置为单次转换模式
  ADC1_CR2_bit.PRESC = 1;   //ADC时钟进行2分频
  ADC1_CR2_bit.SMTP1 = 7;    //
   ADC1_CR3_bit.SMTP2 = 7;    //384 ADC时钟进行采样一次
  ADC1_CR3_bit.CHSEL = 0;       //SELECT AIN0
   
   ADC1_CR1_bit.ADON = 1;     //使能ADC
}

可是我要用AIN7和AIN8采集怎么修改呢??也就是PC7 和 PC6做ADC检测,我先改了PC7的io设置,然后ADC1_CR3_bit.CHSEL = 7; 貌似还是不可以,仍旧是PA6在做检测的。请问要怎样改呢?
沙发
yichunshan| | 2016-11-2 12:04 | 只看该作者
把更改之后的代码发上来啊

使用特权

评论回复
板凳
qq583678156|  楼主 | 2016-11-2 12:43 | 只看该作者
yichunshan 发表于 2016-11-2 12:04
把更改之后的代码发上来啊

更改之后发上去那你是不是要给我分呀,关键是没人回答的

使用特权

评论回复
地板
mmuuss586| | 2016-11-2 16:16 | 只看该作者
你上面的代码还是PA6,正常的话按照你说的方法改就可以了;
再仔细看看是不是哪里没改到位,或者跟踪下程序是不是哪句被优化了,或者没执行到;

使用特权

评论回复
5
qq583678156|  楼主 | 2016-11-2 16:52 | 只看该作者
mmuuss586 发表于 2016-11-2 16:16
你上面的代码还是PA6,正常的话按照你说的方法改就可以了;
再仔细看看是不是哪里没改到位,或者跟踪下程序 ...

又听说是要改ADC_SQR,不知道是不是的,你确定是ADC1_CR3_bit.CHSEL就可以了吗???
如果根本不是这个寄存器的话,那就怎么改都没用了,我上面的程序是根据开发板上的C例程改的,但是没用

使用特权

评论回复
6
qq583678156|  楼主 | 2016-11-2 20:45 | 只看该作者
怎么没人回答呢?不过最后这个我还是自己看资料解决出来了

ADC1_CR3_bit.CHSEL 这个根本不是ADC通道选择的,而是analog watchdog用的
正真控制ADC通道选择的是SQR1--SQR4,例如需要选择通道8,即PD6为ADC口,就如下
/*******************************************************************************
**函数名称:void ADC8_Init()
**功能描述:初始化ADC_IN8
**入口参数:无
**输出:无
*******************************************************************************/
void ADC8_Init()
{
  CLK_PCKENR2_bit.PCKEN20 = 1;   //打开ADC的时钟

  PD_DDR_bit.DDR6 = 0;   //设置PD->6 为输入
  PD_CR1_bit.C16 = 0;    //设置为悬空输入
  PD_CR2_bit.C26 = 0;    //设置中断禁止

  ADC1_CR1_bit.RES = 0;   //设置为12位转换模式
  ADC1_CR1_bit.CONT = 0;   //设置为单次转换模式
  ADC1_CR2_bit.PRESC = 1;   //ADC时钟进行2分频
  ADC1_CR2_bit.SMTP1 = 7;    //
  ADC1_CR3_bit.SMTP2 = 7;    //384 ADC时钟进行采样一次
  ADC1_CR3_bit.CHSEL = 8;       //SELECT AIN8
  ADC1_SQR3 = 0x01;

  ADC1_CR1_bit.ADON = 1;     //使能ADC
}


a.png (103.11 KB )

a.png

使用特权

评论回复
7
laoxianccc| | 2016-11-3 22:06 | 只看该作者
这样的问题直接看datasheet肯定能解决的,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

54

帖子

0

粉丝