1.1 AT89C5131的键盘端口特性及键盘设计
AT89C5131拥有一个允许与8×n矩阵键盘连接的键盘接口,其输入均具有高或低电平可编程中断能力。键盘接口与C51内核的通信通过3个特殊功能寄存器实现,分别是键盘电平选择寄存器(KBLS)、键盘中断使能寄存器(KBE)和键盘标志寄存器(KBF)。AT89C5131的键盘输入被设计为分享同一个中断向量的8个独立的中断源,寄存器IEN1中的中断使能位KBD允许键盘中断全局的使能及不使能,根据KBLS每一位的值,每一个键盘输入都有检测出可编程电平的能力,然后键盘检测就被反应到KBF中,而通过软件使用KBE可以屏蔽中断标志KBF。正是这样的结构使得键盘排列可以从1×n延伸至8×n的矩阵,同时还使得P1输入用于其他用途。
在该设计中,将4个键盘端口(P1.O,P1.2,P1.3,P1.4)及2个外部中断端口(P3.2,P3.3)与控制面板上的6个按键相连;实现系统的内外、启停、暂停继续控制及参数组的选择等功能。这6个端口都采用低电平触发产生中断。
1.2 USB各端口的特性及USB通信设计
AT89C5131的控制端口O总是默认为控制类型,用于控制传输,有32字节的FIFO;而其他6个可编程端口可以通过设置UEPTYPE的值配置为控制、批量、中断和同步类型;Ping-pong模式的端口可以配置成批量、中断和同步类型,对于批量、中断和同步类型的端口,其方向可以通过设置UEPCONX的值配置为输入或者输出。端口1~端口3有32字节的FIFO;端口4,端口5有2个64 B的FIFO;端口6有2个512 B的FIFO,并且后三个端口均可工作于Ping-pong模式。
在该设计中,PC机将数据通过USB传给AT89C5131,传输完一次后AT89C5131向PC机回传数据传输正确与否的标志,PC机可以根据收到的标志进行相应的操作。PC机向AT89C5131传输的数据主要是参数和控制命令两种类型。为将其区分开来,使用USB的端口4和端口6接收这两种数据。其中,端口4用来接收控制命令;端口6用来接收参数。相应地,控制命令的回传使用端口5;参数的回传使用端口3。为简单起见,端口3~端口6均被配置为批量类型;端口3、端口5为IN端口;端口4、端口6为OUT端口。
1.3 SPI端口特性及SPI通信设计
AT89C5131的SPI模块允许在McU和其他外围设备之间实现全双工、同步、串行通信,它能以配置为主或者从两种操作模式提供可编程极性和相位串行时钟,同时还提供8个可编程的主机时钟率。SPI模块包括4个端点(MOSI,MISO,SCK,SS),MOSI和MISO都是用来传输数据的,且每次只能传输1个字节的数据。不同的是,MOSI将数据由主机输出从机输入,而MISO正好相反。SCK信号用以使通过MOSI和MI-SO的数据输人/输出设备同步,它可以由主机驱动产生8个时钟周期,用以完成一个字节在串行通道上的交换。SS用于从机的选择,低有效。SPI模块的配置和初始化可以通过寄存器SPCON完成,而数据的交换则需要使用寄存器SPSTA和SPDAT两个寄存器,在软件编写过程中,SPI能否正常工作主要取决于对上述3个寄存器的操作。
在该设计中,SPI被配置为主机模式;SS端口处于无效状态;AT89C5131通过MOSI端口向DSP传输参数及控制命令;DSP通过软件设置P1.1(SS)端口的状态表明数据是否正确接收,即若正确接收,则置P1.1为1,否则置P1.1为0;AT89C5131通过检测P1.1的值来决定是否重传数据。