ATmega161在嵌入式测控网络中的应用研究
扫描二维码
随时随地手机看文章
1引言
随着微电子技术、通信技术、控制技术和半导体技术的飞速发展以及工业、医疗卫生、国防等部门对智能控制要求的不断提高,嵌入式微处理器被越来越广泛地应用。为了适应各方面的需求,嵌入式微处理器在运算速度、可扩充能力、系统可靠性、功耗和集成度等方面得到了突飞猛进的发展。嵌入式微处理器体系结构经历了一个从CISC(Complex In-struction Set Computer)到RISC(Reduced Instruction SetComputer),从4位、8位、16位到32位甚至64位,寻址空间从64kB到16MB甚至更大,处理速度从0.1MIPS到2000 MIPS的过程。
ATmega161是一款基于AVR(Advanced RISC)的低功耗CMOS8位单片机,它以其强大的功能和较高的性价比得到了不少嵌入式系统开发者的青睐。其主要特点表现在以下几方面:
(1)ATmega161增强型RISC结构方面
●内含2周期乘法器;
●具有32个8位通用(工作)寄存器;
●工作在8MHz时,具有8MIPS的性能;
●具有130条指令,大多数为单周期指令;
(2)数据和程序存储器方面
●内含16k非易失在系统可编程FLASH;
●具有1k的内部SRAM;
●带有512字节非易失在系统编程EEPROM;
●能进行可编程程序加密。
(3)外围特点
●带有两个可编程全双工UART;
●带有主/从SPI串行接口;
●具有自身振荡器的实时时钟RTC;
●具有2个8位定时器/计数器;
●带有1个可预分频的具有比较、捕捉和双8/9/10位PWM功能的16位定时器/计数器;
●具有可编程的内部看门狗定时器;
●片内的模拟比较器可用作A/D转换;
●带有35个可编程I/O口。
(4)增强的MCU特点
●可进行上电复位和可编程低压检测;
●具有21级内外部中断源;
●有空闲、节电及掉电三种节电模式。
(5)其它特性
●采用40脚PDIP,44脚PLCC及QFP封装;
●工作电压为4.0~5.5V。
2嵌入式测控网络的设计
传统的测控网络由于连接有很多常规模拟仪表和执行机构以及其它现场设备而具有很多缺点,如一对一结构连线庞杂,工程周期长,安装费用高,维护不便;模拟信号传输精度低,易受干扰;操作员在控制室既不能对其进行参数调整,也不能对其进行故障诊断,因而会导致操作的“失控”。
所示是笔者设计的以ATmega161为核心的嵌入式测控网络系统示意图。图中的嵌入式控制器通过两级RS-485总线既可和上位机通信,又可和传感器以及执行机构等现场设备进行通信。操作人员可直接通过键盘、鼠标来完成对执行机构的远程控制,从而实现实时监控;同时,总线似的数字信号通信可以克服常规模拟信号传输的许多缺点,并具有接线简单、维护方便、精度高、抗干扰能力强等优点。
3硬件设计
可以用两个UART通用串行口组成两级RS-485网。一般的微处理器并不具备两个UART,通常可扩展一片串行接口芯片(如8251、8250或者 EXAR公司的ST16C2552等)构成两个UART,但这样会使电路变得复杂、PCB成本增大且系统的抗干扰能力下降。而ATmega161正好具有两个可编程UART,所以无需扩展,这种方法不但可以使电路简化并使PCB体积缩小,而且还可使抗干扰能力增强,同时也具有较高的性价比。
通信部分的硬件原理图如图2所示。图中,将两个UART的RXD、TXD分别接到两片MAX485上,以使其转换成RS-485电平,再以数据总线的形式连接到上位机和数字化的仪器仪表以及其它现场设备上,从而构成两级测控网络。
MAX485是一种专用的RS-485/RS-422接口芯片,它具有功耗低、体积小、操作简单方便等优点。每片MAX485最多能带32个收发器,如果要增加每条总线上收发器的个数,可以换成MAX487、MAX1487(可带128个收发器)等芯片。
4软件设计
4.1通信协议
通信协议采用ISO的OSI七层模型中的物理层、链路层和应用层。其中物理层为RS-485,它以双绞线为传输总线,其最大通信距离可达1200米,最大从机个数为32台(使用MAX485),数据传送速率为2400b/s,数据传输格式为:1位起始位、8位数据位和1位停止位,该格式无奇偶校验位,通信错误检测采用累加和校验。
数据链路层可参考ISO的“高级数据链路层协议”(HDLC)的有关规定,并选用适合于主从网络的HDLC的正常响应操作模式(NRM),即从站只有在其受到主站的请求时才能发送信息。上位机采用轮询的方式对嵌入式控制器进行访问,而控制器又对数字化传感器及现场设备以轮询的方式进行访问。其操作过程如图3所示。
嵌入式控制器在整个通信过程中具有双重身份,即在与上位机通信过程中,上位机是主站,控制器为从站;而在与传感器及现场设备的通信过程中,控制器是主站,传感器和现场设备为从站。
帧的格式定义为:帧开始符、源地址、目的地址、控制字、信息、累加和校验(BCC)以及帧结束符。
在实际的通信过程中,往往会出现数据丢失和数据传输错误等通信故障。为了防止数据丢失,系统采用了超时处理的方法。这样,主站发送查询命令后,如果在预定的时间内没有收到从站的响应信号,可再次发送一帧查询命令,以等待对方响应。如果连续三次发送后,主站仍然没有收到正确的响应,系统将退出并报警,同时开始轮询下一从站。
针对数据出错情况,每帧都增加了累加和校验来对源地址、目的地址、控制字和信息段进行逻辑和运算,并将运算结果作为帧结束前的一个字符传送到接收方,而接收方在接收完该帧信息后也将接收到的源地址、目的地址、控制字和信息段作逻辑和运算,如果运算结果和收到的运算结果不一致,则废弃该帧数据。如果接收到通信协议规定之外的控制字、源地址或目的地址,系统也将废弃该帧数据。
4.2 ATmega161的双UART寄存器设置
如前所述,ATmega161带有两个全双工的可编程通用异步收发器UART。用户可通过设置表1中的9个寄存器来对两个UART进行编程,表内括号中的十六进制数为相应的寄存器地址。
以UART0为例,UDR0是两个物理分离的数据寄存器,它们具有相同的I/O地址,但在读/写时,它们将分别访问不同的寄存器。在两个状态控制寄存器中,UCSR0A的格式为:
其中,RXC0为接收完成标志,TXC0为发送完成标志,UDRE0为数据寄存器空标志,FE0为帧出错标志,OR0为超越出错标志,U2X0为双倍传输速度标志,MPCM0为多处理器通信标志位。另一个状态控制寄存器UCSR0B的格式为:
该格式中的RXCIE0为接收完成中断触发位,TXCIE0为发送中断触发位,UDRIE0为数据寄存器空中断触发位,RXEN0为接收允许,TXEN0为发送允许,CHR90为九位数据标志位,RXB80为收到的数据第8位,TXB80为发送的数据第8位。
UBRRHI的低四位和UBRR0分别为波特率寄存器的高位和低位。波特率寄存器的计算公式为:
式中,Fck为晶振频率,BAUD为波特率,UBRR为寄存器中应取的值。
UART1的设置编程与UARTO基本相同。
4.3部分源代码
可以使用汇编语言或ANSIC语言编写源代码(编译软件均可从INTERNET上免费下载),编译生成HEX目标文件后,可以通过高速下载线经由SPI接口将该目标文件下载到ATmega161的FLASH存储器中。
下面是C语言源代码的一部分:
5结束语
事实证明,用ATmega161构成的嵌入式控制器在构成两级测控网络时具有明显的性价比优势,在现场总线(如LONWORKS、CAN等)仍然还比较昂贵的情况下,可以作为DCS向FCS的过渡产品。因为该网络具有数字化的特点,加上RS-485标准在国内已经非常流行,所以具有良好的扩展性和通用性,完全可以满足现场控制和远程监控的要求,可广泛应用于各类测控系统中。