2.3 RS485接口电路设计
信号经过单片机的UART接口,再经过MAX485转换即构成了RS485通信接口。
2.4 硬件电路图
USB接口可以向外提供电源。USB接口规范规定:可提供电源电压为4.75~5.25 V,低输出功率USB端口最大的输出电流为100mA。信号模拟器所需的供电电压和电流满足USB接口电源指标,因此采用USB接口为信号模拟器提供电源。
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函数,开发者可以在多种高级语言中调用,功能强大且灵活方便。
FTDI公司为FT245R芯片提供了2种驱动程序:VCP驱动和D2XX驱动。使用VCP驱动程序,数据传输速率可达300 kb/s;使用D2XX驱动程序,数据传输速率可达1 Mb/s。下面分别介绍基于以上2种驱动的应用软件程序设计。
3.2.1 基于VCP驱动的应用程序设计
在PC机上安装一个由FTDI公司提供的虚拟串行口VCP(Virtual COM Port)驱动程序,它是将USB接口芯片虚拟成操作系统的一个串口通信口,对这一虚拟的串行口的操作等同于对该USB接口设备的操作。应用程序通过调用 Win32 COMM控件的API函数来完成对芯片的读/写操作。
VCP驱动由2部分组成:FTDIBUS和FTSER2K。FTDIBUS完成2个功能:控制虚拟串口的生成,以及与USB接口芯片进行通信。FTSER2K完成对串口的各种操作。
应用软件程序设计可以采用成熟的串行通信控件MSComm来完成对虚拟串口的各种操作。MSComm控件很好地封装了Windows API的串口通信函数,屏蔽了繁琐的通信细节,只需使用控件提供的接口即可。