家电数码 > 手机 > 详情

嵌入式系统的USB to UART通信设计方案

发布时间:2024-08-30 发布时间:
|

1 概 述

 

RS232(UART)接口是一种简单、方便和实用的通信接口,用途非常广泛。在许多嵌入式应用,如智能仪器仪表、电子设备中,均使用RS232与PC机等外部系统进行通信,实现上位机对下位机的控制及数据交换等。在系统调试过程中,通常也是通过RS232,将调试数据发送到PC上显示出来。

但在PC机领域,RS232(COM)串行接口已经从最新一生产的计算机,尤其是笔记本电脑中消失了,而串行接口USB成为了标准的配置。这种变化给硬件工程师带来了不少麻烦。

目前通常的解决办法是购置一根“USB to RS232”转换电缆,其基本作用是在USB总线上仿真出一个RS232端口。这种方法的主要优点在于:PC应用程序将该USB口连接当作COM口连接使用,从而可以使工程师轻松跨越复杂的USB低层接口协议,仍使用原来熟悉的,针对COM口操作的方式编写程序代码。

本文将介绍另外一种与上述方法原理类似的设计实现方案,设备之间的外表连接全部换成了USB标准物理接口和连接电缆,但在PC上仍然使用针对COM口操作的方式编写程序代码,保留了原来的风格。该方案是采用Cypress公司PSoC家族中带USB接口的CY7C64215(或CY8C24x94)芯片实现的。

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设备。

通信相关文章:通信原理



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
光网络不断超越:从100G向400G