STM32F0xx_SPI读写(Flash)配置详细过程

发布者:科技奇思最新更新时间:2021-01-18 来源: eefocus关键字:STM32F0xx  SPI读写  Flash  配置 手机看文章 扫描二维码
随时随地手机看文章

Ⅰ、概述

关于SPI(Serial Peripheral Interface)串行外设接口可以说是单片机或者嵌入式软件开发人员必须掌握的一项通信方式,就是你在面试相关工作的时候都可能会问及这个问题。在这里问一个简单的问题:硬件SPI和软件模拟SPI的区别是有哪些?估计这个问题会问倒很多人。


SPI通信中分为SPI主机和从机,在实际应用中作为主机是比较常见的一种,因为SPI的通信速度远比I2C的通信速度大,所以现在市面上有很多SPI从设备。


本文SPI读写操作,以SPI通信的FLASH(25Q16)为从设备进行举例。串口发送10字节数据,接收满10字节自动保存,间隔500ms读写数据,通过串口打印出来。


Ⅱ、下载

文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。


ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。

 

今天的软件工程下载地址(360云盘):

https://yunpan.cn/cSCxAn24RF7YD  访问密码

 

STM32F0xx的资料可以在我360云盘下载:

https://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c37

 

Ⅲ、准备工作

建议准备F0的参考手册和数据手册,方便查阅相关知识,没有的请到ST官网或到我360云盘下载。

今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。我每次都是提供整理好的软件工程供大家下载,但是,如果你是一位学习者,建议自己亲手一步一步操作:打开工程->新建文件(spi.c spi.h) ->添加到工程中->添加源代码。

 

Ⅳ、SPI原理


MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。

MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。

SCK:串口时钟,作为主设备的输出,从设备的输入

NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

 

Ⅴ、代码描述

①RCC时钟


该函数位于bsp.c文件下面;

我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于忘记配置相应RCC时钟,让我找了很久的问题,最后才发现是RCC时钟没有配置。

注意:

外设时钟不要随便添加,比如:RCC_APB1外设不要配置在RCC_APB2时钟里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);这样能编译过,但是错误的】

我每次都提醒RCC时钟,是因为很多人就是因为时钟而导致软件运行有问题,所以,提醒更多人要注意配置RCC.

 

②输出引脚配置


该函数位于spi.c文件下面;

注意:

SCK、MISO、MOSI这三根线需配置为复用功能,片选信号配置为输出功能(由控制从设备)。

 

③主机SPI配置


该函数位于spi.c文件下面;

该配置和F1的区别在于F0需要配置SPI_RxFIFOThresholdConfig。

 

④读写接口函数


该函数位于spi.c文件下面;

由于是硬件SPI,这里我把读写都写在一起了,实际应用中也是比较常见的,软件模拟SPI的读写函数还是存在差异。

 

Ⅵ、说明

或许你硬件芯片不是提供工程里面的芯片,但是STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片,甚至是F2、F4等芯片上(具体请看手册、或者亲自测试)。


本文章提供的软件工程是基于ST标准外设库为基础建立而成,而非使用STM32CubeMX建立工程。个人觉得使用ST的标准外设库适合与学习者,STM32CubeMX建立工程结构复杂,对于学习者,特别是初学者估计会头疼。


今天的工程是基于工程“STM32F0xx_TIM基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。


关键字:STM32F0xx  SPI读写  Flash  配置 引用地址:STM32F0xx_SPI读写(Flash)配置详细过程

上一篇:STM32F0xx_TIM基本延时配置详细过程
下一篇:STM32F4_TIM输入波形捕获(脉冲频率)

推荐阅读最新更新时间:2024-11-02 14:38

