微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC16位单片机CAN(6)外部AD

PIC16位单片机CAN(6)外部AD

时间:11-13 来源:互联网 点击:
外部AD使用的是AD7170 具体的资料看datasheet。简单说一下这个AD的注意事项。

AD7170是一款低功耗ADC,片内集成精密12位Σ-Δ调制器和数字滤波器,用于测量宽动态范围、低频信号。该器件具有一个内部时钟和一路差分输入,输出数据速率为125 Hz,增益为1。双线式接口可简化从AD7170获取数据的过程。

简单一句话。一个时钟输入,一个串行转换输出。模拟输入为双极性输入。

时钟和串行数据输出就不多说了,看看时序就知道了。重点看一下什么叫做双极性输入。

AD7170支持双极性输入范围。双极性输入范围不代表器件可以耐受相对于系统GND的负电压。AIN(+)输入端的信号以AIN(?)输入端的电压为基准。例如,当使用2.5 V基准电压时,如果AIN(?)为2.5 V,则AIN(+)输入的模拟输入范围为0 V至5 V。

重点是数据输出编码!!!

当ADC的输入设为单极性输入时,ADC的输出码是直接二进制形式。以16位ADC为例,当输入为0V时,输出码是0x0000;当输入是一半量程时,输出码为0x8000;当输入为满量程时,输出为0xFFFF。

如果ADC的输入是双极性的,那么ADC的输出码为偏移二进制形式,以16位ADC为例,当输入为负的满量程,输出码为0x0000;当输入为0V,输出码为0x8000;当输入为正的满量程,输出为0xFFFF。

具体的编码输出可以看datasheet说明。提倡看英文版的,因为中文版的易出错!

根据datasheet,我使用引脚电平变化中断来确定什么时候AD转换完成。

void __attribute__((__interrupt__,no_auto_psv)) _CNInterrupt(void)

{

IFS1bits.CNIF=0;//输入电平变化通知中断标志状态位

IEC1bits.CNIE=0;//输入电平变化通知中断允许位

if(PORTAbits.RA1==1)

{

Nop();

}

else

{

AD_Data=AD_ReadData()/2;

}

IEC1bits.CNIE=1;//输入电平变化通知中断允许位

}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top