打印
[STM8]

使用STM8S105S写入ADC_CSR该引脚就会有一个干扰波

[复制链接]
2301|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wendyfox|  楼主 | 2010-8-10 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题如题,这样正常吗?
沙发
香水城| | 2010-8-10 18:26 | 只看该作者
请描述详细点,什么样的干扰波?  1V? 100V? ???:dizzy:

使用特权

评论回复
板凳
秋天落叶| | 2010-8-11 09:17 | 只看该作者
问题的确太宽泛了

使用特权

评论回复
地板
wendyfox|  楼主 | 2010-8-11 11:25 | 只看该作者
大约是100mv以下 时间约是50ns的尖峰波,我使用单次转换模式,每次转换通道写入ADC_CSR,采样引脚就产生一个尖峰波叠加在我输入的波型。
void Clk_Init(void)
{
CLK_CKDIVR = 0x00;           //设为16MHZ
}

void ADC_Init(void)
{
    u8 i;
    ADC_CR2   =   0x00;  
    ADC_CR1  |=   0x20;            
    ADC_CR1  |=   0x01;                   //开始启动
     i=30;
     while(i--);
}

u16 ReadAdc(u8 chn)
{
         u16 AD_Value;
u8 i;  

ADC_CSR &= 0xF0;
ADC_CSR |= (chn-1);
//ADC_CR1 |= 0x01;                   //开始启动
//i=30;
//while(i--);
ADC_CR1 |= 0x01;                   //开始转换
while(!(ADC_CSR & 0x80));   //等待转换结束
AD_Value=((((unsigned int)ADC_DRH)<<2)+ADC_DRL);
ADC_CSR &= 0x7F;                  //清除标志位
//ADC_CR1 &= ~(0x01);
return AD_Value;
}

void main()
{
u16 test;
_asm("sim");      //停止所有中断
Clk_Init();
GPIO_Init(GPIOB, ((u8)0x7F), GPIO_MODE_IN_FL_NO_IT); //需要用到0-6个通道
ADC_TDRL=0x7F;//禁用ADC端口触发器
ADC_Init();          //ADC初始化
_asm("rim");      //开启中断

while(1)
{
test = ReadAdc(1);
test = ReadAdc(2);
}
}

使用特权

评论回复
5
wendyfox|  楼主 | 2010-8-11 11:30 | 只看该作者
我以为干扰波是从外电路引入来,我断开外围电路时,用示波器测芯片引脚一写入ADC_CSR就有一个干扰尖峰出来,再测输入电路,外电路波型很正确,电源供电很平稳没有干扰,没有写入ADC_CSR就很正常。

使用特权

评论回复
6
香水城| | 2010-8-11 11:39 | 只看该作者
请问你的外电路对ADC引脚的等效输入阻抗是多少?

这个干扰波对你有多大影响?

使用特权

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

本版积分规则

16

主题

33

帖子

0

粉丝