STM32对于U盘访问的硬件软件实现

发布时间:2024-05-17 01:23:54 来源:ub8登录1.0 作者:ub8登录1.0 ub8登录1.0

  一些应用中,涉及到对存储设备的数据访问,例如USD卡、U盘。具备USBOTG控制器的STM32,能轻松实现对U盘访问的支持。本文介绍STM32对于U盘访问的硬件/软件实现。介绍如何利用STM32CubeMX,一步一步实现STM32访问U盘。仅需简单的几个步骤, 实现U盘访问的应用开发。

  MSC设备包含很多种,例如U盘、读卡器、移动硬盘等。STM32通过内含的USB OTG控制器(支持主机模式)和USB主机库,实现对MSC类的支持,进而实现对U盘访问的支持。本文中不涉及到USB MSC (Mass Storage Class) 的详细介绍 ,更多MSC类介绍,请参考《USB进阶培训_Part1_USB类的介绍》。

  不同的STM32系列,对USB的支持情况如下。对于STM32F105/107、STM32F2、STM32F4、STM32F7和STM32H7系列,部分型号支持USB OTG,可以在一定程度上完成USB 主机和从机。U盘作为USB MSC设备,需要STM32作为USB MSC主机,实现两者间的访问。(注:系列中不是所有型号都支持OTG,以具体型号手册为准。)

  一步一步呈现访问U盘的STM32开发过程,实现对U盘的读写等操作。在下面的详解步骤中,会介绍一些主机库和应用机制的内容。如果希望快速开发,可以直接按照步骤开发,略过讲解性的内容。

  出于遵循完全一致的实验步骤考虑,实例基于ST发布的STM32F469I-DISCO板。除此之外,开发者也能够准确的通过自己的目标板的详细情况,参考后面介绍的实例进行配置。

  注1:STM32F469I-DISCO板的原理图、用户手册等资源可通过链接获取。

  注2:STM32CubeF4可根据介绍方式获取,或者直接在官网下载,然后通过STM32CubeMX从本地导入软件包功能完成导入。

  2.外设和中间件的选择。首先结合STM32F469I-DISCO板的原理图,了解功能实现必备的接口的使用情况,如下表所示。

  注1. 在不考虑SRP和HNP时,访问U盘,只需要STM32的USB OTG的USB数据正负线即可。

  根据硬件情况,选择调试接口、外部时钟、USB OTG FS和USB中间件,如下图所示。

  在引脚分布图,PB2引脚上单击鼠标左键,选择‘GPIO_Output’,如下图所示。

  3. 配置时钟,使USB时钟为48MHz,如下图。其中,步骤2中外部高速晶振值要和硬件上匹配。由于USB时钟精度要求高,STM32F469内部时钟无法达到一定的要求,必须选用外部高速时钟,如步骤3所示。对于HCLK(处理器时钟,步骤6配置),根据性能有必要进行设置,或者简单的设置为最大值。

  在USB_HOST界面,配置Drive_VBUS_FS关联引脚为PB2(与硬件连接对应)。VBUS电源开关器件为STMPS2151STR,高电平使能。所以配置如下,在初始化后为低电平(图中步骤7~10)。其他保持默认。

  5.设置工程,如下图所示(点击菜单栏ProjectSettings打开)。选择对应的IDE和希望基于的STM32Cube软件包位置。实例简单,堆栈占用小,堆栈配置保持默认即可。除EWARM外,STM32CubeMX还支持MDK-ARM、TrueStudio、SW4STM32等。

  工程生成后,会出现提示框,点击Open Project打开工程。工程架构和文件结构如下图(右侧为USB主机应用架构)。生成工程包含全部层的实现,开发者在生成工程的基础上,可直接调用写读等API,实现对U盘的访问。

  注: USB主机库和各文件功能介绍,请参考《UM1720 STM32Cube USB host library》。

  STM32CubeMX生成的工程,调用STM32Cube USB主机库。在库中,软核将USB事件传输至用户层,并执行回调用户函数。方便在用户层的回调函数中添加应用实现。用户回调事件如下表。

  在HOST_CLASS状态中,软核会通知应用类初始化完成。对U盘的访问,应放置在应用层接收到类初始化完成事件后,即HOST_USER_CLASS_ACTIVE事件后,否则就没办法正常工作。

  注1:省略号为了表示还有别的没有改动部分的源码,不用添加进源码中。展现的源码为越来越好的表现出对应工程中位置,包含一些生成工程时原有的源码。

  注2:MX_DriverVbusFS()中,应该要依据真实的情况进行配置。实验板上采用的电源开关STMPS2151STR高电平有效。在一些系列STM32的生成工程中,MX_DriverVbusFS函数原型已经生成,此时无需再添加这个函数的声明,但要确认函数中引脚设置对应关系(形参为1时表示要激活)。

  连接U盘至STM32F469I-DISCO板的USB_User连接口。IAR进入在线调试模式,利用在线调试,查看获取到的U盘信息和写读缓存中的数据情况。

  运行完毕后,连接U盘至PC,利用PC上安装的Active@ Disk Editor(外部链接)查看U盘对应扇区数据(10扇区对应起始位置为5120),从而验证U盘信息获取和写读功能正常。如下图所示。

  STM32CubeMX加速了STM32的开发过程。即使类似USB这种复杂的外设使用,也可以如上述实例,只需要几个步骤即能轻松实现USB应用。并提供了除MSC类之外,HID、UAC、CDC等类支持。

  下面跟大家说一下STM32单片机的端口重映射,这里是以USART1的重映射为例. STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节约引出管脚,这些内置外设绝大多数都是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚能够最终靠重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的. 三个红框交汇处.STM32F103VCT6 这个CPU的USART1接的是PB6/PB7 但是上电初始化后默认功能并非是USART1.所以想要用串口功能 .必须用端口重映射.. 各位明白,STM32的单片机每个功能模块有自己

  端口复用&重映射(USART Remap) /

  ## 1 准备工作 1) 硬件设备:CCS811模块、六合一、USB-TTL、杜邦线单片机。给大家看下图片。 CCS811 STM32F103C8T6 2)软件准备 : KEIL 5 (5.17版本的) 3)示例代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 ## 2 接线与STM32F103C8T6使用杜邦线连接。具体接线如下图所示: 具体接线---------------SHT30 VCC -------------------------V

  去读取CCS811气体传感器的数据 /

  在一项目中,使用STM32作为主控,程序运行一段时间后概率出现主循环卡死现象。 问题分析如下: 1、程序USART2不停接收并处理串口数据,波特率115200; 2、主循环卡死; 3、USART1中断及TIM2中断响应函数运行正常;(USART1及TIM2中断优先级均比USART2高) 4、出现现象后,拔掉USART2的接收数据线,现象不能回复正常; 5、出现现象后,拔掉后再插入USART2的接收数据线,现象不能回复正常; 6、并未出现HardFault现象; 基于以上4点,可能原因见下: 1、USART2接收中断标志没有清除; 2、堆栈数据溢出,导致程序异常; 3、USART2中断重入导致异常; 4、USART2中断

  串口中断卡死主循环一直进中断问题分析 /

  在产品设计时,倘若没考虑应用环境对电源隔离的要求。产品到了应用时就会出现因设计的具体方案的不当导致的系统不稳定,甚至会出现高压损坏后级负载的情况,及出现危害人身财产安全的情况。因此产品设计要不要隔离至关重要。 “南航一名23岁空姐在iPhone5充电时打电话被电死”,新闻在网上引起广泛关注。充电器也能能危害生命?专家分析手机充电器内部变压器漏电,220VAC的交流电漏电到直流端,并通过数据线传导到了手机金属壳上,最后导致触电身亡,发生无可挽回的悲剧。 那么手机充电器输出端为何会带有220V的交流电呢?隔离电源的选型要注意些什么事项?如何区分电源是隔离与非隔离?业内通用的看法是: 隔离电源:电源的输入回路和输出回路之间没有

  设计02-电源要不要隔离? /

  0 引言 LED显示屏主要由电流驱动电路及LED点阵阵列、控制管理系统和PC端管理软件三部分构成(图1)。控制管理系统负责接收、转换和处理各种外部信号,并实现扫描控制,然后驱动LED点阵显示需要的文字或图案。控制管理系统作为LED显示屏的核心部分,直接决定了显示屏的显示效果和性能的优劣。本文详细分析采用Verilog HDL对ATF1508AS进行编程,实现双口RAM访问和产生LED点阵驱动电路所需的各种时序信号。 1 LED显示屏的基本结构及关键技术 本系统模块设计中,控制管理系统采用单片机+CPLD的方案来实现,整个控制管理系统可分为:信号接收及处理模块和CPLD的扫描控制模块和LED点阵驱动模块,如图1 所示。本系统的关键技术是使用双口

  设计 /

  移植了个自定义HID USB程序到STM32开发板上,成功运行,但是最近自己做的板子上(用的是F103C8T6)就不行,死活没有反应。经过几番调试终于察觉缺陷,以下做个小结: 1.一定要保证USB时钟是48MHZ; 使用PLL作系统时钟SCLK;而USB时钟只能是SCLK的1分频或者1.5分频,要得到48MHZ的USB时钟,则SCLK只能为48MHZ或者72MHZ;由于我是用的内部晶振8MHZ,PLL时钟最大是8MHZ Div2 再倍频16 也就是最大只能到64MHZ,所以只能配成48MHZ才能满足规定的要求;若使用外部晶振,PLL能直接倍频HSE 而不用Div2; 2.注意中断向量名称; 由于我使用的是Keil 里

  纸币清分是银行的一项重要业务。 目前,国内很多银行使用的纸币清分机都是由国外进口的,价格昂贵。国产纸币清分机很少,而且功能都很有限,很难满足高速实时性的要求,尤其是能够用图像处理的方法来识别纸币的纸币清分机还刚刚起步。 为此,设计了一种纸币识别系统。该系统以DSP为核心处理器,结合图像 传感器 CCD和复杂可编程逻辑器件CPLD,并辅以高性能的模/数转换器AD9200,进行纸币图像的采集、处理。该系统主要是针对人民币第四版和第五版的5元、10元、20元、50元、100元九种纸币进行识别,利用数字图像处理技术和改进的自组织映射神经网络(SOFM)提取纸币图像的长度、宽度、方向块特征,区分纸币的面值、正反面与正反向。最终完成的系统能

  根据市场研究机构iSuppli日前发布预测,便携式媒体播放器(PMP)/MP3播放器出货量将从2007年的2.169亿部增长到2011年的2.686亿部,年复合增长率为5.5%。 iSuppli预计,PMP将保持相对多媒体手机的技术优势,很多人预料这两类产品将在未来展开市场之间的竞争。 iSuppli消费电子高级分析师Chris Crotty表示,“由于硬件成本继续降低,以及迅速增加的在线视频和音频内容,PMP/MP3前景看好。在用户访问和下载网上内容方面,操作将会慢慢的简单。”

  的智能手表项目案例源代码(智能穿戴领域应用)

  H7B3I的FFT频谱仪

  H7B3I-DK的智能家居助手,PCB和源码

  设计

  使用STM32 Nucleo撬开针对物联网的ARM mbed IDE之门

  有奖直播 与英飞凌一同革新您的电动汽车温控系统:集成热管理系统(低压侧)

  报名直播赢【保温杯】等好礼|TI MSPM0 MCU 在汽车系统中的应用

  ADI世健工业嘉年华—有奖直播:ADI赋能工业4.0—助力PLC/DCS技术创新

  【下载】LAT1317 STM32CubeProgrammer和STM32CubeIDE协同调试的方法

  【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法

  【直播】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【Matter】康普和意法半导体强强联手,让物联网设备Matter证书管理既安全又简便

  【方案】STM32WLE5 x 利尔达LoRa模组助力亚残会开幕式惊艳秀

  【新品】意法半导体发布远距离无线微控制器,提高智能计量、智能建筑和工业监控的连接能效

  瑞萨推出面向图形显示应用和语音/视觉多模态AI应用的 全新RA8 MCU产品群

  瑞萨基于Arm® Cortex®-M85处理器的产品在优化图形显示功能的同时,为楼宇自动化、智能家居、消费及医疗应用带来超高性能和领先的安全性2 ...

  Microchip推出PIC18-Q24 系列单片机 为增强代码安全性设置新标准

  该系列单片机新增电压电平转换功能,有助于提高灵活性并降低系统成本从手机、汽车到智能恒温器和家用电器,慢慢的变多日常设备与云端相连。随 ...

  今天就分享一个读者问到的关于中断处理的问题。 很多人都知道STM32CubeMX这套工具的一个目的:减少开发者对STM32底层驱动的开发时间,把重 ...

  在万利STM32学习板的USB摇杆例程中,摇杆的按键处理并没有消抖处理,因此重新修改了摇杆的驱动,顺便还增加了两个按键以及摇杆中键下压的驱 ...

  STM32F103+ESP8266接入机智云 实现小型IOT智能家居项目

  前言最近有不少小伙伴私信留言,想要我推出一章可以通过APP进行远程控制并获取传感器信息的实验教程。说实话在嵌入式毕设里边,这算是中等 ...

  stm32mp1 Cortex M4开发篇2:通过GPIO点亮LED灯详解

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

上一篇:手机生产厂商重庆蓝岸科技拟冲刺创业板上市预计募资531亿元 下一篇:网易卡搭编程APP首发 手机也能玩转代码