A/D代码初始化实例
AD1PCFG = 0; // 配置ad端口,配置所有端口为模拟端口,要是作为普通io使用必须置1
AD1CON1 = 0x2208; // 配置采样时钟源
AD1CON2 = 0; // 配置A/D 比较电压,转换在每个采样结束后开始
AD1CON3 = 0; // 配置 A/D 转换时钟 是 Tcy/2
AD1CHS = 0; // 配置输入通道,CH0+ 输入AN0,CH0- 输入 Vr- (AVss).
AD1CSSL = 0; // 输入扫描被禁止
IFS0bits.AD1IF = 0; // 清中断
IPC3bits.AD1IP2 = 1;
IPC3bits.AD1IP1 = 1;
IPC3bits.AD1IP0 = 0; // 配置 A/D中断优先级
IEC0bits.AD1IE = 1; // 使能 A/D 中断
AD1CON1bits.ADON = 1; // 打开 A/D
AD1CON1bits.SAMP = 1; // 开始采样输入
Delay(); //延时,确保开始转换时,采样的时间已结束
AD1CON1bits.SAMP = 0; // A/D采样结束,开始转换
中断
void __attribute__ ((__interrupt__)) _ADC1Interrupt(void)
{
IFS0bits.AD1IF = 0;
}
在pic的数据手册中有比较详细的例程,值得参考
MSP430
这个单片机的比较电压可以选择内部或外部的
问题:AD转换,单通道单次转化和单通道多次转换有什么区别
单次转换是指进行一次转换前需要你给一次指令。
连续转换的话开启后自动连续进行转换,转换的数据连续进行更新。
如果你采用单次转换,就需要不断发送转换的命令,读取结果,再发转换命令,再读。就是循环啦。
如果连续转换开启的话,就在程序中循环读就可以了。
STM32
在采集电池电压时遇到了问题,3.9v到4.2v的电压得到的ad转换的电压值的寄存器存储的电压值正常,3.9v以下的值不正确,发现是Vref+输入的比较电压不稳定造成的。
|