智能车制作

标题: 为什么XS128的AD采样精度为12位的话最大只能采集到2.5v电压,10位采样就精度正常 [打印本页]

作者: 割麦子    时间: 2013-7-31 22:01
标题: 为什么XS128的AD采样精度为12位的话最大只能采集到2.5v电压,10位采样就精度正常
参考电压是5v的,设置12位的采样精度采到2.5v之后电压就归零了。。这是什么情况,寄存器设置如下:
void AD_Init(void)
{

   
    ATD0CTL4 = 0x00;      
    ATD0CTL3 = 0xC0;   
    ATD0CTL0 = 0x0F;      
    ATD0CTL1 = 0x4F;        设置采样精度为12位         
    ATD0CTL2 = 0x40;
   


}


如果设置成下面就是正常的,可以采到5v:
void AD_Init(void)
{


ATD0CTL4 = 0x00;
ATD0CTL3 = 0xC0;
ATD0CTL0 = 0x0F;
ATD0CTL1 = 0x3F; 设置采样精度为10位
ATD0CTL2 = 0x40;



}




作者: 君啸凤舞    时间: 2013-8-1 07:36
void ATD_init(void)
{
   ATD0CTL1=0x40;    //12位采样精度
   ATD0CTL2=0x40;    //下降沿触发,禁止中断
   ATD0CTL3=0x98;    //采样结果右对齐,转换序列长度为3
   ATD0CTL4=0x03;    //fATDCLK=fBUS/(2*(PRS+1))=4MHz,即0.25us(转换时间);采样时间1us
   ATD0CTL5=0x30;    //禁止特殊通道;连续转换;多通道采样
   ATD0DIEN=0x00;    //禁止数字输入
}
这个可以的。。总线频率为32Mhz
作者: 割麦子    时间: 2013-8-4 19:51
君啸凤舞 发表于 2013-8-1 07:36
void ATD_init(void)
{
   ATD0CTL1=0x40;    //12位采样精度

谢谢哈~已经解决了
作者: 珍and简简单单    时间: 2014-4-3 16:23
怎么改的啊
作者: 割麦子    时间: 2014-4-24 19:31
珍and简简单单 发表于 2014-4-3 16:23
怎么改的啊

不是寄存器设置的问题,是我的数据类型太小,导致溢出了





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2