PC机直接存取单片机内存技术
单片机以体积小、价格......
单片机以体积小、价格低、抗干扰性能好等优点在智能仪器、测控系统等方面被广泛应用,但其数据处理能力和工具的丰富程度却远不及个人
计算机。因此在研制高速数据采集分析系统时,取二者之长,即以单片机为核心构成便携式测量子系统,测得的数据存于带后备电池的RAM中(
其容量可通过单片机片外数据存储器扩展技术扩展至几兆甚至几十兆字节);然后通过数据通信传输到PC机中进行后续处理,也可长期保存在
磁盘中。
1 PC机与单片机之间的传统通信方式
PC机与单片机之间常规的通信手段一般有串行通信和并行通信。但当传输的数据很大时,若采用常规的串行传输手段:单片机映象数据存
储区——单片机CPU——串行通讯链路——PC机CPU——磁盘,则会因效率太低而使其实用性大为降低,设波特率为4800,则8兆字节数据量仅
通过串口所需时间约为5小时,即使改用并口通讯,数据经上述流程时每传送一个字节也需PC机和单片机各上百个时钟周期,当数据量达到几
十兆时,传输时间长得惊人。这不符合实际需要,而且无论串行通讯还是并行通讯都要占用PC机资源,给工作带来诸多不便。
2 单片机内存DA(Direct Access)存取概念
IBM-PC系列微机在进行大量数据传输时,为提高速度和效率通常采用存储器直接存取(DMA)转送方式。DMA转送的基本特点是不经过CPU,
不破坏CPU内各寄存器内容,在DMA控制器控制下直接实现存储器与I/O设备之间的数据传送,PC机用DMA方式传送一个字节通常只需一个总线周
期,即5个时钟周期1.05μs,CPU内部只是暂停这个总线周期的指令操作,指令的操作次序不会被破坏。故DMA方式特别适合外部设备与存储器
之间成批数据的高速传输。IBM-PC系统中存储器与磁盘之间即是采用DMA方式进行数据传输。
参照PC机DMA传送特点,在单片机与PC机构成的数据传送系统中,将PC机看作单片机的外部设备,其CPU为“DMA控制器”。在数据传输过
程中无须单片机CPU参与,由PC机CPU直接读取单片机数据存储区,通过PC机闲置口地址实现数据传输,这样不但能够保持PC机指令次序不被破
本文有[www.0574-laser.com]提供,请及时关注[www.0574-laser.com]提供的内容
坏从而减少在传输过程中因外界干扰而引起的数据混乱和丢失,更主要的是能显著提高传输速度。利用直接存取方法在MCS系列单片机与PC机
之间传输8兆字节数据可在30秒内完成,其效果十分明显。
本文有[www.0574-laser.com]提供,请及时关注[www.0574-laser.com]提供的内容
3 硬件实现
要实现PC机直接存取单片机映象存储区,需通过相应的接口电路在物理上将PC机与单片机映象存储区连接起来。接口电路原理如图1所示
。
图中浮动寻址模块由比较器和拨动开关组成,选定用于数据传送的PC机I/O口地址;地址锁存模块由3片74LS373构成,用于锁存PC机8位数
据线以形成读取单片机映象存储区所需的地址线。当PC机存取单片机映象存储区时,采用机械式数据通道缓冲器隔离单片机对该存储区的控制
以避免主机与单片机在总线上发生冲突。根据需要,数据缓冲也可采用光电隔离或软件手段实现,如果PC机读取数据时以及读取数据后均无须
单片机参与工作,则采用机械式数据通道缓冲最为简单可靠,本文所述即是这种情况。
图1 接口电路原理简图
4 数据传输的软件实现
由于PC机直接存取单片机数据存储区,整个传输过程无须单片机参与,通讯控制完全由PC机完成,因而软件编写非常方便简单,这是本方
法的又一显著优点。传输软件可用任一种编程语言编写,框图如图2所示。下面是用C语言开发的PC机存取单片数据区的源程序:
#include
……
int x;
unsigned int i,j;
FILE *fp;
Char s[10]
Printf(“请输入文件名:”);
Scanf(“%s”,s);
If((fp=fopen(s,“WB”))==NULL) exit (0);
/* 初始化 /
outportb (0x300,0x52);
/*传输数据循环*/
for(I=0x55;I<=0xff;I++)
{ outportb(0x301,i);
for(j=0;j<=0xff;j++);
{ outportb (0x302,j);
x=inportb(0x303);
fprintf(fp,”%d”,x);
}
} fclose(fp);
……
图2 软件框图
5 结论
本文从PC机DMA思想出发,针对数据采集应用中主机与前端单片机之间成批数据高速场合提出了PC机对单片机内存直接存取的概念。并设
计了相应的接口电路和传输程序,经实际调试、运行,证明直接存取法是可行有效的,而且这一思路不只限于存取单片机内存,可用于任何机
型包括同种机型之间的大数据量成批高速传送场合。