(2)FT245R FIFO写操作
写操作时序如图3所示。当TXE为低,表示当前FIFO发送缓冲区空,可以向发送缓冲区写入数据。在WR为高电平时,MCU将8位数据D[0:7]送到并行I/O口上,在WR信号电平由高变低时数据被写入发送缓冲区中。当TXE为高时,表示当前FIFO发送缓冲区已满或者正在写入上一个字节,此时禁止向发送缓冲区中写入任何数据。MCU向FT245R写入数据时应确保TXE为低。
2.2 单片机子系统
单片机子系统包括单片机和上电复位芯片。本设计中采用的单片机是AT89S52。 AT89S52作为系统的中央处理器担负着系统和PC主机的通信、系统内各部件正常工作等重要任务。AT89S52这款单片机内部有看门狗电路,可防止程序陷入“陷阱”或跑飞。为了使单片机上电复位可靠,这里采用专门的复位芯片MAX708。
2.3 RS485接口电路设计
信号经过单片机的UART接口,再经过MAX485转换即构成了RS485通信接口。
2.4 硬件电路图
USB接口可以向外提供电源。USB接口规范规定:可提供电源电压为4.75~5.25 V,低输出功率USB端口最大的输出电流为100mA。信号模拟器所需的供电电压和电流满足USB接口电源指标,因此采用USB接口为信号模拟器提供电源。
编者注:信号模拟器的电路原理图见本刊网站www.mesnet.com.cn。
3 软件设计
软件的设计主要包括单片机程序的设计和PC机终端应用程序的设计。
3.1 单片机程序设计
单片机程序采用C语言编程,程序结构清晰,可读性和可维护性高。
3.1.1 单片机读写FT245R FIFO缓冲区程序
单片机通过P0口来读写FT245R FIFO缓冲区中的数据。P0口作为数据总线,读数据前,须向P0口全写1,这样才能正确读取数据。FT245R FIFO缓冲区读写时序要求如前文所述。MCU读写FT245R缓冲区程序如下:
3.1.2 单片机流程控制
MCU负责USB接口芯片FT245R的数据发送接收控制,单片机串口配置及串口接收发送任务。
整个程序的流程分为以下几个步骤:
①单片机和FT245R的初始化,启动看门狗程序。
②对FT245R接收缓冲区有无数据进行判断,若无数据,喂狗;若有数据,转向步骤③。
③对帧信息类型进行判断,若为命令配置帧,则读取FT245R接收缓冲区数据,然后对串口进行配置;若为数据帧,转向步骤④。
④串口数据发送接收采用查询方式,MCU读取FT245R接收缓冲区的1字节,然后通过串口进行发送。
⑤判断串口发送和接收是否完毕,若完成,将接收到的数据写入到FT245R发送缓冲区中;若未完成,喂狗,断续执行⑤。
⑥重复执行②~⑤,直到读出接收缓冲区里的所有数据。
3.2 PC机终端应用程序软件设计
PC机终端应用软件程序的主要目的是实现对USB接口芯片FT245R的接口控制和读写操作,提供友好的人机界面来设置串行通信参数、数据帧格式、帧发送方式等。计算机端有关USB通信的开发不需要了解USB底层驱动,FTDI公司已经以动态链接库的形式封装好了面向功能应用的API函数,开发者可以在多种高级语言中调用,功能强大且灵活方便。