PIC16位单片机CAN(6)外部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;//输入电平变化通知中断允许位
}
PIC16位单片机外部A 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)