2 系统实现
要使得上述设计在工程应用中得以实现,在硬件设计的基础上。还需对接口进行软件设计。AT89C5131的软件设计主要是USB固件程序的设计,包括系统的初始化,USB接口、UART接口和SPI接口数据的收发以及控制面板按键的功能实现几个方面。软件设计采用C语言编程,最后软件通过FLIP下载到AT89C5131芯片中。这里所采用的编译环境为KeilμVision 3软件设计平台。在具体的工程实现过程中,也遇到了一些问题,但经过反复的修改及调试,这些问题都得到了很好的解决,其中主要有以下几个方面:
按键功能实现控制面板按键的功能是通过电平触发中断实现的。在设计之初,手动按下一次按键总会触发多次中断,对应的LED显示总会很快的跳变,不能满足按一次按键就显示一个状态的要求,于是笔者就在按键功能实现的程序中添加了等待函数,即每发生完一次中断,就等待一段时间,经过调试,上面的问题没有再出现。
USB通信系统 系统要求USB能够快速、高效地实现通信,对于速度问题可以通过Ping-pong模式得以解决。系统还要求USB实现双向通信,为使其接收和发送数据互不干扰,所以选用了几个端口实现不同数据的传输。
SPI端口通信 SPI端口工程实现的关键是速度和工作模式的匹配。在设计之初,AT89C5131的SPI工作于从机模式,其数据传输受到DSP的控制,由于其传输速度远远低于DSP中SPI端口的处理速度,所以每通过AT89C5131的SPI传输一组数据时,DSP总需要通过软件控制等待很长一段时间,既便如此也不能保证数据得到正确接收。于是,后来就将AT89C5131的SPI工作模式修改为主机模式,由AT89C5131主动控制数据的传输。然而实现双向通信的关键是对SS信号的控制,在上述工作模式下,SS必须无效,Slave才能较可靠地向发送寄存器写数。
3 结 语
AT89C5131宜于构成低成本的USB控制和通信系统,能实现计算机与设备的通信,并可灵活选择多种通信协议。文中介绍基于AT89C5131的接口设计,主要是实现PC机与MCU以及MCU与DSP的通信,该设计已经在工程实际中得到应用。经过实践检验,证明其合理且操作灵活,具有一定的实用意义。在设计过程中,深切体会到硬件设计与软件设计的极大不同。编译正确且逻辑没有问题的程序源代码,将其烧写至芯片后,硬件电路并不一定能完全地实现所要求的功能,所以必须经过反复的修改程序、烧写、调试,直至正确实现功能。