摘要:本文提出了一种基于admc812和dsp的数据采集系统的设计方案。系统采用主从式设计,dsp 和admc812之间通过通用的sram实现数据的交换,可满足数据采集量大、运算复杂、实时性要求高的应用系统。引言 admc812是adi公司的以8051(8052)内核为控制核心的新型微转换器。由于admc812内部集成了大量的外围设备。它本身就是一个完全可编程、自校准、高精度的数据采集系统,可以取代传统的mcu+a/d+rom+ram高成本、大体积产品,尤其是它的高精度和高速度a/d模块,特别适应于智能传感、瞬时获取、数据采集和各种通信系统。但是,对于需要采集数据量大、运算复杂、实时性又要求较高的场合,由于在结构和速度上的限制,往往是无法满足要求的。本文针对这种情况,提出了基于admc812和dsp的数据采集系统。在这个系统中,admc812作为主机,完成adc、dac、显示、键盘等功能,而dsp作从机,专注于复杂的数据运算,两者通过通用的sram实现数据的交换和通信。
图1系统结构图
admc812和tms320f206简介admc812微转换芯片 admc812是具有16位计数/定时和32条可编程i/o接口的8051/8052微控制器,内置一个8通道、5ms转换时间、精度自校正、12位逐次逼近的adc;2个12位dac,10.5kb的闪存eeprom,256字节的sram。还包括一些重要功能模块,如看门狗定时器和电源监控器,adc与数据存储器之间的dma方式,存储保护功能,一个通用异步串行收发器(uart)、spi和i2c总线接口。 admc812内丰富的外设,使它不需要外部总线扩展就可以组成一个完整数据采集系统,有很高的性价比。更值得注意的是在admc812内集成了8路12位高精度、自校准4ppm/℃的adc电路。而且,当工作条件(如时钟频率、模拟输入范围、基准电压或电源电压)发生变化时,为了得到高精度的adc结果,可以用软件对admc812内4个用于校正的特殊功能的寄存器设置,达到进一步校正adc的目的。admc812通过设置adcon1~3 三个特殊功能寄存器,可以使adc工作于3种不同的模式,实现单次转换、连续转换和dma模式的a/d转换,可以根据具体的需要选择,在dma模式下,允许adc在每次设置寄存器adccon1~3后连续采样,并将结果写入外部ram中。这种自动捕获功能大大地方便了主从处理器之间的数据交换。数字信号处理器tms320f206 tms320f206(以下简称f206)是ti公司生产的tms320c2000系列dsp之一。是继c2x和c5x之后推出的低价格高性能的16位定点dsp,由于它采用了改进的哈佛结构,具有分离的程序总线和数据总线,采用四级流水线作业,其运行速度可达40mips,具有高速运行的特点。同时提供丰富的指令集,增强的模块化结构设计,使它通用化得以提高,应用领域不断拓宽,现已成为高档单片机的理想替代品。f206片内有32k的闪速存储器,用户通过f206自带的、符合ieee标准1149.1的jtag接口,可以对程序进行仿真与调试,并将程序代码烧录到片内,极大地方便了用户的系统设计与程序调试。tms320f206提供直接存储器访问(dma)功能,通过使用hold操作允许对外部程序、数据以及i/o空间进行直接存储器访问。该过程是由、两个信号控制。外部设备可以把引脚驱动到低电平,从而请求对外部总线的控制。如果中断线被允许,那么将触发中断。f206在相应中断时,软件逻辑可以使处理器发出应答信号,表示它将放弃对外部总线的控制。根据,外部地址信号(a15~a0)、数据信号(d15~d0)以及存储器控制信号(、、、、、、)被置为高阻状态,实现dma功能。
系统硬件设计 系统的硬件结构如图1所示,存贮器62256作为dsp的全局数据存储器,同时又是admc812的外部存储器,两控制器分别通过总线和数据存储器62256相连,实现存储器共享。为了保证两控制器能分别独立地工作。在admc812和62256之间插入了4片74hc245进行总线隔离。这样,在admc812的控制下,每一时刻只有一个控制器访问62256。图中62256作为admc812的外部存储器,a15为片选信号,地址范围为8000h~ffffh;作为f206的全局数据存储器,用作片选线,使用高端32k字地址范围(8000h~ffffh)。两片选信号经一与非门和62256的片选线cs2相连,实现片选信号的隔离。 admc812通过p1.0、p3.2(int0)分别和dsp的、xf脚相连,由p1.0向dsp申请总线控制,在dsp响应admc812的请求后,dsp的cpu被挂起,并出让外部总线。admc812通过a15打开总线驱动器,并经与非门后选中62256,获得62256的控制权,实现对62256的读写操作。而f206也可以通过向admc812请求中断,admc812在响应中断int0后,进行相关事务的处理。另一方面,admc812通过读引脚的电平,可以确认f206是否被挂起;而通过对脚的控制,实现f206程序的分支转移,增加系统的灵活性。 整个系统分为事务性模块和数据处理模块,admc812控制事务模块,进行数据的采集、led显示、开关量的输入输出,模拟量的输出及串行通信等功能。f206控制数据处理模块,主要进行数据的处理,完成复杂的算法。另外,也可以根据数据处理结果直接处理一些重要的出口控制功能,以弥补admc812 i/o端口的不足,加快系统的反应速度。两个相对独立的功能模块通过62256进行数据交换。
系统软件设计 由于系统的两个模块在功能上相对独立,相应的软件也包括两个主要模块,admc812在程序加载完成后,就进入程序正常运行。系统初始化后,首先通过p1.0向f206请求dma操作,且得到响应后,admc812获得62256控制权。这时,通过配置3个特殊功能寄存器adccon1~3,可以使admc812工作在不同的模式下。其中在dma模式下,adc可以连续转换,并把采样值捕获到外部ram空间而不需要来自微处理器的任何干预,由中断位adccon2.7表示dma转换结束。在a/d转换结束且采样点达到预定的数量后,admc812就通过adc中断,放弃对62256的控制并通知dsp进行数据处理。而后admc812进入显示、键功能、i/o操作、串口通信等事务性的工作。 f206在接收到admc812的dma请求后,进入到等待状态,并放弃对外部总线的控制权。62256通过admc812获得采样数据,当采样结束后,dsp从等待状态返回到正常运行状态并获得总线的控制权,进行数据处理,将运算结果放回62256。f206的dma操作过程是:f206引脚/上获得一个有效的下降沿,当cpu转移到0002h地址单元,cpu从0002h地址单元提取中断矢量并进入中断服务程序,在对mode=0进行成功的测试后,该中断服务程序就执行一个idle指令,使f206进入到等待状态。当检测到/脚上的一个上升沿后,cpu退出idle状态,并使外部总线返回其正常状态,执行数据处理程序。 软件使用c语言设计,分别在两个开发系统上进行程序设计和调试。利用adi公司提供的软件开发工具,能够快速高效地完成admc812应用程序的设计,并通过admc812的通用串行口在线调试和代码下载。f206用闻亭公司提供的tds-510开发工具进行软件设计。最后将admc812和f206进行联机调试,完成整个软件的开发。
结语 以上设计方案,适合于采集数据量大、算法复杂、有一定实时要求的应用领域。由于双cpu系统无需额外的附加双口ram、fifo及复杂的控制电路,降低了成本,简化了电路,也扩展了admc812的应用范围。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』