Discuz! REAL TIME TECHNOLOGY

 找回密码
 立即注册
查看: 17678|回复: 9
打印 上一主题 下一主题

STM32的数据传输

[复制链接]

45

主题

0

好友

1639

积分

金牌会员

Rank: 6Rank: 6

跳转到指定楼层
楼主
发表于 2013-6-26 16:33:54 |只看该作者 |倒序浏览
关于CDC,现在的板子上面,试过CDC了,FS模式下速度不够快。波特率为115200时,传输550KB文件时需要40多秒。还测过定时1ms发送数据,大约速度也是10几K每秒。

现CDC在HS模式下,固件出现问题,暂时没有解决,联系了卖板子的工程师,他们说没有试过。

关于HID,现在FS和HS下都可以工作,但是目前的固件例子不能满足我们的需求,目前的HID是通过开发板的手柄来控制鼠标的移动,需要修改固件实现双通道的数据传输。还需研究!

关于MSC,现在的开发板没有MSC模块,具体的固件还没有细看。



回复

使用道具 举报

45

主题

0

好友

1639

积分

金牌会员

Rank: 6Rank: 6

沙发
发表于 2013-6-26 16:46:40 |只看该作者
另外根据这个帖子说的,测速度和工具有关,我使用的串口助手在速度达到一定时会出现丢数现象,但这个帖子香主的回复说:“看不见,不等于不存在;显示乱了,不等于数据出错;那是因为你的观察手段、观察工具有问题。”
PS:帖子中的VCP就是指的CDC。
http://bbs.21ic.com/icview-334294-1-1.html
回复

使用道具 举报

45

主题

0

好友

1639

积分

金牌会员

Rank: 6Rank: 6

板凳
发表于 2013-6-26 16:55:05 |只看该作者
传输文件在FS模式又多测了三次,分别传输3M,12M,16.1M文件,所需的时间均为40多秒,大约都在45±2秒左右。串口助手均显示发送完毕,但接收数目和发送数目有差值,但是根据上面帖子,可能是速度太快,工具的限制导致。
回复

使用道具 举报

405

主题

0

好友

6581

积分

内部组员

Rank: 8Rank: 8

活跃会员 论坛元老

地板
发表于 2013-6-26 23:33:22 |只看该作者
ahwwq 发表于 2013-6-26 16:55
传输文件在FS模式又多测了三次,分别传输3M,12M,16.1M文件,所需的时间均为40多秒,大约都在45±2秒左右 ...

自己修改上位机程序以适应数据的传输
回复

使用道具 举报

45

主题

0

好友

1639

积分

金牌会员

Rank: 6Rank: 6

5#
发表于 2013-6-27 09:08:40 |只看该作者
Wjianw 发表于 2013-6-26 23:33
自己修改上位机程序以适应数据的传输

CDC的上位机就是一个串口调试助手。CDC固件是通过板子的虚拟的串口和USB转COM的串口之间通信,即是两个串口之间的通信。但虚拟的串口还是USB的协议
回复

使用道具 举报

45

主题

0

好友

1639

积分

金牌会员

Rank: 6Rank: 6

6#
发表于 2013-7-10 14:07:05 |只看该作者
现在HID在FS模式下已经可以接收PC机发送的数据了,而且在固件的基础上增加了串口调试功能,可以利用printf函数将信息打印到串口助手上。下面是截图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

45

主题

0

好友

1639

积分

金牌会员

Rank: 6Rank: 6

7#
发表于 2013-7-17 11:43:05 |只看该作者
今天,我在VCP的基础上做了修改,原来的通信时虚拟串口和固件下载串口之间的信息互传,速度比较慢。

现在,我将固件下载串口只作为打印调试信息的端口,不参与通信,现在的通信是虚拟串口和PC之间互传信息,PC将信息发送给虚拟串口,然后虚拟串口将信息返回给PC,之前固件下载串口一直担当这里的PC角色。

这里虽然是虚拟的串口通信,但是是通过USB的BULK端点通信,速度应该比串口通信快,具体还没有测试,

另外,之前固件下载串口打印信息很多,占用很多时间,所以速度有误差。
目前只修改了FS模式下,
回复

使用道具 举报

45

主题

0

好友

1639

积分

金牌会员

Rank: 6Rank: 6

8#
发表于 2013-7-17 11:48:47 |只看该作者
ahwwq 发表于 2013-7-17 11:43
今天,我在VCP的基础上做了修改,原来的通信时虚拟串口和固件下载串口之间的信息互传,速度比较慢。

现在 ...

速度大约测试了一下,有几百K每秒,传一个700K的文件只需3秒左右(来回的时间)
回复

使用道具 举报

405

主题

0

好友

6581

积分

内部组员

Rank: 8Rank: 8

活跃会员 论坛元老

9#
发表于 2013-7-17 16:14:32 |只看该作者
ahwwq 发表于 2013-7-17 11:48
速度大约测试了一下,有几百K每秒,传一个700K的文件只需3秒左右(来回的时间) ...

good, go on ......
回复

使用道具 举报

45

主题

0

好友

1639

积分

金牌会员

Rank: 6Rank: 6

10#
发表于 2013-7-21 21:56:19 |只看该作者
基于VCP的数据传输:
固件修改:开发板自带的固件是利用开发板的串口与虚拟串口通信,这里需要删除串口通信的部分,然后将数据直接通过虚拟串口返回给PC机。
主要修改:移除固件工程中的usbd_cdc_vcp.c文件,直接在设备文件usbd_cdc_core.c文件中发送接收数据。
usbd_cdc_core.c文件主要定义了一个CDC的Callback结构体,包含了处理函数的接口,如下:
/* CDC interface class callbacks structure */
USBD_Class_cb_TypeDef  USBD_CDC_cb = 
{
  usbd_cdc_Init,
  usbd_cdc_DeInit,
  usbd_cdc_Setup,
  NULL,                 /* EP0_TxSent, */
  usbd_cdc_EP0_RxReady,
  usbd_cdc_DataIn,
  usbd_cdc_DataOut,
  usbd_cdc_SOF,
  NULL,
  NULL,     
  USBD_cdc_GetCfgDesc,
#ifdef USE_USB_OTG_HS   
  USBD_cdc_GetOtherCfgDesc, /* use same cobfig as per FS */
#endif /* USE_USB_OTG_HS  */
};

usbd_cdc_DataIn,usbd_cdc_DataOut,函数分别是发送和接收函数。
其他部分,需修改下LED的管脚,描述符不需要修改。

测试工具利用的是董小飞推荐的AccessPort串口调试软件。可利用文件传输功能测试速度。
测试的速度:FS模式下,大约为700KB/s,HS模式下约为10MB/s。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|Real Time Group

GMT+8, 2025-3-16 03:24 , Processed in 0.029540 second(s), 19 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部