[STM32F4] STM32F4Cube库CDC类试用手记(含USB全速/高速和VC测试程序)

[复制链接]
144170|749
那就地方iv 发表于 2015-4-30 10:17 | 显示全部楼层
谢谢分享,学习了
feima1314 发表于 2015-5-13 11:06 | 显示全部楼层
目前正学习USB通信,求高手指导,QQ:1204862757
开场戏 发表于 2015-5-18 16:42 | 显示全部楼层
楼主,您好!我现在刚开始学习STM32F4,需要做一个数据采集模块,并且需要用USB和上位机通信,能不能用你这个程序呢?还有几点不明白:比如在这个usbd_desc.c函数里,你说不用修改,但是这里面的VID和PID每个芯片不都不一样吗?我现在用Driver Studio自己写了个驱动程序,而你提供的是ST的虚拟串口驱动,这个ST的串口驱动程序有什么作用呢?还有最后一点,你这个给的程序应该就是固件程序吧,可以这么理解吗?因为我现在刚开始学习USB,很多问题都不懂,如果有幼稚的问题,请谅解
soso1217 发表于 2015-5-20 21:07 | 显示全部楼层
我的stm32l152rc cdc,驱动装上了,端口号都出现了也,bushound可以正常收发数据,怎么串口助手打不开端口,而且串口助手也会死掉,求大神支招
mark0668 发表于 2015-5-24 00:19 | 显示全部楼层
学习一下
 楼主| 碧云天书 发表于 2015-5-24 10:44 | 显示全部楼层
开场戏 发表于 2015-5-18 16:42
楼主,您好!我现在刚开始学习STM32F4,需要做一个数据采集模块,并且需要用USB和上位机通信,能不能用你这 ...

VID和PID是识别设备的,不用改。只要使用STM32的虚拟串口驱动,VID和PID都一样。
你可以把这个示例当作STM32的固件程序,编译完以后要刷到STM32里的。
你不需要再写自己的Windows USB驱动程序了,ST的虚拟串口驱动就可以完成应用程序与USB硬件的数据中继传输。
在Windows应用程序里,只需要简单地打开虚拟串口,就可以像读写普通串口一样与STM32进行数据通讯。
 楼主| 碧云天书 发表于 2015-5-24 10:44 | 显示全部楼层
soso1217 发表于 2015-5-20 21:07
我的stm32l152rc cdc,驱动装上了,端口号都出现了也,bushound可以正常收发数据,怎么串口助手打不开端口 ...

你换一台计算机试试。我用串口助手试过,没问题的。
开场戏 发表于 2015-5-24 15:19 | 显示全部楼层
碧云天书 发表于 2015-5-24 10:44
VID和PID是识别设备的,不用改。只要使用STM32的虚拟串口驱动,VID和PID都一样。
你可以把这个示例当作ST ...

那如果我现在想用我自己写得那个驱动程序,像什么PID和VID就要改了?还有在usbd_conf.c这个函数里面的引脚配置可以不可以说一下,因为刚接触,然后你的注释又是简写的英文,不太看得懂!
soso1217 发表于 2015-5-25 09:45 | 显示全部楼层
碧云天书 发表于 2015-5-24 10:44
你换一台计算机试试。我用串口助手试过,没问题的。

图片是打开串口助手时候的数据,不知道怎么回事,枚举是成功的  bushound收发数据也可以,就是打不开串口助手,换机器了 也换串口助手了 Capture.PNG
heisexuanwo 发表于 2015-5-25 10:13 | 显示全部楼层
                if(SystickTime > 50)
                {
                        HAL_GPIO_TogglePin (GPIOB,GPIO_PIN_4);
                        HAL_GPIO_TogglePin (GPIOB,GPIO_PIN_5);       
                        //CDC_Transmit_FS(UserRxBufferFS ,20);
                        CDC_Transmit_FS(datausb ,10);
                        SystickTime = 0;
                }
我这里设置USB发送,一旦设置的时间间隔值比较小的时候,USB设备就不能识别了,必须设置发送间隔大于等于500ms才能正常工作,一直没搞清除为什么
 楼主| 碧云天书 发表于 2015-5-31 23:32 | 显示全部楼层
soso1217 发表于 2015-5-25 09:45
图片是打开串口助手时候的数据,不知道怎么回事,枚举是成功的  bushound收发数据也可以,就是打不开串口 ...

你在串口助手加入了流控制吗?我用串口助手的设置如下图所示,你照样试试看。如果还不行,你发张串口助手的贴图看看。 无标题.png
 楼主| 碧云天书 发表于 2015-5-31 23:47 | 显示全部楼层
本帖最后由 碧云天书 于 2015-5-31 23:48 编辑
开场戏 发表于 2015-5-24 15:19
那如果我现在想用我自己写得那个驱动程序,像什么PID和VID就要改了?还有在usbd_conf.c这个函数里面的引 ...
如果用你的驱动程序,就不能用虚拟串口了。程序有很多地方需要修改。
STM32F407的数据手册和参考手册至少应该通读一遍。在数据手册的附录“USB OTG high speed (HS) interface solutions”中有ULPI接口的描述,要对照前面的电路图,和程序一起对照着看。
 楼主| 碧云天书 发表于 2015-5-31 23:56 | 显示全部楼层
heisexuanwo 发表于 2015-5-25 10:13
if(SystickTime > 50)
                {
                        HAL_GPIO_TogglePin (GPIOB,GPIO_PIN_4);

你用的不是本楼的示例程序吧?我不清楚你程序的结构,根据你的描述,可能是定时发送的方式传输数据。这种方式可靠性不高,建议改用查询握手的方式,在发送之前,先检查USB设备状态,只在设备准备好之后才发送数据。
开场戏 发表于 2015-6-1 09:48 | 显示全部楼层
碧云天书 发表于 2015-5-31 23:47
如果用你的驱动程序,就不能用虚拟串口了。程序有很多地方需要修改。
STM32F407的数据手册和参考手册至少应 ...

这么麻烦的啊!好吧!谢谢你啊
q244529200 发表于 2015-6-15 14:37 | 显示全部楼层
学习啦  多谢楼主分享
xmetoo 发表于 2015-6-23 10:41 | 显示全部楼层
谢谢楼主的讲解
gzbeep 发表于 2015-7-2 16:22 | 显示全部楼层
好贴要顶,开放源码资料精神要顶
china99788 发表于 2015-7-7 19:46 | 显示全部楼层
准备搞USB3300的程序,能找到这样一篇**,可以少走很多弯路
sz_flag 发表于 2015-7-21 17:19 | 显示全部楼层
楼主太厉害了!!
812515899 发表于 2015-7-30 11:01 | 显示全部楼层
楼主,我现在刚接触USB,想做USB转SPI,是不是只要参照你这个转串口换成转SPI就行了呢,还有驱动层怎么开发呢,是用libusb可以做吗,USB下面有好多类,什么CDC,MSC,HID,那我应该要用什么类去做这个事情呢?希望楼主给点建议,不知道现在还会不会回复。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0