UART转USB——UI021/022介绍

来源:本站
导读:目前正在解读《UART转USB——UI021/022介绍》的相关信息,《UART转USB——UI021/022介绍》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《UART转USB——UI021/022介绍》的详细说明。
简介:详细介绍了UART转USB——UI021/022芯片的使用方法

1.UI021/022简要介绍

UI021/022采用USBHID无驱协议,即插即用,用户MCU通过UI021/022可以和上位机双向通讯。上位机应用程序只需简单的3个API函数就可以实现通讯。

不同于使用虚拟串口的USB转UART的芯片/转接线,UI021/022采用命令——响应方式来实现UART转USB,一切指令、操作均由上位机控制、发起。

UI021/022适用于需要将UART接口转为USB接口的应用场景,而且是追求通讯的可靠性和速度的应用,如测量标定仪器设备等。

2.UI021/022功能、性能

您只需将连接***232/202芯片的UARTTX/RX连接到UI021/022上,即可轻松实现USB连接,并且保证有可靠的通讯,不会有其他USB转UART芯片/连接线所具有的数据丢失、系统兼容问题。

全速USBHID接口,无需安装驱动、应用软件,即插即用。

支持windows2000/xp/vista/win7。

支持5V或3.3V、9600N81或115200N81的UART接口。

支持最大到136Bytes的数据包。

双线UART或单线UART与MCU连接

支持3种通讯方式

发送命令、接收响应的双向通讯方式。

只发命令,无响应的单向通讯方式。

无命令发送,只收响应的单向通讯方式。

简单的外围电路设计

不需要外围晶体、复位电路,直接连接上就可使用。

简单的上位机应用程序设计

只需3个API接口(Open、Close、Comm)即可实现。

3.开发使用指南

UI021/022是SOP18封装,在正常工作时,几乎不需要任何外围电路,只需要连接上USB接口就可以。

3.1.引脚定义

UI021 UI022

引脚名称

类型

引脚号

说明

UART_TX

输出

4

串口发送引脚,PushPull推挽输出

UART_RX

输入

5

串口接收引脚,高阻输入

UART_TX/RX

输入输出

5

串口发送、接收引脚

OD开漏输入输出,内部带有14KΩ上拉电阻,外部无需再加上拉电阻

GND

电源

6

芯片地

V33_OUT

输出

7

输出3.3V电源,可提供30mA电流

IO_VDD

电源

10

IO引脚的电源

USB_VCC

电源

11

芯片工作电源

USB_D-

USB信号

12

连接USB的D-

USB_D+

USB信号

13

连接USB的D+

BR_SEL

输入

14

UART通讯波特率选择引脚

悬空:115200

接地:9600

NC

不用连接也不要连接的引脚,保持悬空

3.2.典型应用电路图

3.2.1.UI021典型应用电路图

3.2.2.UI022典型应用电路图

UI022使用注意事项

3.3.上位机应用程序开发

上位机应用程序(目前只支持VC)只需调用3个API接口函数,就可以实现USB通讯。

3.3.1.UI_Open打开端口

HANDLEWINAPIUI_Open(

char*name,

unsignedintreserved_param1,

unsignedcharreserved_param2

);

参数说明:

name:取"ui_hid1","ui_hid2","ui_hidN"等,1<=N<=9

序号分配原则,有以下情况:

n系统上所有N个UI设备均处于未打开端口状态,请调用"ui_hid1","ui_hid2",...,"ui_hidN"依次打开设备,1~N跟插入顺序无关。

n系统上存在N个已打开端口的UI设备,插上一个新的UI设备并打开此设备,则需从"ui_hid1"~"ui_hid(N+1)"依次调用,已打开过端口的设备将返回INVALID_HANDLE_VALUE,由此定位到新插入的设备。

reserved_param1:未使用,可为任意值

reserved_param2:未使用,可为任意值返回值:

INVALID_HANDLE_VALUE(-1)表示打开端口失败;

其他值(大于0)为打开的端口句柄

3.3.2.UI_Close关闭端口

intWINAPIUI_Close(HANDLEui_hdl);

参数说明:

ui_hdl为函数UI_Open所返回的句柄

返回值:

-1为失败;0为成功.

3.3.3.UI_Comm发送命令并取回响应

unsignedWINAPIUI_Comm(

HANDLEui_hdl,

DWORDdw_LenCommand,

unsignedchar*ucp_Command,

DWORD*dwp_LenResponse,

unsignedchar*ucp_Response,

DWORDdw_TimeOut

);

参数说明:

ui_hdl:用UI_Open打开的端口句柄

dw_LenCommand:命令comm的长度;对于UI021/022,该值范围0~136

ucp_Command:需要发送的命令

dwp_LenResponse:取回响应的长度

ucp_Response:响应的数据

