完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由于项目需要,需要USB来传输,之前试的HID模式是已经调通,HID基于中断传输,一毫秒侦测一次,每次的传输量为64字节,一般传输量小的可以采用这种模式,实时性也高,并且开发上位机也方便,不用自己再搞驱动什么的,但是满足不了我的需求,后面查资料开始采用bulk模式
我的芯片采用外部8M的晶振,超频到72M,配置USB时钟48M 1.2:USB配置 USB的模式选择device模式,作为从机。 然后选择Middleware-USB_DEVICE,选择模式为CDC。 USB2.0标准下定义了很多子类,有音频类,CDC类,HID,打印,大容量存储类,HUB,智能卡等等,USB CDC类的通信部分主要包含三部分:枚举过程、虚拟操作和数据通信。CDC具体研究的话,可以查看USB官网资料,以及ST关于CDC的介绍 PID和VID是USB设备的唯一识别码,默认的CUBEMX生成的,插入电脑会显示ST Virtual Port,ST官网对应的也有相关的驱动。用户可以根据自己选择定义PID和VID,以及修改描述符,驱动的话自己开发。 然后生成工程代码。
配置如下 2.2:u***d_cdc.c 修改配置信息 USB的配置信息有很多包括配置描述符 接口描述符、端点描述符等等,但属于其配置信息, 其位于u***d_cdc.c文件中,对应有三处
如果怕出什么问题,可以将三个配置信息默认配置一样。 数组的长度对应做下修改 USB_CDC_CONFIG_DESC_SIZ 长度为32 #define USB_CDC_CONFIG_DESC_SIZ 32U 2.3:u***d_cdc.c USB初始化以及发送和接收 2.3.1 USB初始换函数
函数定义在u***d_conf.c文件中。
网上看到好多使用双缓冲用来接收的用来提高速度。 定义两个数组用来接收 uint8_t USBD_RXBuffer1[CDC_DATA_FS_MAX_PACKET_SIZE]; uint8_t USBD_RXBuffer2[CDC_DATA_FS_MAX_PACKET_SIZE]; uint8_t BufFlag = 0x01; //用于判断两个缓冲区是否有数据 具体速度有没有提高,没怎么试过 2.4:MAIN函数 Main函数主要实现的就是,接收PC端发送的数据,然后同样的数据在发送的PC端。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 12:15 , Processed in 0.756618 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号