一板网电子技术论坛

天南地北客
发表于: 2018-5-8 11:51:40 | 显示全部楼层

最近在做一款电池供电的无线终端,电路里面使用到了STM32F103和MXIC公司的存储器MX25L128。底层驱动采用STM32CubeMX自动生成,并且测试OK,现在将配置过程以及调试过程中的经验写出来给大家分享一下。

MX25L128通过SPI3总线连接导STM32F103微控制器,CS片选选择采用GPIO软件模拟的方式。连接方式如下:

MX25L128 connection.png


STM32CubeMX生成HAL驱动的过程

首先是新建一个工程,在MCU Selector中选择STM32F103VETx。然后在Pinout选项卡中对使用到的引脚进行配置,测试代码中只修改了SYS、RCC、SPI3和USART1的相关引脚。


配置SPI3外设。SPI3总线的工作模式支持全双工、半双工主/从机模式,这里我们选择全双工主机Full-Duplex Master模式,不开启硬件NSS信号。STM32CubeMX自动将PB3配置位SPI3_SCK,PB4配置为SPI3_MISO,PB5配置为SPI3_MOSI。然后我们将PD7配置为GPIO输出模式,作为SPI3总线的片选引脚。

SPI3配置.png

然后我们在SPI3配置中,选择帧格式为Motorola,数据长度为8位,传输首位位MSB先。设置SPI总线时钟的分频系数为4分频,这样波特率为9.0 Mbit/s。接下来我们设置时钟信号的相位和极性。MX25L128支持模式1和模式3操作,我们选择的是模式3,也就是CPOL选择为High,CPHA选择2 Edge。其他选项保持默认状态。

spi3 config.png

接下来,我们在GPIO引脚配置中,设置PD7的用户标签为SPI3_CS,同时设置输出电平为High,这样SPI存储器默认不被选中。


最后我们选择RCC中的HSE使用外部8M晶振,SYS中的Debug选择Serial wire调试模式。USART1选择异步通讯模式,采用默认的配置,该外设用于实现printf打印输出功能。在时钟配置中,设定主时钟HCLK为72MHz。完整的引脚配置如下:

pin out.png

点击菜单Project->Generate code...,软件弹出工程配置对话框,我们设置工程名为SPI_Flash Test,选择保存的文件夹。工具链采用MDK-ARM V5。点击OK,生成工程的代码。


工程文件配置

打开生成的工程,我们可以看到spi初始化函数位于stm32f1xx_hal_msp.c文件中,相关的SPI操作函数则位于stm32f1xx_hal_spi文件中。我们已经写好了MX25L128的底层驱动,您可以直接下载并且使用: BSP.rar (3.52 KB, 下载次数: 6)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 23 | 回复: 40



Archiver|手机版|小黑屋|

GMT+8, 2018-12-19 04:56 , Processed in 0.031251 second(s), 32 queries . Powered by Discuz! X3.4

YiBoard一板网 © 2015-2018 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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