STM32CUBE+USB+EMMC+SD

该博客介绍了如何使用STM32CUBE配置和编程,使得STM32H743IIKx芯片能够同时驱动EMMC和SD,并通过USB接口作为两个独立的U盘设备使用。详细步骤包括STM32CUBE的配置,如时钟树设置,以及软件部分对sdmmc.c、usbd_core.h、usbd_storage_if.c的修改。最终成功实现了电脑识别并挂载两个存储设备(F:SD,G:EMMC)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32CUBE+USB+EMMC+SD,使用USB驱动挂载的两个存储介质(SD和EMMC)充当U盘使用。

现在要找到USB+SD的例子很多,关于驱动两个存储芯片却鲜有例子,正好自己的板子上同时搭载了SD和EMMC,便尝试做了一个这个驱动程序,同时也记录下来方便以后自己查看以及分享给需要的人。


一、STM32CUBE配置

我所使用的cube版本为6.2.1,使用的STM32为STM32H743IIKx。

1:配置EMMC

因为我的板子上的emmc有点问题,所以我分频系数选择了2(或更高)


2:配置SD


3:配置USB

选择Device_Only,打开VBUS_sensing


4:配置USB_DEVICE

选择MSC,其他均使用默认


5:时钟树

通过修改PLL1Q的输出来修改SDMMC和USB的时钟(接触的大多EMMC都是50MHz,所以这里修改为48MHz,SDMMC1,2也按照这个频率进行分频)


6:Project Manager

注意Stack调大一些

注意这里使用H7_V1.7.0(最新的包在初始化EMMC时有问题,就没去使用了,有时间再去定位问题)

:


二:软件部分

对sdmmc.c、usbd_core.h、usbd_storage_if.c做些修改即可

1:sdmmc.c

如果两个初始化函数中没有我框出来的这两个函数,请注意自己添加上去(有时候cube生成就有,有时候就没有,很纳闷)


2:usbd_core.h

注意框出来的函数中圈出来的两个变量类型,修改为uint32_t,不然会编译报错的(H7_V1.9.0解决了这个bug)


3:usbd_storage_if.c

重点来了,改动最大的文件,就不详述了,添加的部分都用红框标了出来(注意添加在USER BEGIN和END之间)


现在可以编译烧录了,下载好后将USB连接开发板和电脑,可以发现电脑读出了两个盘(F是SD,G是EMMC)

### 关于STM32MP257的详细介绍 #### 一、概述 STM32MP257是一款高性能微处理器单元(MPU),集成了双核Arm® Cortex®-M4,旨在满足工业自动化、消费电子和个人护理设备等领域的需求[^1]。 #### 二、特性 - **多核架构**:具备两个运行频率可达800 MHz 的 Arm® Cortex®-A7核心以及一个工作在209 MHz下的Cortex®-M4内核。 - **多媒体处理能力**:支持高达FHD分辨率(1920×1080像素)视频解码和编码功能。 - **图形加速器**:内置Vivante GC320 GPU, 支持OpenGL ES 2.0/3D 图形渲染标准。 - **丰富的外设接口**:提供USB OTG HS控制器、千兆以太网MAC、SD/eMMC存储卡接口等多种通信选项。 - **安全机制**:集成TrustZone技术实现硬件级的安全隔离保护措施[^2]。 ```python # Python伪代码展示如何初始化STM32MP257中的某个外设(如GPIO) import stm32mp_gpio as gpio def init_gpio(pin_number): pin = gpio.Pin(pin_number) pin.mode(gpio.MODE_OUTPUT) return pin ``` #### 三、应用场景 该系列器件非常适合应用于智能家居控制中心、楼宇管理系统、医疗仪器仪表以及其他任何需要强大计算能力和良好连接性的场合。此外,在教育领域也可作为教学平台来教授嵌入式系统设计原理。 #### 四、开发资源 为了简化基于此平台的应用程序创建过程,意法半导体提供了完整的软硬件解决方案包: - Linux发行版构建框架(Buildroot/Yocto Project); - STM32CubeMX GUI 工具帮助开发者快速完成项目配置; - STM32CubeIDE 集成环境专门针对Cortex-M4部分编程而优化; - 官方文档库涵盖了从入门指南到高级特性的全面资料。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值