本帖最后由 muyichuan2012 于 2024-7-24 13:06 编辑
AN0212-AT32 USB桥接透传工具应用指南
前言
AT32 USB 多功能桥接设备提供一个专有的高速USB接口,可以使用多种传输接口与目标进行通
信:UART, CAN, SPI, I2C,RS485, USB使用CDC协议进行外设数据透传,可搭配USART IAP,
CAN IAP, SPI IAP, I2C IAP等使用,部分系统下需要安装USB CDC驱动。
USB CDC驱动下载链接:https://www.arterytek.com/file/download/1701
支持外设:
USB to USART
USB to CAN
USB to SPI
USB to I2C
USB to RS485
支持型号列表:
支持型号 AT32F405 系列
1 概述
1.1 USB Bridge 特点
USB 端使用USBHS CDC 协议虚拟一个COM 口,支持多种外设接口,可具体需要选择转接外设接
口,同一时刻只支持转一种外设,可通过USB 控制请求配置当前使用哪一个外设,同时也支持通过
SET LINE CODEING 命令修改外设波特率。
支持外设:
USB to USART
USB to CAN
USB to SPI
USB to I2C
USB to RS485
1.1.1 外设选择
可通过3 种方法来选择外设:
通过代码初始化时固定选择支持的外设,后续不再更改
通过USB 控制端点SETUP 请求来实时选择当前外设
通过USB HID 命令请求来选择当前外设
1.1.1.1 初始化选择外设
USB Multi Bridge 在初始化时可通过函数接口usb_multi_bridge_set_type(USB_TO_USART);设置当
前使用接口,包括如下参数:
USB_TO_USART:USB 转串口
USB_TO_CAN:USB 转CAN
USB_TO_SPI:USB 转SPI
USB_TO_I2C:USB 转I2C
USB_TO_RS485:USB 转RS485
USB_TO_IDLE:当前IDLE 状态,没有转接外设
1.1.1.2 USB 控制请求选择外设
另外可通过USB 端点0 SETUP 控制传输命令配置当前支持的转接接口,可参考<Universal Serial
Bus Specification 2.0 >,如下是SETUP 数据包格式:
图 1 USB SETUP 请求格式
1.1.1.3 HID 命令选择外设
通过设备HID 设备配置当前使用的转接外设,HID VID(0x2E3C), PID(0xFF01)。
如下是上位机发送数据对于切换的外设:
1.1.2波特率修改
不同转接外设支持不同的波特率或者频率,可通过SET LINE CODING 命令进行配置。
图 2 SET LINE CODING 命令
Line coding structure:通过dwDTERate 参数传递设置的波特率。
图 3 Line Coding Structure
USART、RS485 支持波特率: 1600bps~6Mbps
CAN 支持波特率:
表 1 CAN 支持波特率
SPI 支持时钟频率:
表 2 SPI 支持时钟频率
I2C 支持时钟频率:
表 3 I2C 支持时钟频率
1.1.3 硬件资源
1. USB 转接板 《AT32-USBHS-Adaptor》
2. USB 线缆
图 4 USB Multi Bridge 图
1.1.4 软件资源
1) SourceCode\utilities\usb_multi_bridge
注:示例工程基于keil v5建立,若用户需要在其他编译环境上使用,请参考AT32F403A_407_Firmware_Library_V2.
x.x\project\at_start_f403a\templates中各种编译环境(例如IAR6/7/8,keil 4/5, eclipse_gcc)进行对应修改即可。
1.2 USB 转接 demo 使用
1) 打开usb_multi_bridge工程源程序,选择对应需要转接的外设,通过调用
usb_multi_bridge_set_type(USB_TO_USART)来设置当前转接外设,编译后下载到转接板.
2) 连接USB线到PC,可在PC设备管理器看看到一个虚拟COM设备。可通过上位机虚拟串口工具
调试。
图 5 使用连接图
2 USB 转 USART
USB 转USART 桥接,USB 端实现一个虚拟串口设备,转接板通过USB 与PC 上位机通信,然后通
过USART 与下位机进行通信,实现USB 与USART 数据的透传功能。注意转接板的USART 波特率
与下位机的USART 波特率要配置相同。
2.1 USART 转接线连接
通过USB Multi Bridge 进行转接,需要将转接板上的RX,TX 和目标板上的TX, RX 连接,如下是连
接图:
图 6 USART 连接图
数据格式支持如下:
波特率和数据修改参照1.1.2 节。
3 USB 转CAN 桥接
USB 转CAN 桥接,USB 端实现一个虚拟串口设备,转接板通过USB 与PC 上位机通信,然后通过
CAN 与下位机进行通信,实现USB 与CAN 数据的透传功能。注意转接板的CAN 波特率与下位机的
CAN 波特率要配置相同,CAN 默认波特率500Kbit。
3.1 CAN 转接线连接
通过USB Multi Bridge 进行转接,需要将转接板上的CANH,CANL 和目标板上的CANH, CANL 连
接,如下是连接图:
图 7 CAN 连接图
3.2 USB CAN 数据转发
USB 转CAN 桥接按照CAN 协议进行封装,封装格式:
帧ID:支持11 位的标准帧ID,和29 位扩展帧ID,按照LSB 顺序传输。
ID 类型:0 表示标准ID(此时帧ID 低11 位有效),1 表示扩展ID(此时帧ID 低29 位有效)
帧类型:0 表示数据帧,1 表示远程帧
帧长:按照CAN2.0 的标准,帧长小于等于8
数据:帧数据
CAN 波特率支持参考1.1.2 章节。
USB 数据转到CAN 总线:
USB 到CAN 按照一包USB 数据转成一帧CAN 数据。
收到一包USB 数据如:0x00 0x00 0x00 0x00 0x00 0x00 0x02 0x11 0x22
前4 个字节0x00 0x00 0x00 0x01:表示帧ID(MSB)
第5 个字节0x00:表示是一个标准帧ID,低11 位位标准帧ID
第6 个字节0x00: 表示是一个数据帧
第7 个字节0x02:表示此数据帧长度
第8,9 字节0x11,0x22:表示具体帧数据
转换成CAN 帧后:
标准帧ID=0x0001
DLC=0x02
DATA0=0x11
DATA1=0x22
CAN 总线数据转到USB:
CAN 同样按照一帧数据转换成一包USB 数据:
收到一帧标准数据帧:ID=0x02,DLC=0x03, DATA0=0x11, DATA0=0x22 ,DATA0=0x33
转换成USB 包之后:0x00 0x00 0x00 0x02 0x00 0x00 0x03 0x11,0x22,0x33
前4 个字节0x00 0x00 0x00 0x02:表示标准帧ID
第5 个字节0x00:表示是一个标准帧ID
第6 个字节0x00: 表示是一个数据帧
第7 个字节0x03:表示此数据帧长度
第8,9,10 字节0x11,0x22 0x33:表示具体帧数据
4 USB 转SPI 桥接
USB 转SPI 桥接USB 端实现一个虚拟串口设备,转接板通过USB 与PC 上位机通信,然后通过
SPI 与下位机进行通信,实现USB 与SPI 数据的透传功能,转接板的SPI 作为主机。
SPI 主机配置:
SPI 主模式
全双工模式
8 bit MSB
Polarity: CPOL High, CPHA low, NSS software
4.1 SPI 转接线连接
通过USB Multi Bridge 进行转接,需要将转接板上的MOSI,MISO,SCK,CS 和目标板上的
MOSI,MISO,SCK,CS 连接,如下是连接图:
图 8 SPI 连接图
4.2 USB SPI 数据转发
SPI 使用全双工进行收发数据,一包数据最大512 字节,如果需要大于512,则需要拆包发送。
上位机数据发送:
示例:上位机需要透传8 个数据给目标板,对应数据:0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08
1. 上位机直接发送8 个字节 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08
2. 上位机需要再读取8 个字节的dummy data
上位机数据读取:
示例:上位机需要从目标板读取8 个数据
1. 上位机发送8 个字节的dummy data
2. 上位机读取8 个字节的目标板数据
SPI 支持时钟频率参考1.1.2 章节。
5 USB 转I2C 桥接
USB 转I2C 桥接USB 端实现一个虚拟串口设备,转接板通过USB 与PC 上位机通信,然后通过
I2C 与下位机进行通信,实现USB 与I2C 数据的透传功能,转接板的I2C 作为主机。I2C 主机地址
0Xc0.
I2C 配置:
I2C 主机模式
地址0x0C
5.1 I2C 转接线连接
通过USB Multi Bridge 进行转接,需要将转接板上的SCL,SDA 和目标板上的SCL,SDA 连接,如下是
连接图:
图 9 I2C 连接图
5.2 USB I2C 数据转发
使用I2C 收发数据,一包数据最大512 字节,如果需要大于512,则需要拆包发送。
USB 转I2C 数据封装格式:
方向:0x55 表示发送I2C 数据到目标板,0XAA 表示从目标板读取I2C 数据
地址:2 字节目标板地址(MSB)
数据长度:发送或者读取的数据长度,长度需要小于等于507(MSB)
数据:发送或者读取的数据
I2C 支持时钟频率参考1.1.2 章节。
上位机数据发送:
示例:上位机需要透传8 个数据给地址为0xA0 的目标板,对应数据:0x01 0x02 0x03 0x04 0x05
0x06 0x07 0x08
上位机发送数据包: 0x55 0x00 0xA0 0x00 0x08 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08
上位机数据读取:
示例:上位机需要从地址为0x2C 的目标板读取8 个数据
1. 上位机发送0xAA 0x00 0xA0 0x00 0x08 表示要读取8 个数据
2. 上位机再读取USB 返回数据进行解析:0xAA 0x00 0xA0 0x00 0x08 0x01 0x02 0x03 0x04 0x05
0x06 0x07 0x08
6 USB 转RS485 桥接
USB 转485 桥接USB 端实现一个虚拟串口设备,转接板通过USB 与PC 上位机通信,然后通过
485 与下位机进行通信,实现USB 与485 数据的透传功能.
6.1 RS485 转接线连接
通过USB Multi Bridge 进行转接,需要将转接板上的RS485-A, RS485-B 和目标板上的A,B 连接,如
下是连接图:
图 10 RS485 连接图
|
![](//uc2.21ic.com/avatar.php?uid=1203788&size=small) 共1人点赞
|
您好!这个USB转接板硬件资料有开放出来吗?附件里面只有软件@muyichuan2012