USB_VCOM示例
概述
例程展示了USB作为device设备的虚拟串口功能,可以在pc上以串口方式访问USB设备。
支持的开发板
例程可以运行在以下开发板.
em-lb525
em-lb587
注意: 一般而言,例程都是运行芯片的HCPU,“eh-lb563” 等效于”eh-lb563_hcpu”,如果想在LCPU运行例程,可以使用”eh-lb563_lcpu”。目前USB功能暂时只支持在HCPU上运行。
例程目录结构
USB_MSTORAGE工程包含了1个.c文件(main.c),下面的树状结构展示 了工程目录下的其他文件.
|--Readme.md
|--src
| |--main.c
| |--Sconscript
|--project
|--Kconfig
|--Kconfig.proj
|--proj.conf
|--rtconfig.py
|--SConscript
|--SConstruct
例程的使用
硬件需求
1、运行例程的前提,需要拥有一块支持该例程的开发板。 2、一根具备数据传输能力的USB数据线。 3、HDK52X的V1.2版本硬件需要做如下更改;
R0105 |
R0710 |
R0706 |
---|---|---|
NF |
NF |
NF |
4、HDK56X的V1.1版本硬件需要做如下更改;
R0210 |
R0211 |
R0202 |
R0204 |
R0634 |
R0633 |
R0132 |
R0107 |
R0103 |
R0106 |
---|---|---|---|---|---|---|---|---|---|
NF |
NF |
NF |
NF |
NF |
NF |
NF |
NF |
220K |
390K |
管脚配置
注意: 下面表格展示了各开发板用于VBUS控制的管脚配置。 1、HDK52X的V1.2版本中USB的插拔引脚使用NTC功能引脚复用。 2、HDK56X的V1.1版本中USB的DP与DM引脚与UART1复用了,所以需要将LOG打印的uart1修改为uart4,并关闭uart1。
vbus pin |
DP |
DM |
|
---|---|---|---|
eh-lb523 |
PA32 |
PA35 |
PA36 |
eh-lb520 |
PA32 |
PA35 |
PA36 |
eh-lb525 |
PA32 |
PA35 |
PA36 |
eh-lb561 |
PA51 |
PA17 |
PA18 |
eh-lb563 |
PAXX |
PA17 |
PA18 |
编译和烧录
按照以下步骤,可以完成编译和烧录。
scons --board=em-lb525 -j8
build_em-lb525_hcpu\uart_download.bat
(操作不同的芯片板子只需将芯片名进行更改即可,例如587板子,只需将’eh-lb525’更换成’em-lb587’)
例程输出结果展示
下面结果展示了例程在开发板运行起来后的log。如果看不到这些log,就说明例程没能按预期运行成功,需要进行原因排查。 系统启动
usb_init
Use help to check USB cdc vcom command!
msh />
1、串口数据发送;输入finsh指令”vcom_write 123456”(使用串口工具SifliTrace)
void vcom_write(int avgc, char **argv)
{
rt_size_t len = rt_device_write(usb_vcom, 0, argv[1], strlen(argv[1]));
if (len != strlen(argv[1])) rt_kprintf("write fail!\n");
else rt_kprintf("write succ!\n");
}
MSH_CMD_EXPORT(vcom_write, vcom write);
2、在对应的PC串口助手上能看到收到的”123456”
3、串口数据接收;在PC的串口助手上发送字符串。则HDK上会打印如下:abcdefg
serial_thread_entry cdc_rx_buf=abcdefg
故障排除
如果未能出现预期的log,可以从以下方面进行故障排除:
硬件连接是否正常
管脚配置是否正确
检查USB接口是否有松动
检查USB线是否具备数据传输功能
检查USB的时钟是否是60MHz的频率
如果未能识别出虚拟串口端口号,可以从以下几个方面进行故障排除
USB的时钟是否使能,可参考如下
USB数据传输线是否有数据能力
查看USB时钟是否使能
可以打开Ozone选择芯片进行连接,然后查看
如果时钟没有使能,则可进入menuconfig -–board=em-lb52d菜单,进行开启(具体操作如下)
在进行连接虚拟串口USB即可
例程扩展
如果想要修改VBUS的检测引脚号,可按照如下方式进行修改。
修改配置menuconfig –board=em-lb525中重新修改 将”usb Insertion detection PIN”中的参数修改为想要的检测引脚 D:\MyWork\code_sdk\siflisdk\customer\boards\ec-lb555xxx
修改pinmux配置文件 “\siflisdk\customer\boards\ec-lb对应的型号目录\bsp_pinmux.c”,将该引脚配置为GPIO模式;
HAL_PIN_Set(PAD_PA32, GPIO_A32, PIN_NOPULL, 1);//USB VBUS