2 PSoC、PSoC USB和USBUART
2.1 PSOC
可编程片上系统(Prograromable System on Chip,PSoC),是Cypress公司近几年推出的一种新型的可编程半导体器件芯片。PSoC由8位微处理器内核,多个可编程的模拟模块和数字模块,硬件乘法累加器,以及I2C、Flash、SRAM等周边外围资源组成。因此,PSoC除了能实现一般MCU的功能外,还可通过可编程模拟和数字模块,灵活地实现嵌入式系统所需的多种模拟与数字外围功能。PSoC集三种可编程能力于一体,不仅具有MCU的可编程能力,还包含了部分可编程逻辑运算功能,同时提供了可编程模拟阵列。通过对寄存器的配置或控制,三者之间还可以协调工作,是具有真正的混合信号处理能力的可编程片上系统。
PSoC中的数字资源(如定时器、PWM、UART等)和模拟资源(如放大器、比较器、滤波器等)是以数字模块和模拟模块的方式给出。不同型号PSoC芯片的差异主要在于其拥有的数字模块和模拟模块的数量不同。用户可根据特定需求来定义这些模块。
PSoC的集成开发环境PSoC Designer也预先为用户定义了近百个常用的数字和模拟资源配置模块。这些预定义的模块称为用户模块,如数字资源有定时器、PWM、UART、SPI、CRC、PRS等,模拟资源有放大器、比较器、滤波器等,ADC则由若干数字模块和模拟模块组合而成。这使得PSoC开发人员无需通过设置寄存器来构建这些周边设备,只需在PSoC Designer中选择和放置所需的用户模块并进行参数设定。PSoC Designer不仅能配置用户模块,还为用户创建了低层驱动函数,并提供使用这些用户模块的API函数供用户编程时调用。这种新颖的系统设计方法使工程师可以把主要精力集中在上层系统软件的设计工作中,极大地方便了整个系统的设计开发。
2.2 PSoC USB
PSoC系列中的CY7C64215、CY8C24x94芯片不仅具备上述PSoC的功能和特点,还包括了一个功能完善的全速(12 Mbps)USB端口。PSoC的USB端口资源符合USB2.O规范,是一个可以工作在12 Mbps速度下的全速器件,具备1个上行端口和1个USB地址的规范要求。PSoC USB包括1个串行接口引擎(SIE),1个PSoC存储器仲裁器(PMA),256B的专用SRAM,1个带有内部调节器的全速USB收发器以及2个专用USB引脚。
USB SIE支持5个端点,包括1个控制端点(端点0)和4个数据端点(端点1、2、3和4)。控制端点经过配置可支持SETUP、IN和OUT请求。数据端点可分别独立配置,从而响应中断、批传输、同步IN或OUT请求等。SIE使PSoC器件能与USB主机实现全速通信,并可自动完成以下USB处理任务,无需固件干预,从而简化了USB流量接口的工作。
①将接收到的编码数据进行转换,将总线上要传输的数据格式化。
②生成CRC校验和。忽略那些传送进来的未通过校验和验证的数据包。
③地址检查。忽略所有地址未指向器件的事务。
④发送适当的ACK/NAK/Stall握手信号。
⑤识别标记类型(SETUP、IN、OUT),一旦接收到有效的标记,即设置适当的标记位。
⑥识别帧起始(S()F)并保存帧的数量。
⑦通过PSoC存储器仲裁器向USB SRAM发送数据,或从USB SRAM接收数据。
PSoC存储器判优器(PMA)是PSoC USB专用SRAM与数据SRAM的2个内存块(USB SIE与M8C)之间的接口。PMA可提供8个通道用于传输数据。M8C可使用所有的通道寄存器,但4个非控制USB端点分别由PMA通道寄存器的特定集来分配。
PSoC USB系统资源包含专用的256 B SRAM,其与PSoC内核中所用的SRAM页相同,但不能通过M8C存储器操作指令存取。PSoC USB的专用SRAM只能通过PMA寄存器进行存取。
内部USB收发器与外部USB总线相连,根据USB2.O规范收发信号。在正常的USB操作状态下,收发器直接与SIE连接,初始化之后无需与用户互动。
就系统级而言,PSoC的全速USB系统资源通过M8C寄存器访问指令进行操作配置,实现与PSoC其他部分的连接,并通过2个USB引脚与外部相连。
2.3 USBUART用户模块
USBUART用户模块是PSoC集成开发环境PSoCDesigner中专门为用户使用PSoC USB预先定义的自动配置资源。USBUART实现了USB设备功能,并利用PSoC的1个USB端口来仿真1个COM端口,同时在PSoC器件侧提供了类似于UART的高层API函数。因此利用该用户模块可以方便地替代传统的基于RS232(UART)接口的通信方案。2种方案的对比如图1所示。
USBUART是在PSoC的USB端口基础上,在USB总线上仿真RS232端口。这种方法的主要优点在于,PC的上层应用程序将此USB设备仍旧看作是1个COM连接,从而使上层操作非常易于实现。这种方法可以使用在从Windows 98SE到Windows XP所有版本的MicrosoftWindows操作系统中的标准COM口驱动程序——MSC0M控件来编写的应用程序中。
USB通信设备类(CDC)规格定义了许多通信模型,其中包括了1个在USB上实现串行通信仿真的抽象控制模型。Microsoft Windows USB调制解调器的驱动程序usbser.sys符合此规格。
在一台新的USB设备第一次连接到一台WindowsPC时,Windows将要求用户提供驱动程序。Windows2000及以后版本在安装驱动程序时需要一个INF文件。Windows没有为这个usbser.sys驱动程序提供标准的INF文件。为了安装能够在USB上仿真RS232的设备,用户必须提供一个能够将附加的设备映射到MicrosoftCDC驱动程序的INF文件。USBUART用户模块会自动生成这个必要的INF文件,建立在工程项目的LIB文件夹内供使用。在提供了INF文件后,驱动程序允许USB1设备仿真成1个USB端口。
PC上面向COM口终端应用程序中的设置(波特率、数据位、奇偶校验、停止位和流控制)都不会影响数据传输的性能,因为此时的COM口实际是USB设备,使用USB协议来控制数据流。但是,除了流控制以外的COM口终端设置值,在PSoC端可以采用特定的API函数调用检索到,以便在需要时用于真正的RS232设备。
3 软硬件设计
实际上应用工程师并不需要了解如此多的关于USB的底层内容和协议。只要基本掌握和看懂图1所示的原理,借助PSoC:USB和USBUART,就可以在很短的时间内实现基于USB接口的PC与嵌入式系统的连接通信。下面具体介绍该方案的软硬件设计和实现。
3.1 硬件设计
图2是采用CY7C64215实现该方案的原理图。