STM8L ADC采样奇怪现象

rtsy2018 2019-04-27 07:24:04
请教大家,下面程序中,我只用通道1时能正常采集 ,只用通道2时也能正常采集,但是如果同时使用通道1和通道2时,通道1和通道2显示的数据为通道2的数值,通道1 就不能正常采集,这个问题出在什么地方呢?程序如下


uint8_t ADC_CH;
uint16_t ADCdata1;
uint16_t ADCdata2;

uint16_t ADC_GetCh1(uint8_t ch)
{ uint16_t tmpreg = 0;

ADC1_CR1_bit.ADON = 1; //唤醒ADC
ADC1_SQR4_bit.CHSEL_S1 =1; //设置通道1有效
//ADC_ITConfig(/*ADC1, */ADC_IT_EOC, ENABLE); //设置ADC采样中断
ADC1_CR1_bit.START = 1; //启动转化

while(ADC1_SR_bit.EOC == 1); //等待转换结束
tmpreg = (uint16_t)(ADC1_DRH);
tmpreg = (uint16_t)((uint16_t)((uint16_t)tmpreg << 8) | ADC1_DRL);
ADC1_SR_bit.EOC = 0; //清除中断标志

ADC1_CR1_bit.ADON = 0; //关闭 ADC
ADC1_SQR4_bit.CHSEL_S1 =0; //清除设置通道1

return tmpreg;
}


uint16_t ADC_GetCh2(uint8_t ch){
uint16_t tmpreg = 0;

ADC1_CR1_bit.ADON = 1; //唤醒ADC
ADC1_SQR4_bit.CHSEL_S2 =1; //
//ADC_ITConfig(/*ADC1, */ADC_IT_EOC, ENABLE); //设置ADC采样中断
ADC1_CR1_bit.START = 1; //启动转化

while(ADC1_SR_bit.EOC == 0); //等待转换结束
tmpreg = (uint16_t)(ADC1_DRH);
tmpreg = (uint16_t)((uint16_t)((uint16_t)tmpreg << 8) | ADC1_DRL);
ADC1_SR_bit.EOC = 0; //清除中断标志

ADC1_CR1_bit.ADON = 0; //关闭 ADC ADC_Cmd(/*ADC1,*/ ENABLE);
ADC1_SQR4_bit.CHSEL_S2 =0; //清除设置通道2

return tmpreg;
}

int main( void )
{ u16 adc1 = 234;
u16 adc2 = 587;


CLK_CKDIVR = 0x00; //内部时钟为1分频 = 16Mhz

OLED_AInit(); //OLED显示初始化

CLK_PCKENR2_bit.PCKEN20 = 1; //打开ADC的时钟

PA_DDR_bit.DDR4 = 0; //设置PA->4 为输入
PA_CR1_bit.C14 = 0; //设置为悬空输入
PA_CR2_bit.C24 = 0; //设置中断禁止

PA_DDR_bit.DDR5 = 0; //设置PA->5 为输入
PA_CR1_bit.C15 = 0; //设置为悬空输入
PA_CR2_bit.C25 = 0; //设置中断禁止

ADC1_CR1_bit.RES = 0; //设置12位分辨率
ADC1_CR1_bit.CONT = 0; //设置为单次转换模式
// ADC1_CR1_bit.CONT =1 ; //设置为连续转换模式
ADC1_CR2_bit.PRESC = 1; ////ADC时钟进行2分频
ADC1_CR2_bit.SMTP1 = 7; //

while(1)
{ adc1 = ADC_GetCh1(1); //ADC1采样函数
adc2 = ADC_GetCh2(2); //ADC2采样函数

OLED_ShowcADC1(adc1);
OLED_ShowcADC2(adc2);
}
return 0;
}
...全文
432 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yishumei 2019-04-29
  • 打赏
  • 举报
回复
楼主,你的OLED显示刷新时间是多少?显示刷新过快就会只看到通道2的采样值。 可以调换一下次序 OLED_ShowcADC2(adc2); OLED_ShowcADC1(adc1); 看看是不是只显示通道1的采样值。
rtsy2018 2019-04-27
  • 打赏
  • 举报
回复
采样1
显示1
采样2
显示2试试 刚试了下,不行,可能不是时间上的事
前行者001 2019-04-27
  • 打赏
  • 举报
回复
采样1 显示1 采样2 显示2试试

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