普通的51单片机工作在12MHz时,指令周期为1μs,而访问外部空间需要2μs,实现数据采集时速度不会达到500ksps。DALLAS的 DS80C320与80C32兼容,但速度更快,工作在12MHz时指令周期为1/3μs,而且它的工作频率可达到33MHz,可用于高速数据采集。
1 DS80C320的相关寄存器
DS80C320内部增加了一些特殊功能寄存器,其中有一个影响着外部数据访问速度:CKCON(8EH)。它的低三位(MD2、MD1、MD0)决定着访问外部数据消耗的时钟数及选通信号的宽度,它们的关系如表1所列。
CKCON(8EH) | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
WD1 | WD0 | T2M | T1M | T0M | MD2 | MD1 | MD0 |
表1
MD2 | MD1 | MD0 | 指令周期/个 | 选通信号时钟数/个 | 选通信号脉宽/ns |
0 | 0 | 0 | 2 | 2 | 80 |
0 | 0 | 1 | 3 | 4 | 160 |
0 | 1 | 0 | 4 | 8 | 320 |
0 | 1 | 1 | 5 | 12 | 480 |
1 | 0 | 0 | 6 | 16 | 640 |
1 | 0 | 1 | 7 | 20 | 800 |
1 | 1 | 0 | 8 | 24 | 960 |
1 | 1 | 1 | 9 | 28 | 1120 |
DS80C320 外部数据访问(MOVX)指令默认为3个指令周期,即上电复位时MD0为1,改变MD2-0的值可以改变访问速度,MD2-0不是直接寻址位,需要对字节(CKCON)进行操作。另外,DS80C320有两个数据指针,通过DPS寄存器的位来选择,进行数据埠移动时很方便。默认的数据批奖勤罚懒为 DPTR(82H,83H)。
2 高速采集应用实例
图1 所示电路采样速度可达到1Msps,可以以速度连续采集256个数据。采集的数据放入双口RAM,低速总线可以从双口RAM另一端读出数据,因为双口RAM的两个端口可独立操作,故高、低速总线互不影响(这里只谈高速总线的工作情况,故图中没有画出低速部分的电路)。在高速应用时,器件的选择很重要。单片机为DS80C320,工作温度范围为-40~85℃;时钟选用24MHz晶振;A/D器件采用AD7822,为8位,转换时间为 420ns;地址锁存为74F373,D到Q端延时为8ns(74HCT373为44ns);程序存储器为W29C020-90,取数时间为90ns;数据存储器为256字节的双端口RAM DS1609(35ns)。此电路的连线也有些特别;ADC的启动信号与单片机的写信号相连,即单机同执行写操作就开始A/D转换,同时把上次转换的结果写入双口RAM;AD7822的CS端直接接地,免去选通信号(这种用法在AD7822数据手册里有介绍);AD7822的Vmid连接到 Vref(2.5V)上,此时输入电压范围为1.25~3.75V,改变它们的连法可以改变输入电压范围;AD7822的EOC悬空,即不检查忙标志,严格控制时序即可。从时序上可以看到:从启动信号(WR)到读数据(RD)要至少13个振荡周期,对24MHz来说就是520ns,这比AD7822的转换时间要长,因此可以得到有效的数据。
A/D 转换过程是一个循环过程。首先,执行一条写指令,WR信号触发了A/D转换的开始。然后,用两条NOP指令进行延时,进入循环体后,先读取上次转换的结果,接着保存数据;同时,也启动下转换。接下来的循环控制指令,用来计数,同时改变目的地址,使采集要到的数据从高到低依次放大RAM的256个单元里。采集过程的子程序如下:ADC:MOV DPTR,#0100H
MOVX @DPTR,A ;开始转换
NOP
NOP
LOOP:MOVX A,@DPTR ;读数据
MOVX @DPTR,A ;保存数据,开始下转换
DJNZ DPL,LOOP ;数据指针递减、循环
若MOVX指令时间为2个周期,则以上循环周期刚好6个指令周期(24个振荡周期),为1μs,即可达到1Msps的采集速度。DS80C320的 MOVX指令时间默认值为3个周期,要改变MD2-0使MOVX指令时间变为2个周期,在执行A/D转换前要对MD2-0进行初始化,执行指令:
ANL 8EH,#11111000B
数据采集过程的时序如图2所示。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。