×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-05-16 发布时间:
|
外部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;//输入电平变化通知中断允许位
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法