摘要:FT311D接口芯片为Android手机或平板电脑提供了USB转外部UART、GPIO、PWM、I2C、SPI硬件接口功能。本文介绍了FT311D的硬件特点及其在Android平台下的软件开发方法。实验表明,基于FT311D的Android设备USB转外部接口方案硬件设计简单,软件开发方便,可广泛应用于物联网、车载系统、POS机、智能医疗保健仪器设备等。
引言
目前,移动市场已经急剧地改变了IT行业的格局,市场正在向智能手机和平板电脑等移动计算设备倾斜。因此,很多传统的PC软件的开发也正在迅速地向移动平台迁移,Android智能手机和平板电脑移动设备逐步成为重要的计算应用平台。
由于考虑系统硬件体积、功耗、成本等因素,除了常用的USB接口外,基于Android的智能手机或平板电脑往往缺乏硬件拓展接口,这某种程度上限制了这些智能移动设备与物理世界的信息交互能力,例如外界传感器数据的获取,外部执行装置的控制和在车载系统、POS机、智能医疗保健仪器设备中的应用等。
FT311D接口芯片能为Android手机或平板电脑提供USB转外部UART、GPIO、PWM、I2C、SPI等硬件接口,无需安装USB驱动,全面兼容USB 2.0接口,不需要软件移植,不受Android操作系统升级的影响,只需安装对应的APK就能实现数据通信,这有利于解决Android移动设备硬件接口的扩展难题。
本文介绍了基于FT311D的Android移动设备的USB转外围硬件接口拓展方案,主要内容包括FT311D的硬件特点及其在Android平台下的软件开发方法。
1 FT311D接口芯片
FT311D芯片是由美国FTDI公司研制生产的面向Android移动设备的USB转外部硬件接口解决方案。FT311D芯片直接集成了USB通信协议栈,它分别支持USB转UART、GPIO、PWM、I2C、SPI。FT311D芯片系统功能如图1所示。
当FT311D的外围接口配置为UART串口模式时,该接口作为具有流控制的基本异步串行UART端口使用。FT311D的UART支持的波特率为300~921 600baud。其I2C总线主控端接口可以连接到支持125 kbps的I2C总线从控端接口。另外通用接口GPIO可以配置为提供多路脉冲宽度调制(PWM)输出信号,这些输出可用于控制电机、制动器、传感器、DC/DC转换器或AC/DC电源的PWM信号以及玩具、照明应用、家用电器和工业设备等。
图2为FT311D芯片引脚定义,FT311D系统原理框图如图3所示,主要引脚的功能略——编者注。
FT311D分别支持UART、GPIO、PWM、I2C、SPI硬件接口,具体接口类型由CNFG2、CNFG1和CNFG0引脚决定。接口的类型定义及其对应引脚略——编者注。
2 软件开发
基于Android开发平台的软件开发,FT311D硬件接口应用程序主要包括两部分,即用户层User Layer和接口层Layer,详见图4。
用户层面向高层应用程序开发,程序员不需要过多考虑Android设备与FT311D接口芯片通信的具体细节,只需要借助相应的用户函数即可实现USB转GPIO/UART/I2C/SPI/PWM接口的驱动程序设计。而接口层则具体来执行用户层提供的API函数功能,实现FT311D与Andoid系统间的USB通信功能,涉及具体的通信协议和数据包格式等。FTDI公司提供了用户层和接口层的Java类文件,可以很方便地编译到用户的应用程序中。
3 系统应用开发实例
接下来主要介绍FT311D作为UART串行通信接口时的驱动程序开发方法。在实际开发应用中,基于Android手机开发环境,FT311D硬件串口驱动软件开发的着力点是UART Layer的API函数的正确使用。与图4类似,图5是UART串行通信驱动程序框图。图6为基于FT311D串行口,Android平板电脑与桌面PC串行通信实验实物图。
3.1 FT311-UART Layer
FT311-UART Layer提供了UART接口类的用户API函数。
3.1.1 SetCofig函数
函数SetConfig(int baudRate,byte dataBits,byte stopBits,byte parity,byte flowControl)的功能是设置串行通信帧格式包括通信波特率、停止位、校验位等,在使用串口前,必须先使用该函数来进行正确的设置。
baudRate波特率:最小是300,最大值是921 600,默认值是9 600。
dataBits数据位:7位或8位。
stopBits停止位:1或2位。
Parity校验位:0代表没有校验;1为奇校验;2为偶校验。
flowControl流控:0为没有,1代表有流控。
3.1.2 SendData函数功能
Send Data(byte numBytes,char[]buffer)向FT311DUART串行口发送数据。其中numBytes是发送的字节数,最大值是256;buffer是所发送数据的地址指针。
3.1.3 ReadData函数功能
Read Data(byte numBytes,byte[]buffer,byte[]actualNumBytes)从FT311D UART串行口读取数据。
numBytes是接收的字节数;buffer是所发送数据的地址指针;actualNumBytes是实际接收到的数据个数。
3.2 FT311D串口通信代码示例
基于上述API函数,示例代码主要包括FT311D串行口配置、数据发送与接收。
上述示例显示,基于FT311D接口芯片,面向Android移动设备的USB转外部UART、GPIO、PWM、I2C、SPI接口功能方案,具有硬件连接简单、软件开发方便易行的特点。
结语
FT311D芯片通过USB转多种物理接口的方式拓展Android移动设备的应用领域,进一步增强Android移动系统与外部物理世界的信息交互能力。同时FT311D硬件成本较低,开发方便,无需安装USB驱动,全面兼容USB2.0接口,不需要进行软件移植,同时不受Android操作系统升级的影响,因此以FT311D为核心的Android移动系统硬件接口拓展解决方案是值得推广应用的。