打印
[STM32F4]

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

[复制链接]
楼主: 碧云天书
手机看帖
扫描二维码
随时随地手机跟帖
81
碧云天书|  楼主 | 2018-7-19 11:02 | 显示全部楼层 回帖奖励 |倒序浏览

stmcu.com的驱动链接已经失效了,可以到ST官网下载。win7用v1.3.1版驱动,Win10用v1.4.0版。

使用特权

评论回复
82
碧云天书|  楼主 | 2019-4-11 22:53 | 显示全部楼层
xiaoxiao0932 发表于 2019-4-2 13:36
@碧云天书  楼主,我在使用时遇到很大的问题,从flash中读取数据发送到上位机,
循环读取组成数据包,USB发 ...

如果你的数据长度超过了一次传输的最大长度,USB库函数会自动拆分传输。你只需要把数据缓冲区交给库函数USBD_CDC_SetTxBuffer就行了,用不着自己拆分。
HAL库早期的时候有64字节传输错误,请你参考《USB CDC类开发时,无法发送64整数倍的数据(续)》https://bbs.21ic.com/icview-1708972-1-1.html,看看是不是这个问题。简单的规避方法就是在传输的时候,不要按64的整数倍传输。

使用特权

评论回复
83
碧云天书|  楼主 | 2019-4-11 22:55 | 显示全部楼层
勿灬忘 发表于 2019-4-10 11:52
为什么我烧录到板子里是无法识别的设备啊!萌新一枚,有大佬指教一下么?我用的芯片是f405VET6。
...

我没有在F405上试验过。建议你换成F407芯片,先试一下,然后再移植到F405上。

使用特权

评论回复
84
碧云天书|  楼主 | 2019-4-24 10:11 | 显示全部楼层
勿灬忘 发表于 2019-4-22 10:31
这是debug的过程,只走了高速模式的部分。

这是条件编译。在项目设置中定义了USE_USB_HS,就会编译成高速模式。这时候,你的开发板上需要有USB3300这种USB PHY。如果没有,就要删除项目设置中的USE_USB_HS定义。

使用特权

评论回复
85
碧云天书|  楼主 | 2019-4-24 10:13 | 显示全部楼层
勿灬忘 发表于 2019-4-22 09:58
后来我换成407的了,还是识别unknown设备,我百度查了一下,说是枚举过程失败了。就再debug看了一下,走的 ...


枚举成功,会在串口树上多一个设备,而不是在USB设备树上。
你可以用USBlyzer软件看枚举过程。

使用特权

评论回复
86
碧云天书|  楼主 | 2019-6-25 20:33 | 显示全部楼层
chenlmm 发表于 2019-6-5 12:26
@楼主。我是刚学习usb开发,打开你的例程,看到pc串口设置是:DCB dcb; GetCommState(hCom, &dcb);
        dcb.Ba ...

在USB虚拟串口中,波特率是没有用的,USB会以最快速度传输

使用特权

评论回复
87
碧云天书|  楼主 | 2019-10-20 19:38 | 显示全部楼层
yuhuitingde2 发表于 2019-9-25 16:21
为什么我下载下来解压不了呢

可能是网站临时故障,请换个时间重新下载

使用特权

评论回复
88
碧云天书|  楼主 | 2020-5-28 08:30 | 显示全部楼层
sfd123 发表于 2020-5-19 10:16
请问有 USB_CDC_HOST例程吗?

没有做。现在STM32CubeMX做得已经挺好了,如果不是要深究USB内部的原理,可以用STM32CubeMX自动生成。注意把系统堆开大点。HAL库也自带了USB_CDC_HOST的例子。

使用特权

评论回复
89
碧云天书|  楼主 | 2021-5-22 18:30 | 显示全部楼层
xiaoxiao0932 发表于 2021-5-18 11:01
@碧云天书  楼主,我在使用时遇到很大的问题,从flash中读取数据发送到上位机,
循环读取组成数据包,USB发 ...

在361楼回复过你的,你按里面说的试过了吗?

使用特权

评论回复
90
碧云天书|  楼主 | 2023-6-23 21:28 | 显示全部楼层
backlugin 发表于 2022-11-10 12:51
STM32 USB虚拟串口如何实现流控

虚拟串口会以USB允许的最高速度传输,流控实际由USB实现。
在CDC_Receive_FS或CDC_Receive_HS函数中,通过USBD_CDC_ReceivePacket(&hUsbDeviceFS)复位OUT端点接收缓冲区,使能接受新数据,从而实现MCU接收数据的流控。
在CDC_Transmit_FS或CDC_Transmit_HS函数中,通过if (hcdc->TxState != 0) return USBD_BUSY;来实现MCU发送数据的流控。
       

使用特权

评论回复
91
碧云天书|  楼主 | 2023-6-23 21:30 | 显示全部楼层

可以呀,点击后要多等一会儿。你可以再试试

使用特权

评论回复
92
碧云天书|  楼主 | 2024-6-13 17:47 | 显示全部楼层
怪诞新 发表于 2024-2-29 10:53
表示根据你的流程,移植修改f407ZGT6,代码0错误0警告,下载到板子,PC连串口都识别不出来 ...

STM32F407有1个全速USB和1个高速USB,这里演示的是高速USB,如果使用全速USB,引脚和程序都要做相应变化。现在CubeMX已经改正了当年的bug,能生成可用的虚拟串口程序了,直接使用CDC虚拟串口就行。

使用特权

评论回复
93
碧云天书|  楼主 | 2024-6-13 17:52 | 显示全部楼层
xuanhuanzi 发表于 2024-2-29 22:27
这般功夫如何练就啊

花上3个星期,把USB协议搞通,再在纸上把USB库调用关系梳理一遍,差不多就行了。麻烦是挺麻烦的,但是不难。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则