技术创新
17
基于STM32F4的USB数据存储
◊ 西安电力电子技术研究所徐庆坤于庆房齐
目前大多数具有数据存储功能的测试仪均采用工控机进行控制,本
文提出了一种采用STM32F407微控制器作为主控核心,USB HOST技术进行
数据存储,通过嵌入式系统可直接将测斌数据写入U盘等移动存储设备的
方法,很好的解决了数据存储的问题。
1 引言
随着科学技术的发展,嵌入式主机系统在测试领域的应用
越来越广泛。使用带USB的嵌入式主机系统可以使测试仪脱离
工控机,既可以缩小设备的体积,便于携带,降低成本,又可
以使设备与工控机具有相同的USB数据存储功能。
2 系统资源描述
本文中采用STM32F407作为控制器,通过串口调试助手调
用FATFS函数来对U盘进行数据的读取与存储操作。系统原理如
图1所示。
图1 系统原理图
2.1 STM32F407芯片
STM32F407是一款意法半导体生产的具有ARM Cortex M 4
的内核处理器的微处理器芯片,自带了USB OTG全速模式和
USB OTG高 速 模 式 (高速模式需要外扩高速PHY® 片实现)。
本文没有外扩高速PHY芯 片 ,仅支持USB O TG 全 速 模 式 (12
M bps) ,相关程序使用USB OTG^ :速模式实现。
STM32F407的USB是一款双角色设备,支持主、从机功
能 ,具有1^811〇 81^口,可以读写1;盘等设备。8观32?407作
为主机,替代工控机进行系统控制,U盘移动存储设备做为从
机。
2.2 USB HOST模式
USB即通用串行总线(Universal Serial BUS) ,是一个外部
总线标准,用于规范电脑与外部设备的连接和通讯,是应用在
接口领 域的技术 。USB支 持 热插 拔,即插即用功能。
STM32F407的 USB 符合USB2.0JJ范。
U盘是一种使用USB接口的无需物理驱动器的微型高容量移
动存储产品,通过USB接口与主机连接,实现即插即用,是最
常用的移动存储设备之一。
2.3 FATFS
FATFS是一个文件系统模块,专门为嵌入式系统设计,完全
用标准C 语言编写,只需对源码做简单的修改就可以移植到各种
不同系列的单片机上。支持U盘存储,有独立的缓冲区,可以对
文件进行读写操作
〇
FATFS模块的层次结构如图2所示。
隘 8 螬
图2 FATFS模块的层次结构
3 软件系统的实现
本文中的程序使用ST公司的官方代码STM32_USB-Host-
Device_Lib_V 2.1.0\Project\USB_Host_Examples\MSC移植后改
编。实现过程如下所示。
( 1) 挂载U盘 :f_mount(fs[2],"2:,,,l )0
( 2 ) 初始化1;83110811。使用1;8811_】1也,对1188主机初始
化,包括对USB硬件和驱动库的初始化USBH_In it(&USB_OTG_
Core,USB_OTG_FS_CORE_ID ,&USB_Host,&USBH_MSC_cb,&U
SR一Callbacks) 〇
( 3 ) 不 断 轮 询 0 1^11_1^〇 。哪 ( &1;38一 010一 (:〇1'6,& 1 ^ 一
Host); 该函数用于实现USB主机通信的核心状态机处理,必须
在主函数里面,被循环调用,而且调用频率越快越好,以便及
时处理各种事务。USBH_Pr〇CeSS函数仅在U盘识别阶段,需要
频繁反复调用。
( 4 ) 检测并识别U盘 。USH_USei_App函数里面的HCD_
IsDeviceConnected(&USB_OTG_Core)被调用,一旦进入到该函
数 ,即表示U盘已经成功识别了。
(5 ) 通过USMARTjffl用文件读写相关函数f_open,f_write,
f一read, f_close, 来 对 行 ® ® 的 读 写 了 。
( 6)可操作U盘大小。ST官方提供的USB HOST® 码不支
持容量大于4G的U盘 ,而目前市场上提供的大多数U盘容量都大
于4G 〇为了使本文中的实验适用于大容量U盘 ,需要将程序源
码中exf_getfree函数的磁盘容量和剩余容量参数(下转138页)