
F205 虚拟串口通信可靠性问题 最近在一个项目中,发现F205 USB的虚拟串口向PC机发送长报文的过程中偶尔会失败,主机收到的报文长度不够。为了固定问题,取消了其他代码做了一个简单的测试环境。 使用 F205 的USB FS 端口做VCP device 与主机通信,程序是使用ST最新库中的Project\USB_Device_Examples\VCP\EWARM 略加修改而成。 通信测试程序十分简单: 主机通过虚拟串口发送2个字节的长度信息L,F205收到之后发送L长度字节的数据包返回到Host,反复发送统计通信的可靠性。 运行环境: XP, F205版本:STM32F205RGT6 7B494 VQ PHL 7B 608,F205外部的时钟为 12M, 因此代码中做了相应的修改: #define HSE_VALUE 12000000 // 配合12M时钟 #define PLL_M 12 #define APP_RX_DATA_SIZE 8192 // 发送缓冲区加大到8K static uint16_t VCP_DataTx (uint8_t* Buf, uint32_t Len) { uint32_t i; for (i=0; i<Len; i++) { APP_Rx_Buffer[APP_Rx_ptr_in++]=Buf; if (APP_Rx_ptr_in == APP_RX_DATA_SIZE) APP_Rx_ptr_in = 0; } return USBD_OK; } uint8_t Bu[8192]; static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len) { uint32_t Cnt; Cnt=Buf[0]+((u16)Buf[1]<<8); // 收到的长度信息L VCP_DataTx( Bu, Cnt); // 回发数据包 return USBD_OK; } 测试发现问题: 当F205发送数据长度为4096以上的时候,有时PC机收数据包长度不够, |
【F769IDISCOVERY评测】高速USB VCP和全速USB VCP 速度对比
https://www.stmcu.org.cn/module/ ... &fromuid=394920
(出处: 意法半导体STM32/STM8技术社区)
评分
查看全部评分
如果方便的话,请帮忙使用下列条件测试一下:
1. 使用FS VCP 测试;
2. #define APP_RX_DATA_SIZE 8192 // 发送缓冲区加大到8K
3. MCU发送的报文长度 4097-8192 之间;
4. 10000次以上的重复试验。
我的测试发现短报文(<4096)没有出现问题。