概述
描述
C8051F396中ADC具有最大500ksps转换速度,10bit逐次逼近的寄存器
配置
时钟配置:
ADC时钟根据系统时钟分频确定,通过配置ADC0CF 寄存器的 AD0SC bits来确定
对齐方式:
左对齐或右对齐,通过配置ADC0CN寄存器的 AD0LJST bits来确定,一般右对齐
AD0LJST = 0:右对齐
AD0LJST = 1:左对齐
数据存放位置:
ADC0H与ADC0L寄存器存放数据的高低位
多种开启转换方式
配置 ADC0CN寄存器AD0CM [2:0] 位
000: ADC0CN寄存器AD0BUSY位置一触发
001:定时器0溢出触发
010:定时器2溢出触发
011:定时器1溢出触发
100: CNVSTR输入引脚上升沿触发 //用户配置IO,PS:跳过交叉编译器
101:定时器3溢出触发
110:定时器4溢出触发
111:定时器5溢出触发
用户可自定义ADC采集,通过软件控制向ADC0CN寄存器AD0BUSY位写1,在采集期间,AD0BUSY位状态为1,采集完成后自动复位为0;
可配置AD0BUSY位下降沿触发中断;ADC中断标志AD0INT;
在使用轮询ADC时,应启用ADC中断标志;
采集保持模式
ADC0CN寄存器AD0TM位控制,除了在转换期间,ADC输入被持续采集;
AD0TM 置1:ADC0工作在低功耗采集保持模式下,在开始转换前有三个SAR 时钟周期来采集;
当使用 用户配置IO CNVSTR信号在低功率采集模式下启动转换时,ADC0仅在CNVSTR较低时进行采集,在CNVSTR IO上升沿开始转换;
当设备处于低功耗待机或休眠模式时,跟踪被关闭;
PS:当AMUX设置频繁更改时,低功率采样-保持模式也很有用
需求时间
在每次转换之前都需要一个最小的采集时间,以确保执行精确的转换;采集时间由AMUX0电阻,ADC采样电容,外部电源电阻决定;最小采集时间为三个SAR 时钟周期
PS:在低功率采集模式下,每次开始转换前用三个SAR 时钟周期采集
时间计算:
SA:采集精度
RTOTAL :AMUX0 电阻和所有外部电阻的和
n :ADC的分辨率(10)
可编程窗口检测
ADC可编程窗口检测器持续地将ADC0输出寄存器与用户编程的阈值进行比较,并在检测到所需条件时通知系统,非常适合中断系统,节省代码空间和CPU消耗,并提供更快的系统响应时间。
窗口检测中断标志(ADC0CN寄存器中的AD0WINT位)也可以在轮询模式中使用;
ADC中大于(ADC0GTH, ADC0GTL)和小于(ADC0LTH, ADC0LTL)寄存器存储比较值,窗口检测中断标志可以配置为在设定的范围内或范围外置位,取决于ADC的小于寄存器和大于寄存器
寄存器
ADC配置寄存器 :ADC0CF
ADC高字节数据存储寄存器:ADC0H
ADC低字节数据存储寄存器:ADC0L
ADC控制寄存器:ADC0CN
函数
void ADC0_Init (void)
{
ADC0CN = 0x02; //关闭ADC,普通采集模式
// 定时器2溢出开始转换
REF0CN = 0x0B; // VDD 作为ADC的电压参考
// 使能片上参考缓冲, 在VREF引脚驱动内部电压基准
AMX0P = 0x07; // ADC0 positive input = P1.7
AMX0N = 0x11; // ADC0 negative input = GND
// i.e., single ended mode
ADC0CF = ((SYSCLK/8000000)-1)<<3; // Set SAR clock to 8MHz
ADC0CF |= 0x00; // 右对齐
EIE1 |= 0x08; // 开启ADC采集完成中断
ADC0CN_ADEN = 1; // 开启ADC
}
void Timer2_Init (void)
{
TMR2CN = 0x00; // 关闭 Timer2; 清除中断 TF2;
// Use SYSCLK as timebase, 16-bit
// 自动重装载
CKCON |= 0x10; // Select SYSCLK for timer 2 source
TMR2RL = 65535 - (SYSCLK / 10000); // 初始化重装载值为10 us
TMR2 = 0xffff; // 立即重新加载
TMR2CN_TR2 = 1; //开启 Timer2
}
void PORT_Init (void)
{
XBR0 = 0x01; // 开启USART
XBR1 = 0x40; // Enable crossbar and weak pull-ups
P0MDOUT |= 0x10; // TX引脚推挽输出
P0MDIN &= ~0x80; // P0.7 模拟输入
}
最后
以上就是纯情镜子为你收集整理的C8051F396 ADC操作描述的全部内容,希望文章能够帮你解决C8051F396 ADC操作描述所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复