断路器接线电流互感器的配置
1. 电流互感器的配置   根据所采用的断路器的不同,有两种配置:采用普通敞开式断路器与采用罐式断路器的电流互感器配置。   1) 采用普通敞开式断路器时的电流互感器配置,   采用敞开式断路器时,每串只需配置三组电流互感器。在500kV系统,因线路保护及母线保护均需采用双重化配置,故靠母线侧的电流互感器需有6个二次绕组,而每串中间电流互感器需有7~8个二次绕组。对220kV系统,母线侧电流互感器需有5个二次绕组,而每串中间电流互感器需有6个二次绕组。具有8个二次线圈的500kV电流互感器和具有6个二次线圈的220kV电流互感器,目前国内都可制造供货。为了减少中间电流互感器的二次绕组数量,使一串中的三组电流互感器型式相同,可在
[电源管理]
stm8s配置外部时钟详解及配置步骤
  配置STM8外部时钟(寄存器)步骤:   1.设置外部时钟寄存器CLK_ECKR是对其写0xB4   2.设置外部时钟分频,CLK_CKDIVR低三位是外部时钟分频系数设置   3.使能外部时钟向CLK_ECKR写0x01   void CLK_Init(void)   {   CLK_CMSR =0xB4; //使能外置高速晶体振荡器   CLK_CKDIVR =0x03; //设置外部时钟分频   CLK_ECKR = 0X01; //使能外部时钟寄存器   }   使能外部时钟后的寄存器   
[单片机]
stm8s<font color='red'>配置</font>外部时钟详解及<font color='red'>配置</font>步骤
看懂时钟树——掌握系统时钟配置
——基于STM32F107VCT6的理解 1、HIS(内部高速时钟:8MHZ) 内部高速时钟是芯片自带的时钟,芯片自带时钟有两个HIS和LSI(内部低速时钟:40kHZ),内部时钟是RC振荡器产生的,不够稳定。一般不长时间作为系统时钟使用,一般做备用,或在切换时使用。 2、HSE(外部高速时钟:3-25MHZ) STM32提供两组外部时钟接口,HSE和LSE(外部低速时钟)。外部时钟的大小由外部所接晶振确定(本文HSE=25MHZ,LSE=32.768kHZ),所以较为准确。 3、时钟树看图引导 从图中可知SYSCLK(系统时钟)的来源可以是SHE、SHI和PLLCLK(分频器1),这里通过SW(两位二进制数00、01
[单片机]
看懂时钟树——掌握系统时钟<font color='red'>配置</font>
基于MPLAB X IDE配置位设置讲解
在讲基于MPLAB X IDE 配置位配置前我先讲讲如何配置配置位。 比如PICLF1823的数据手册 可以再器件配置中找到两个寄存器。一个是配置字1 ,一个是配置字2. 对于初学者来说如此多的配置选项,该如何配置呢?我们要抓主重点。 配置字中最重要的配置选项就是: 看门狗配置 如:WDTE 1;0 ; 一般选择关闭看门狗 MCLRE复位脚的配置 如:MCLRE;一般选择复位脚作I/O 震荡器的选择: 如:FOSC 2:0 ;根据实际情况配置,我这里一般选择用 INTOSC 内部振荡器. 因为如果这三个没有配置好的话程序根本无法运行。其他配置可以看数据手册此不赘述。 MPLAB X IDE和MPLA
[单片机]
基于MPLAB X IDE<font color='red'>配置</font>位设置讲解
配置视觉识别系统的协作机器人智能码垛
机器视觉系统可以代替人眼完成测量、定位、识别和检测等工作,不仅可以克服人眼标准的不一致性、非重复性和主观性等问题,为行业制定品质管控的数字标准,还能在高速、高光谱、高分辨率、高可靠性以及工作持续性、环境适应性等方面全面超越人眼极限。协作机器人结合机器视觉技术,日益取得重大突破,并广泛应用于自动化制造、商超、物流、电商、医药、食品等行业。   随着国内智造、物流、电商等行业的快速发展,分拣和码垛作业强度大,工作内容单一,人工作业的质量及效率普遍低下,自动化分拣与码垛系统应运而生。而传统自动化拆码垛作业中,来料的摆放经常都是无序、随机的,用传统的人工示教的方式难度大且效率低下,这就限制了自动化应用范围。为了解决此问题,泰科智能机器人研
[机器人]
后装HUD真的能像原装配置那么美好吗
最近老司机我有位朋友打算要换辆车。这位朋友预算相当充足,并且痴迷于各种高科技配置,因此将目光都放在了中意车型的高配版。 看了配置单,作为老司机的我真是“口水流满地”,各种记忆座椅、二十多个喇叭、高级辅助驾驶等等,真是该有的都有了。而配置单上一项HUD显示功能其实是让我最感兴趣的,在体验过高配车型原装的HUD抬头显示功能之后,我决定给自己的老破车也配一个后装HUD抬头显示器。 HUD抬头显示最初应用在战斗机和飞行器领域,一看就是高大上的配置。现在不仅是各种高配民用车型配备了原装HUD显示功能,老款车车主也只需要花几百元就可以添置一台后装HUD显示器。 后装HUD显示器的原理基本上都是通过高亮度的LED屏幕将现实内容投射到汽车的前档
[汽车电子]
后装HUD真的能像原装<font color='red'>配置</font>那么美好吗
STM32 IAP(对flash进行读写)
/************************************************************ **实验名称: **功能: **注意事项: **作者: *************************************************************/ #include STM32Lib\\\\\\\\\\\\\\\\stm32f10x.h #include hal.h #define FLASH_ADR 0x08008000 //要写入数据的地址 #define FLASH_DATA 0x5a5a5a5a //要写入的数据 int main(void) { u32 tmp;
[单片机]
GD32 MCU如何将烧录口配置为GPIO使用?
如果大家在进行GD32 MCU开发时发现GPIO引脚使用不足,可以尝试将烧录口配置为GPIO使用,这样就可以多出几个引脚使用,但使用的时候如何配置以及有哪些注意事项,本视频将会为大家进行解答。 GD32 MCU存在两种GPIO备用功能的配置,一种是采用成组重映射REMAP的模式,比如GD32F10X/20x/30x/e10x/E50X等系列,一种是采用AFIO模式,比如GD32F1X0/3X0/4XX/E230等。 成组reamp重映射的模式需要将一组的GPIO进行重映射,如下图GD32F30X IIC0的重映射配置,PB6和PB8需要组合使用,PB7和PB9需要组合使用,而PB6和PB9就不可以组合使用。 AFIO
[单片机]
GD32 MCU如何将烧录口<font color='red'>配置</font>为GPIO使用?
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved