一种新型单片机MSC1210及其应用_单片机论文
关键词:msc1210 adc pga flash
实际应用系统往往需要进行高精度的测量,同时还必须进行实时快速控制,提高其开发效率。为此人们常采用高精度a/d芯片加带isp开发功能的单片机系统来实现。德州仪器(ti)的msc1210单片机解决了上述问题。它集成了一个增强型8051内核、高达33 mhz的时钟周期、8路24位高精度∑-△a/d转换器、flash存储器等,其系统功能和结构框图如图1所示。
msc1210具有以下主要特性:
◇ 3个16位的定时器,16位pwm波输出;
◇ 多达21个中断源;
◇ 32个数字输入/输出端口,带有看门狗;
◇ 8路adc提供24位分辨率可编程的无丢失码解决方案;
◇ 可编程增益放大(pga)在1~128之间可调,极大提高了adc精度;
◇ 供电电源2.7~5.25 v,在3 v时功耗低于4 mw,停止方式电流小于1μa;
◇ 内核兼容8051,指令与8051完全兼容,可以使用原有8051开发系统;
◇ 时钟频率可达33 mhz,单周期指令执行速度达8 mips,执行速度比标准8051快3倍;
◇ 高达32 kb的flash存储器,sram达1.2 kb,外部可扩展至64 kb存储器;
◇ flash在电压低达2.7 v时仍可串行或并行编程,可10万次擦除/写操作;
◇ 具有32位累加器;
◇ 有电源管理功能,能够进行低电压检测,在片上电复位;
◇ 带fifo的spi端口,双uart;
◇ 64tqfp封装,msc1210系列的硬件和引脚完全兼容,必要时可以互换。
图1 系统结构和功能框图
1 内核兼容8051但速度更快功能更强
msc1210系列的所有指令功能与标准8051相同,对位、标志和寄存器的影响相同,但时序不同。msc120单片机使用精简的8051内核,在同样的外部时钟作用下,其执行速度比标准8051快1.5~3倍(每条指令有4个时钟周期与12个时钟周期的区别)。在同样的指令和时钟下,速度提高到2.5倍以上。因此,一个时钟为33 mhz的msc1210执行速度与一个时钟为82.5 mhz的标准8051相同,其区别可以从图2看出;而且msc1210的定时器和计数器可以选择每12个或4个时钟周期计数一次。
msc1210提供了双数据指针(dptr)加速数据块的移动速度,它能根据外部存储器的速度调节读写速度,在2~9个指令周期之间变化;它还提供给外部存储器16位地址总线(p0和p2)。低位地址通过p0口复用得到,硬件可以控制p0和p2口是作为地址线还是作为通用的i/o。
为了更好地提高效率,外围设备也在8051基础上作了改进。如spi端口就增加了fifo,使得传输数据有了缓冲区间。32位累加器的使用在处理adc采样或其它数据源来的多字节数据时将大大减轻cpu的负担,使得24位加法和移位可以在几个指令周期内完成,而无需通过软件用数百个指令周期来完成。
msc1210系列的硬件和引脚完全兼容,对用户而言,唯一的区别在于内存配置不同。msc1210y2上编写的程序代码可以直接在msc1210y3、msc1210y4、msc1210y5上执行。用户可以在软件功能上增减并配以不同的cpu型号,msc1210已成为一个拥有几个不同应用平台的标准设备。
msc1210的开发工具与8051的开发系统完全兼容,用户可以使用原有的8051开发系统,也可以使用demo板带的开发系统或者第三方支持者提供的开发工具。
2 24位高分辨率adc通道
(1)adc的输入多路复用器及输入缓冲
输入多路复用器允许不同输入信号通过选择输入通道进行组合,如ain0被选为adc输入正端,其它任何通道可以选为adc输入负端。用这种方式可以组成8个完整的adc输入通道,也可以在差分输入通道间切换极性。片上的二极管可以提供温度测量,当输入多路复用器的寄存器置为全“1”时,二极管被接入adc通道的输入端开始测量温度。
msc1210在没有缓冲区时输入电阻为5m/pga,缓冲区由adc控制寄存器中的buf位控制。当没有选择输入缓冲区时,模拟输入阻抗与时钟频率(aclk)和增益(pga)有关,其关系式为
其模拟输入通道的等效结构如图3所示。
(2)可编程增益放大器pga
① pga:可编程增益放大pga可以设为1、2、4、8、16、32、64、128,使用pga确实能提高adc的分辨率。当pga=1,量程范围为5 v时,adc能分辨到1μv;当pga=128,量程范围为40 mv时,adc能分辨到75 nv;而在pga=1时,在5 v量程范围内需要一个26位的adc才能分辨到76 nv。
② pga偏移dac:odac寄存器是8位,它能将输入到pga的模拟信号偏移pga满量程的一半,其最高位为符号位,低7位提供偏移量。由于odac给pga引入的是模拟量而不是数字量偏移,所以并不影响测量结果的精度。
(3)电压参考基准
msc1210的电压参考可以是内部的也可是外部的,上电复位以后的电压参考是内部的2.5 v,参考电压的选择通过adcon0控制。片上内部参考电压有1.25 v和2.5 v两种可选,其精度可达0.2 %,温漂仅为5×10-6/℃,可大大提高测量精度。如果没有用到内部参考电压,就应该将其关掉以减少噪声和功耗。vrefout引脚处应该放一个0.1μf去耦电容。外部参考电压为ref in+与ref in-之间的差值,引脚上的绝对电压在agnd与avdd之间,但其差分电平不能超过2.6 v。
3 片内存储器
msc1210包括片上1.2 kb sram ,256字节daram,2kb启动rom,32 kb flash存储器。
msc1210用内存寻址表来区分程序存储空间和数据存储空间。程序空间由单片机自动读取,通过指令movc来读程序空间;数据空间通过指令movx来读写。当片上存储使能时,在片内范围内的读写将在片内存储器上进行,片外存储器通过p0和p2寻址来实现。hcr1寄存器的第0位和第1位设为0就可以访问外部存储器,此时可以通过p0和p2口访问所有片内和片外存储空间。为了安全起见,在访问片内存储器期间,p0口全部置位为0。
msc1210包含1.2 kb片上sram。sram起始地址位“0”,通过movx指令读写。sram也可以从8400h开始,既可作程序空间又可作数据空间。
msc1210有256字节daram,地址为0000h~00ffh,其中128字节为128个sfr,地址为0080h~00ffh。sfr寄存器用做控制和状态,标准的8051功能和msc1210的附加功能是通过sfr实现的。从没有定义的sfr寄存器将得到“0”,写入没有定义过的sfr得到的结果无法确定。daram的另一个用途,是通过sfr的堆栈指针作为堆栈使用。
在串行或并行编程时,有2kb启动rom控制运行。在用户模式下,boot rom位于f800h~ffffh;在编程模式下,boot rom位于程序空间的起始2k。
flash存储器既可用做程序存储空间又可用做数据存储空间,用户可以灵活配置程序和数据存储空间的大小。分区大小通过硬件配置位来确定,可以通过串行或并行的方式来编程确定。在用户应用模式下,程序和数据flash存储空间都可读可写。
4 flash编程应用
可编程的flash存储器分为4个部分:128字节的配置部分、复位向量、程序存储空间、数据存储空间。
flash编程模式有串行和并行两种模式,通过上电复位过程当中的ale和信号状态确定。当ale=1,=0时,选择串行编程模式;当ale=0,=1时,选择并行编程模式。当ale和都为高电平时,msc1210运行在用户模式下;当ale和都为低电平时,msc1210没有定义。
msc1210的flash存储器初始值全部为“1”,并行编程模式包括一个专用的编程器,串行编程方式通常为在线编程,用户应用模式允许对flash程序和数据存储器编程。对flash编程的实际代码不能从flash执行,而必须从boot rom或ram处开始执行。
msc1210有两个硬件配置存储器(hcr0、hcr1),在flash编程模式下可编程。用户通过对这两个存储器编程可以在程序存储空间(pm)和数据存储空间(dm)之间定义分区,如表1所列。
表1 msc1210的flash分区
hcr0 | msc1210y2 | msc1210y3 | msc1210y4 | msc1210y5 | ||||
dfsel | pm/kb | dm/kb | pm/kb | dm/kb | pm/kb | dm/kb | pm/kb | dm/kb |
000 | 0 | 4 | 0 | 8 | - | - | - | - |
001 | 0 | 4 | 0 | 8 | - | - | 0 | 32 |
010 | 0 | 4 | 0 | 8 | 0 | 16 | 16 | 16 |
011 | 0 | 4 | 0 | 8 | 8 | 8 | 24 | 8 |
100 | 0 | 4 | 4 | 4 | 12 | 4 | 28 | 4 |
101 | 2 | 2 | 6 | 2 | 14 | 2 | 30 | 2 |
110 | 3 | 1 | 7 | 1 | 15 | 1 | 31 | 1 |
111(缺省) | 4 | 0 | 8 | 0 | 16 | 0 | 32 | 0 |
注:当程序空间选择0kb时,程序在片外执行;"一"表示保留。
用户可以通过movx指令来读写flash存储器,而不论flash存储器是被定义为程序存储器还是数据存储器。这意味着用户可以将全部空间分为程序存储空间,并将程序空间当数据存储空间用。当pc指针指向的程序空间实际上存放的是数据时,将会导致不可预知的后果。因此,当要用flash存储数据时,一定要求使用flash分区,flash分区禁止在数据存储空间执行程序。同样,也禁止程序空间的擦写而允许在数据存储空间读写。
5 结 论
msc1210作为一款高性能的内核兼容8051的单片机,其开发的方便、灵活和高精度adc的使用满足了使用者的要求,其指令执行速度更是实时系统所渴求的,可广泛用于工业过程控制、医疗仪器、智能传感器等各个领域。