1、STM32U5 Series系列有几个型号内部嵌入了 USB OTG 高速设备/主机/OTG 外设,并集成了收发器,.这些型号包括STM32U59x/5Ax/5Fx/5Gx。USB-IF 已通过通用串行总线规范 USB 2.0 认证。如果要使用高速USB,必须确保内部的USB PHY PLL产生精确的60MHz时钟。
内部嵌入高速USB PHY可以省掉了使用外部高速USB外设带来的麻烦,这样对有高速数据传输需求的项目带来更多的便利。
2、Nucleo-U5A5ZJ-Q 开发板的USB接口直接使用type-C,硬件连接如下:
数据通信接口对应的STM32U5A5上的PA11,PA12
USB协议栈使用USBX。threadx初始化之后添加了2个和usb传输有关系的任务
/* Create the usbx cdc acm read thread */
if (tx_thread_create(&ux_cdc_read_thread, "cdc_acm_read_usbx_app_thread_entry",
usbx_cdc_acm_read_thread_entry, 1, pointer,
1024, 20, 20, TX_NO_TIME_SLICE,
TX_AUTO_START) != TX_SUCCESS)
{
return TX_THREAD_ERROR;
}
/* Create the usbx_cdc_acm_write_thread_entry thread */
if (tx_thread_create(&ux_cdc_write_thread, "cdc_acm_write_usbx_app_thread_entry",
usbx_cdc_acm_write_thread_entry, 1, pointer,
1024, 20, 20, TX_NO_TIME_SLICE,
TX_AUTO_START) != TX_SUCCESS)
{
return TX_THREAD_ERROR;
}
枚举信息:
高速USB
端点最大传输512字节
枚举出来的虚拟串口
测试的目标是使用STM32U5A5的虚拟串口和STLINK的虚拟串口相互通信
修改一下发送程序,让STM32U5A5一直发生数据,一次发送100个字节。10ms发送一次
while(1)
{
ux_device_class_cdc_acm_write(cdc_acm, (UCHAR *)(buff),100, &actual_length);
tx_thread_sleep(MS_TO_TICK(5));
}
可以看到数据发送比较稳定,测试发现我的电脑串口来不及接收更快的数据和更大的数据包。如果想要测试高速串口的速度可以加大数据包和缩短发送数据间隔
|