带8051内核的系统级ADC芯片MSC1210介绍及应用
#define PAGESIZE 0x80
char xdata*Pflashpage;定义指向此页面的指针
char xdata buffer[PAGESIZE];//在XRAM里开辟缓冲区
int main()
{char result;unsigned char i;
autobaud();//调用BootRom中子程序,自动设置波特率,与计算机通信,返回调试信息
Pflashpage=(char xdata*)PAGESTART
USEC=12-1;MSEC=12000-1; //以12MHz晶振为例,设置
………… //毫秒、微秒寄存器
for(i=0;i<pagesize;i++)//从Flash中读取一个页面到XRAM
buffer[i]=*Pflashpage++;
buffer[0]+=1; //改变首字节值以重新写入
page_erase(PAGESTART,0XFF,DATA_FLASH);//擦除页面内容,BootRom内带程序
result=0;
for(i=0;i<pagesize;i++)
result=result|write_flash_chk(pagestart+i,buffer[i],DATA_FLASH);//将修改后的数据写入,Boot Rom内带程序
3 高性能24位ADC及其应用
MSC1210内带8路24位模数转换器,自身可实现温度检测、输入源泉开路短路检测、增益和漂移校准等。内核中的32位累加器可实现24位结果的快速累加计算。
输入多路转换器将切换多路模拟输入信号到输入缓冲器。共有9路输入信号,其中1路为片内温度传感器信号,其余8路每路输入可设置单极性输入或差分输入,通过ADMUX寄存器可随意配置其输入信号的正确与负端。片内配置有模拟输入缓冲,当使用输入缓冲时,典型输入阻抗为10GΩ;当不使用模拟输入缓冲时,输入阻抗(单位为Ω)由时钟频率与增益决定:
(凹丫丫范文网fanwen.oyaya.net收集整理)
PGA的增益可以设置为2 n(n=0~7)。通过PGA的使用,可以用效提高A/D转换结果的分辨率。如输入信号幅度为40mV,设置PGA=128,最小分辨率可达75nV。PGA的模拟输入可以通过设置ODAC寄存器进行偏置,最大偏置为输入范围的一半。
ADC的转换结果存储在ADRESH(高字节)、ADRESM(中字节)、ADRESL(低字节)中,配合总和寄存器和移位寄存器,可以方便地实现多次测量结果的累加和平均。总和寄存器是1个32位的值,被分为SUMR0(LSB)、SUMR1、SUMR2、SUMR3(MSB),可以进行最大256次测量结果的累加和平均。当然,要得到测量结果的平均值,应当使累加次数和平均次数一致。通过SSCON寄存器,可以设置成以下4种工作方式。
方式0:手动累加,每次测量完毕,将测量结果写入总和寄存器,完成累加。
方式1:ADC自动累加,根据SSCON中设置的累加次数,自动将测量结果累加到总和寄存器。
方式2:手动求平均值,将总和寄存器中的值除以次数,得到测量结果。
方式3:ADC自动累加后求平均,根据SSCON中设置的累加次数,自动完成测量结果的累加后求平均值。
下面的示意代码完成ADC高精度测量过程。
《带8051内核的系统级ADC芯片MSC1210介绍及应用(第2页)》