你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

F205 虚拟串口通信可靠性问题

[复制链接]
seawwh 提问时间:2016-12-27 14:22 /
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机收数据包长度不够,

收藏 1 评论4 发布时间:2016-12-27 14:22

举报

4个回答
jackten 回答时间:2016-12-27 14:35:26
谢谢分享                        
creep 回答时间:2016-12-27 15:04:03
官方的例子是环形缓存,如果你要直接发送数据的话可以自己写个函数来发送数据查询数据发送状态。你可以参考下面帖子里的发送函数,无论是标准库或者HAL库都差不多。
【F769IDISCOVERY评测】高速USB VCP和全速USB VCP 速度对比
https://www.stmcu.org.cn/module/ ... &fromuid=394920
(出处: 意法半导体STM32/STM8技术社区)



评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

seawwh 回答时间:2016-12-27 23:09:47
creep, 拜读了你的VCP测试帖子,很多的工作内容与我的相重合。
如果方便的话,请帮忙使用下列条件测试一下:

1. 使用FS VCP 测试;
2. #define APP_RX_DATA_SIZE     8192      // 发送缓冲区加大到8K
3. MCU发送的报文长度 4097-8192 之间;
4. 10000次以上的重复试验。

  我的测试发现短报文(<4096)没有出现问题。

andypanfan 回答时间:2016-12-28 08:50:09
还没有发送过这么长的数据,学习了  谢谢!!!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版