野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20714|回复: 8

STM32F429做USB—外部FLASH模拟U盘实验求指教

[复制链接]
发表于 2019-3-19 14:40:15 | 显示全部楼层 |阅读模式
2火花
问题描述:我用STM32F429做USB—外部FLASH模拟U盘实验,例程当中用的是USB的HS模式,USB OTG HS(HS需要外扩高速PHY芯
片实现),但是核心板上并没有这个芯片(我做实验只用到了核心板,没有用底板),但是这个实验也能正常进行,
并且可以识别到U盘,并且往里面拷贝文件,为什么呢?
相关截图如下:
usb.jpg

最佳答案

查看完整内容

stm32芯片内置低速phy,我们的底板也是没有用高速phy的,核心板本身就支持usb
回复

使用道具 举报

发表于 2019-3-19 14:40:16 | 显示全部楼层
stm32芯片内置低速phy,我们的底板也是没有用高速phy的,核心板本身就支持usb
回复

使用道具 举报

 楼主| 发表于 2019-3-19 15:51:31 | 显示全部楼层
flyleaf 发表于 2019-3-19 14:56
stm32芯片内置低速phy,我们的底板也是没有用高速phy的,核心板本身就支持usb

好的,了解。
我想把例程改为使用FS模式,我把编译设置
USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_USB_OTG_HS,USE_EMBEDDED_PHY改为如下:
USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_USB_OTG_FS
然后在usb_bsp.文件作出引脚和中断设置的修改,如下:
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
        //修改成FS模式
        GPIO_InitTypeDef         GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_OTG2_FS);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_OTG2_FS);
       
        RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_OTG_FS, ENABLE);  
}

void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}
其他地方代码没有改动,然后将USB线改接到PA11和PA12,电脑右下方提示无法识别的USB设备。
然后我通过串口输出调试语句发现,程序一直没有进入USB中断。请问问题出在哪里,还有什么需要改动是我没有改好的呢?
回复

使用道具 举报

 楼主| 发表于 2019-3-19 16:02:14 | 显示全部楼层
flyleaf 发表于 2019-3-19 14:56
stm32芯片内置低速phy,我们的底板也是没有用高速phy的,核心板本身就支持usb

做好了  谢谢火哥
回复

使用道具 举报

发表于 2020-4-1 19:42:38 | 显示全部楼层
美丽的时光机器 发表于 2019-3-19 15:51
好的,了解。
我想把例程改为使用FS模式,我把编译设置
USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_USB ...

楼主这个改好了吗?究竟要怎么改?
回复

使用道具 举报

发表于 2020-4-1 19:43:50 | 显示全部楼层
美丽的时光机器 发表于 2019-3-19 15:51
好的,了解。
我想把例程改为使用FS模式,我把编译设置
USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_USB ...

还有,为什么野火的代码用的HS,GPIO的AF却设置为FS?
源代码如下:
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_OTG2_FS);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_OTG2_FS);
        
        RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_OTG_HS, ENABLE);  
回复

使用道具 举报

 楼主| 发表于 2020-4-21 20:14:31 | 显示全部楼层
嘿嘿_B7BKu 发表于 2020-4-1 19:43
还有,为什么野火的代码用的HS,GPIO的AF却设置为FS?
源代码如下:
        GPIO_PinAFConfig(GPIOA, GP ...

太久了我忘记了~
回复

使用道具 举报

发表于 2020-5-12 15:49:28 | 显示全部楼层
嘿嘿_B7BKu 发表于 2020-4-1 19:43
还有,为什么野火的代码用的HS,GPIO的AF却设置为FS?
源代码如下:
        GPIO_PinAFConfig(GPIOA, GP ...

GPIO_AF_OTG2_FS 是GPIO_AF_OTG_HS_FS宏定义而来的,本质上还是使用的USB HS
回复

使用道具 举报

发表于 2020-5-12 15:51:16 | 显示全部楼层
美丽的时光机器 发表于 2019-3-19 15:51
好的,了解。
我想把例程改为使用FS模式,我把编译设置
USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_USB_O ...

把GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_OTG2_FS)中GPIO_AF_OTG2_FS改为GPIO_AF_OTG1_FS试试看
回复

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-19 03:27 , Processed in 0.063927 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表