dw_TimeOut:此条命令等待响应的时间,单位(s),0~600s,也就是10分钟

返回值:

0xFFFF无效的句柄或参数

0xFFF4usb通讯异常,请重新插拔设备,重新打开端口

0xFFF8响应数据长度错误

0xF0FF响应数据校验错

0xF0FE读取响应数据超时

0x0001命令执行成功

注意事项:

v当dw_LenCommand=0时,说明没有命令要发送,只取MCU的响应

v当dw_TimeOut=0时,说明只发送命令,不取MCU的响应

3.4.UART数据帧格式

UART的数据帧格式为:9600bps波特率或115200波特率,8位数据位,无校验位,1位停止位。

波特率由BR_SEL引脚来决定,如果该引脚悬空,则波特率为115200;如果该引脚接地,波特率为9600。

3.5.UART通讯协议

UI021/022和MCU的UART通讯遵循以下协议:

LEN(1Byte)+Data(长度为Len)+XOR(LEN和Data的XOR)(1Byte)

数据

长度(Byte)

说明

LEN

1

后续Data的长度,取值范围:1~136

Data

LEN

UI021/022转发的命令,即UI_Comm中的ucp_Command

MCU返回的响应数据,即UI_Comm中的ucp_Response

XOR

1

将LEN和所有Data做XOR运算后的值

3.6.工作方式及时序

3.6.1.发送命令、接收响应的双向通讯

步骤1.插上USB,上位机在打开端口获得句柄后,通过UI_CommAPI将命令发送给UI021/022

步骤2.UI021/022获取命令后,通过UART转发给MCU,并开始计时,等待MCU的响应数据。UART通讯协议见上。

步骤3.UI021/022等待MCU返回响应数据,等待时间由UI_CommAPI中的dw_TimeOut参数决定。MCU通过UART返回数据给UI021/022。UART通讯协议见上。

需要注意的是:在接收到第1个字节后,UI021/022将只等待900ms接收剩余的所有数据。

如果以上两个时间超时,UI021/022将不再等待,返回超时错误给上位机,如果UI021/022已经收到MCU返回的部分数据,这些数据也一并返回给上位机。

步骤4.UI021/022将响应数据返回给上位机。

3.6.2.发送命令、不接收响应的单向通讯

当UI_Comm中的dw_TimeOut=0时,说明只发送命令,不取MCU的响应。

步骤1.插上USB,上位机在打开端口获得句柄后,通过UI_CommAPI将命令发送给UI021/022

步骤2.UI021/022获取命令后,通过UART转发给MCU,并开始计时,等待MCU的响应数据。UART通讯协议见上。

步骤3.UI021/022返回长度为0的响应结果给上位机。

3.6.3.不发送命令、只接收响应的单向通讯

当UI_Comm中的dw_LenCommand=0时,说明没有命令要发送,只取MCU的响应。

步骤1.插上USB,上位机在打开端口获得句柄后,通过UI_CommAPI将命令发送给UI021/022

步骤2.UI021/022在接收完USB发来的命令后,等待MCU返回响应数据,等待时间由UI_CommAPI中的dw_TimeOut参数决定。MCU通过UART返回数据给UI021/022。UART通讯协议见上。

需要注意的是:在接收到第1个字节后,UI021/022将只等待900ms接收剩余的所有数据。

如果以上两个时间超时,UI021/022将不再等待,返回超时错误给上位机,如果UI021/022已经收到MCU返回的部分数据,这些数据也一并返回给上位机。

步骤3.UI021/022将响应数据返回给上位机。

3.7.针对UI022使用的注意事项

lUI022的UART_TX/RX是OD门驱动,UI022内部已经集成14KΩ的上拉电阻,外部无需再加上拉电阻。

l请确保MCU的UART_TX/RX也是OD门驱动,并且至少可以吸入1mA的电流。如果MCU的UART_TX/RX仍有上拉电阻,请确保上拉电阻大于10K欧。

l如果MCU的UART_TX/RX不是OD门,请确保在UI022发送数据时,MCU不能同时发送数据。为了确保不损坏IO,建议在连接线上串联1KΩ的电阻。

l如果MCU必须使用双线UART,通过下述方法也可以连接UI022,但MCU固件设计时需要注意操作时序。建议您在这种情况下使用UI021会更合适。

lUI022的UART通讯由于是OD门驱动,请在PCB布线时,尽量减短UART的连接线,并减少过孔。

3.8.使用的注意事项

l如果您需要VBUS为您的系统供电,请注意,VBUS只能提供300mA的电流。

l如果您需要V33_OUT为您的系统供电,请注意,V33_OUT只能提供35mA的电流。

提醒:《UART转USB——UI021/022介绍》最后刷新时间 2024-03-14 01:14:30,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《UART转USB——UI021/022介绍》该内容的真实性请自行鉴别。