这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
icore4t_37 [2020/03/23 17:32] zgf 创建 |
icore4t_37 [2022/04/01 10:52] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-03-23 | gingko | 初次建立 | | | V1.0 | 2020-03-23 | gingko | 初次建立 | | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
===== STM32CubeMX教程三十七——USBD_MSC实验(FS) ===== | ===== STM32CubeMX教程三十七——USBD_MSC实验(FS) ===== | ||
+ | \\ | ||
1.在主界面选择File-->New Project 或者直接点击ACCEE TO MCU SELECTOR | 1.在主界面选择File-->New Project 或者直接点击ACCEE TO MCU SELECTOR | ||
行 12: | 行 19: | ||
2.出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置 | 2.出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置 | ||
在搜索栏的下面,提供的各 种查找方式,可以选择芯片内核,型号,等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32H750IBKx。 | 在搜索栏的下面,提供的各 种查找方式,可以选择芯片内核,型号,等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32H750IBKx。 | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_2.png?direct |}} |
3.配置RCC,使用外部时钟源 | 3.配置RCC,使用外部时钟源 | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_3.png?direct |}} |
4.时基源选择SysTick | 4.时基源选择SysTick | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_4.png?direct |}} |
5.将PA10,PB7,PB8设置为GPIO_Output | 5.将PA10,PB7,PB8设置为GPIO_Output | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_5.png?direct |}} |
6.引脚模式配置 | 6.引脚模式配置 | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_6.png?direct |}} |
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_7.png?direct |}} |
7.配置USB_OTG_FS | 7.配置USB_OTG_FS | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_8.png?direct |}} |
8.配置USB_DEVICE | 8.配置USB_DEVICE | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_9.png?direct |}} |
9.配置QUADAPI | 9.配置QUADAPI | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_10.png?direct |}} |
引脚配置 | 引脚配置 | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_11.png?direct |}} |
10.时钟源设置,选择外部高速时钟源,配置为最大主频 | 10.时钟源设置,选择外部高速时钟源,配置为最大主频 | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_12.png?direct |}} |
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_13.png?direct |}} |
11.工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可 IDE我们使用的是 MDK V5.27 | 11.工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可 IDE我们使用的是 MDK V5.27 | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_14.png?direct |}} |
12.点击Code Generator,进行进一步配置 | 12.点击Code Generator,进行进一步配置 | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_15.png?direct |}} |
* **Copy all used libraries into the project folder** | * **Copy all used libraries into the project folder** | ||
* 将HAL库的所有.C和.H都复制到所建工程中 | * 将HAL库的所有.C和.H都复制到所建工程中 | ||
行 51: | 行 58: | ||
* 自行选择方式即可 | * 自行选择方式即可 | ||
13.然后点击GENERATE CODE 创建工程 | 13.然后点击GENERATE CODE 创建工程 | ||
- | {{ :icore4t:icore4t_cube_37_1.png?direct |}} | + | {{ :icore4t:icore4t_cube_37_16.png?direct |}} |
创建成功,打开工程。 | 创建成功,打开工程。 | ||
\\ | \\ | ||
行 64: | 行 71: | ||
- 掌握KEIL MDK 集成开发环境使用方法。 | - 掌握KEIL MDK 集成开发环境使用方法。 | ||
==== 二、 实验设备及平台 ==== | ==== 二、 实验设备及平台 ==== | ||
- | - iCore4T 双核心板。 | + | - iCore4T 双核心板。[[https://item.taobao.com/item.htm?spm=a1z10.1-c.w137644-251734891.3.5923532fDrMDOe&id=610595120319|点击购买]] |
- iCore4T 扩展底板。 | - iCore4T 扩展底板。 | ||
- | - JLINK(或相同功能)仿真器。 | + | - JLINK(或相同功能)仿真器。[[https://item.taobao.com/item.htm?id=554869837940|点击购买]] |
- Micro USB线缆。 | - Micro USB线缆。 | ||
- Keil MDK 开发平台。 | - Keil MDK 开发平台。 | ||
行 74: | 行 81: | ||
=== 1.SPI FLASH简介 === | === 1.SPI FLASH简介 === | ||
* 串行接口设备spi flash就是通过串行的接口进行操作的flash存储设备。flash按照内部存储结构不同,分为两种:nor flash和nand flash。这里spi flash 属于 nor flash。SPI一种通信接口。那么严格的来说SPI Flash是一种使用SPI通信的Flash,即,可能指NOR也可能是NAND。但现在大部分情况默认下人们说的SPI Flash指的是SPI Nor Flash。早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Nor flash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Nor flash所取代。同时不同容量的SPI Nor flash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。 | * 串行接口设备spi flash就是通过串行的接口进行操作的flash存储设备。flash按照内部存储结构不同,分为两种:nor flash和nand flash。这里spi flash 属于 nor flash。SPI一种通信接口。那么严格的来说SPI Flash是一种使用SPI通信的Flash,即,可能指NOR也可能是NAND。但现在大部分情况默认下人们说的SPI Flash指的是SPI Nor Flash。早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Nor flash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Nor flash所取代。同时不同容量的SPI Nor flash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。 | ||
- | * Nor Flash根据数据传输的位数可以分为并行(Parallel,即地址线和数据线直接和处理器相连)Nor Flash和串行(SPI,即通过SPI接口和处理器相连)Nor Flash;区别主要就是:1、SPI Nor Flash每次传输一bit位的数据,parallel连接的Nor Flash每次传输多个bit位的数据(有x8和x16bit两种);2、SPI Nor Flash比parallel便宜,接口简单点,但速度慢。 | + | * Nor Flash根据数据传输的位数可以分为并行(Parallel,即地址线和数据线直接和处理器相连)Nor Flash和串行(SPI,即通过SPI接口和处理器相连)Nor Flash;区别主要就是: |
- | * Nand Flash是地址数据线复用的方式,接口标准统一(x8bit和x16bit),所以不同容量再兼容性上基本没什么问题。但是目前对产品的需求越来越小型化以及成本要求也越来越高,所以SPI Nand Flash渐渐成为主流,并且采用SPI NAND Flash方案,主控也可以不需要传统NAND控制器,只需要有SPI接口接口操作访问,从而降低成本。另外SPI Nand Flash封装比传统的封装也小很多,故节省了PCB板的空间。 | + | * 1、SPI Nor Flash每次传输一bit位的数据,parallel连接的Nor Flash每次传输多个bit位的数据(有x8和x16bit两种); |
+ | * 2、SPI Nor Flash比parallel便宜,接口简单点,但速度慢。 | ||
+ | * Nand Flash是地址数据线复用的方式,接口标准统一(x8bit和x16bit),所以不同容量在兼容性上基本没什么问题。但是目前对产品的需求越来越小型化以及成本要求也越来越高,所以SPI Nand Flash渐渐成为主流,并且采用SPI NAND Flash方案,主控也可以不需要传统NAND控制器,只需要有SPI接口接口操作访问,从而降低成本。另外SPI Nand Flash封装比传统的封装也小很多,故节省了PCB板的空间。 | ||
=== 2.QSPI协议简介 === | === 2.QSPI协议简介 === | ||
* QSPI是Queued SPI的简写,是Motorola公司推出的SPI接口的扩展,比SPI应用更加广泛。在SPI协议的基础上,Motorola公司对其功能进行了增强,增加了队列传输机制,推出了队列串行外围接口协议(即QSPI协议)。QSPI是一种专用的通信接口,连接单、双或四(条数据线)SPIF lash存储介质。 | * QSPI是Queued SPI的简写,是Motorola公司推出的SPI接口的扩展,比SPI应用更加广泛。在SPI协议的基础上,Motorola公司对其功能进行了增强,增加了队列传输机制,推出了队列串行外围接口协议(即QSPI协议)。QSPI是一种专用的通信接口,连接单、双或四(条数据线)SPIF lash存储介质。 | ||
行 83: | 行 92: | ||
* 内存映射模式:外部Flash映射到微控制器地址空间,从而系统将其视作内部存储器采用双闪存模式时,将同时访问两个Quad-SPI Flash,吞吐量和容量均可提高二倍。 | * 内存映射模式:外部Flash映射到微控制器地址空间,从而系统将其视作内部存储器采用双闪存模式时,将同时访问两个Quad-SPI Flash,吞吐量和容量均可提高二倍。 | ||
=== 3.QSPI功能框图 === | === 3.QSPI功能框图 === | ||
- | {{ :icore4t:icore4t_arm_hal_37_1.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_37_1.png?direct&800 |}} |
=== 4.QUADSPI 信号接口协议模式 === | === 4.QUADSPI 信号接口协议模式 === | ||
行 121: | 行 130: | ||
* MSC的通用性和操作简单使他成为移动设备上最常见的文件系统,USB MSC并不需要任何特定的文件系统, 相反,它提供了一个简单的界面来读写接口用于访问任何硬盘驱动器。操作系统可以把MSC像本地硬盘一样格式化,并可以与他们喜欢的任何文件系统格式它,当然也可以创建多个分区。 | * MSC的通用性和操作简单使他成为移动设备上最常见的文件系统,USB MSC并不需要任何特定的文件系统, 相反,它提供了一个简单的界面来读写接口用于访问任何硬盘驱动器。操作系统可以把MSC像本地硬盘一样格式化,并可以与他们喜欢的任何文件系统格式它,当然也可以创建多个分区。 | ||
== 6.原理图 == | == 6.原理图 == | ||
- | {{ :icore4t:icore4t_arm_hal_37_3.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_37_3.png?direct&700 |}} |
- | {{ :icore4t:icore4t_arm_hal_37_4.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_37_4.png?direct&600 |}} |
* 本实验使用STM32H750的USB OTG FS利用SPI FLASH虚拟U盘,用USB线连接PC机与开发板,在电脑上就可以像操作普通U盘那样来操作开发板的FLASH存储设备。 | * 本实验使用STM32H750的USB OTG FS利用SPI FLASH虚拟U盘,用USB线连接PC机与开发板,在电脑上就可以像操作普通U盘那样来操作开发板的FLASH存储设备。 | ||
==== 四、 实验程序 ==== | ==== 四、 实验程序 ==== |