打印
[AT32F405]

AT32 USB 多功能桥接设备

[复制链接]
2168|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 muyichuan2012 于 2024-11-14 20:03 编辑

AT32 USB 多功能桥接设备


前言
AT32 USB 多功能桥接设备提供一个专有的高速USB接口,可以使用多种传输接口与目标进行通信:UART, CAN, SPI, I2C,RS485, USB使用CDC协议进行外设数据透传,可搭配USART IAP, CAN IAP, SPI IAP, I2C IAP等使用,部分系统下需要安装USB CDC驱动。
支持外设:
        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 请求格式



使能USB TO USART:
bmRequesType        bRequest        wValue        wIndex        wLength
0x40        0x01        0x0000        0x0000        0x0000

使能USB TO CAN:
bmRequesType        bRequest        wValue        wIndex        wLength
0x40        0x01        0x0001        0x0000        0x0000

使能USB TO SPI:
bmRequesType        bRequest        wValue        wIndex        wLength
0x40        0x01        0x0002        0x0000        0x0000

使能USB TO I2C:
bmRequesType        bRequest        wValue        wIndex        wLength
0x40        0x01        0x0003        0x0000        0x0000

使能USB TO RS485:
bmRequesType        bRequest        wValue        wIndex        wLength
0x40        0x01        0x0004        0x0000        0x0000



1.1.1.3        HID命令选择外设
通过设备HID设备配置当前使用的转接外设,HID VID(0x2E3C), PID(0xFF01)。
如下是上位机发送数据对于切换的外设:
HID 数据        切换外设
0xA1 0x00        USB TO USART
0xA1 0x01        USB TO CAN
0xA1 0x02        USB TO SPI
0xA1 0x03        USB TO I2C
0xA1 0x04        USB TO RS485



1.1.2        波特率修改
不同转接外设支持不同的波特率或者频率,可通过SET LINE CODING命令进行配置。
注意:受外部电路配置影响,若出现通讯失败可尝试降低通讯速率。
图 2 SET LINE CODING 命令




Line coding structure:通过dwDTERate参数传递设置的波特率。
图 3 Line Coding Structure



USART、RS485 支持波特率: 1600 bps~6 Mbps
CAN支持波特率:
表 1 CAN支持波特率
支持波特率        DwDTERate参数
1 Mbps        1000000
500 kbps        500000
250 kbps        250000
125 kbps        125000


SPI支持时钟频率:
表 2 SPI支持时钟频率
支持时钟频率        DwDTERate参数
13.5 MHz        13500000
6.75 MHz        6750000
3.375 MHz        3375000
1.6875 MHz        1687500
0.84375 MHz        843750

I2C支持时钟频率:
表 3 I2C支持时钟频率
支持时钟频率        DwDTERate参数
1 MHz        1000000
400 kHz        400000
200 kHz        200000
100 kHz        100000
50 kHz        50000
10 kHz        10000


1.1.3        硬件资源
1.        USB转接板 《AT32-USBHS-Adaptor》
2.        USB 线缆
图 4 AT32-USBHS-Adaptor图




3.        电源:设备由CN1 USB接口5V供电,并可对外供电3.3V/350mA。

4.        LED灯
●        电源Power:红色LED指示AT32 USBHS Adaptor板子已供电。
●        模式指示灯:LD1, LD2, LD3说明如下:
MODE        LD1        LD2        LD3
USB to USART        √                  
USB to SPI                 √         
USB to I2C                          √
USB to CAN        √        √         
USB to RS485        √                 √


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转接线连接
通过AT32 USBHS Adaptor进行转接,需要将转接板上的RX,TX和目标板上的TX, RX连接,如下是连接图:
图 6 USART 连接图




数据格式支持如下:
数据位数        停止位数        校验        波特率
7, 8, 9        1, 1.5, 2        奇校验,偶校验,无校验        1600bps~6Mbps

波特率和数据修改参照1.1.2节。


3        USB转CAN桥接
USB 转CAN桥接,USB端实现一个虚拟串口设备,转接板通过USB与PC上位机通信,然后通过CAN与下位机进行通信,实现USB与CAN数据的透传功能。注意转接板的CAN波特率与下位机的CAN波特率要配置相同,CAN 默认波特率500 kbps。

3.1        CAN转接线连接
通过AT32 USBHS Adaptor进行转接,需要将转接板上的CANH,CANL和目标板上的CANH, CANL连接,如下是连接图:
图 7 CAN连接图



3.2        USB CAN数据转发
USB转CAN桥接按照CAN协议进行封装,封装格式:

帧ID(4字节)        ID类型(1字节)        帧类型(1字节)        帧长(1字节)        数据(n字节,n<=8)

帧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转接线连接
通过AT32 USBHS Adaptor进行转接,需要将转接板上的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主机地址0x0C.

I2C配置:
        I2C主机模式
        地址0x0C

5.1        I2C转接线连接
通过AT32 USBHS Adaptor进行转接,需要将转接板上的SCL,SDA和目标板上的SCL,SDA连接。
AT32 USBHS Adaptor默认安装了SCL,SDA线上拉电阻4.7 kΩ(R30/R31)。
如下是连接图:

图 9 I2C连接图





5.2        USB I2C数据转发
使用I2C收发数据,一包数据最大512字节,如果需要大于512,则需要拆包发送。
USB转I2C数据封装格式:
方向(1 byte)        地址(2 byte)        透传数据长度(2 Byte)        数据(n Byte)

方向: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转接线连接
通过AT32 USBHS Adaptor进行转接,需要将转接板上的RS485-A, RS485-B和目标板上的A,B连接,如下是连接图:
图 10 RS485连接图


























AN0212_AT32_USB_Multi_Bridge_V2.0.1_CH.pdf

1.14 MB

AN0212_AT32_USB_Multi_Bridge_V2.0.1.zip

15.07 MB

使用特权

评论回复
沙发
呐咯密密| | 2024-11-14 20:35 | 只看该作者
这个板子可以直接购买吗

使用特权

评论回复
板凳
ssy123321| | 2024-12-16 14:02 | 只看该作者
mark

使用特权

评论回复
地板
我只会加减乘除| | 2024-12-18 14:47 | 只看该作者
这个拿来做调试肯定太舒服了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

198

主题

1910

帖子

29

粉丝