随着单片机应用的不断深入,由多个单片机构成的多机系统越来越多.多个单片机之间以多机通信技术进行信息交换构成一个整体。将单个单片机的工作分解到多个单片机来完成,一方面可以提高系统的各项性能,另一方面可以简化系统的硬件设计。
当进行远距离传输时,一般采用异步串口,而近距离传输时可以采用并行口和同步串口。同步串口虽然速度低,但信号线少,用于低速小容量数据传输;并行口的传输速度较高,但信号线较多,用于高速大容量数据传输。
本文在一般双向并口通信的基础上,参考多种单片机的总线接口,提出了简单易行的多机并口协议,实现,多个单片机之间的高速数据通信。该协议占用信号线少,操作简单。
1 多机并口通信协议
多机并口协议,规定了数据信号和控制信号,实现了3种总线操作模式,定义了总线操作时序。
多机并口协议,定义了SET、A/D、W/R、D0~D7共11根信号线。其中:SET为写入控制,主机或从机在下降沿将地址或数据发送到双向并口D0~D7;W/R为读/写控制,W/R=0时表示主机读从机,W/R=1时表示主机写从机;A/D为地址/数据选择控制,A/D=0时表示传送数据,A/D=1时表示传送地址;DO~D7为双向数据地址总线,配合W/R和A/D进行地址和数据的双向传输。通过W/R和A/D控制信号,实现了3种总线操作模式,如表1所列。
2 协议的单片机模拟
用单片机实现并口协议时,主机工作在查询方式,从机工作在中断方式,从机的SET信号必须接到从机的外部中断引脚。
控制位逻辑值的定义:
#defincREAD O
#dcfine WRIT l
#define DATA O
#define ADDR 1
2.1 主机并口协议程序
主机的多机并口信号线町以使用单片机的任意1个双向并口和任意3根I/O,主机在查询方式下主动与从机通信,对从机数据进行读/写。通过调用延时函数delay(),使主机和从机实现对SPI传输速度的控制。用户程序只须调用PPI_ReadBuf()和PPI_WritBuf()函数可以对从机数据进行读/写。
2.2 从机并口协议程序
从机多机并口信号线中A/D和W/R可以使用单片机的任意I/O,为DO~D7分配一个双向并口,但SET必须使用INT引脚.本设计使用了INTO引脚。从机的多机并口协议在中断服务程序中实现,在中断中配合主机实现数据的读写协议。本例中,数据存于buf缓冲区中。
结语
本文提出的并口协议实现了单片机之问的多机通信,该程序已在实际中得到应用。该协议可以在含有外部中断的单片机上实现,也可用于CPLD上实现与单片机的通信。该方法简单、可靠、成本低,有着较高的推广价值。