完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32CubeMX生成的USB工程,默认的IN端点都是0x81。我尝试将它改为其它端口,比如0x82、0x83、0x84等都会导致数据上传失败。具体的现象是可以触发TXFE中断,但是无法触发XFRC中断。OUT端点可以适应其它值,比如0x02、0x03等。实验了HID和CDC工程都是一样,看上去像是这个MCU的IN端点只支持0x81。但是看了下Refernece Manual,只找到关于IN或OUT支持几个端点的说明。
|
|
相关推荐
2个回答
|
|
对于F407而言,除了0端点外,还分别有3个IN端点和3个OUT端点。你是可以增加IN端点的,比方0x82,0x83.在USBD_LL_Init()函数把总的端点数给出来,做好地址分配、FIFO分配、开启相应的端点等,把各个端点的表述符USBD_CDC_CfgDesc写清楚。可以参考下CDC的工程来修改。
|
|
|
|
STM32F407的USB IN端点并不一定只能是0x81。实际上,STM32F407支持多个IN和OUT端点。在STM32CubeMX中,IN端点默认设置为0x81,但这并不意味着它不能使用其他值。以下是一些建议来解决您遇到的问题:
1. 确保您正确配置了USB端点。在STM32CubeMX中,您可以在“配置USB核心”选项卡中设置端点。请确保您选择了正确的传输类型(例如,控制、等时、中断或批量)并分配了正确的端点地址。 2. 检查您的USB设备描述符。在您的USB设备描述符中,确保您正确地定义了端点的数量和类型。例如,如果您想要使用0x82作为IN端点,请确保在设备描述符中添加了一个等时传输类型的端点,其地址为0x82。 3. 确保您的USB类驱动程序支持您选择的端点地址。在某些情况下,类驱动程序可能期望特定的端点地址。如果您更改了端点地址,可能需要相应地更新类驱动程序。 4. 检查您的中断处理函数。确保您的中断处理函数正确地处理了TXFE和XFRC中断。如果TXFE中断被触发,但XFRC中断没有被触发,这可能意味着数据传输没有完成。请检查您的中断处理函数,确保在传输完成后正确地清除中断标志。 5. 使用USB协议分析器或逻辑分析仪来检查USB通信。这可以帮助您确定问题是否出在硬件上,还是软件上。 总之,STM32F407的IN端点不仅限于0x81。请确保您正确配置了端点,并检查您的设备描述符、类驱动程序和中断处理函数。如果问题仍然存在,请尝试使用USB协议分析器或逻辑分析仪来进一步诊断问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1379 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1369 浏览 1 评论
795 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
569 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1412 浏览 2 评论
1762浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
492浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
426浏览 3评论
416浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
394浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-1 19:17 , Processed in 0.798196 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号