STM32F0读写SPI接口的FLASH程序分析

2019-01-22 13:17:45 来源:网络
标签:

 

Ⅰ、概述

关于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”建议参考该手册,以后如果你换用一种型号芯片也方便了解。

 

Ⅲ、准备工作

建议准备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基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
51单片机的内部内部资源和最小系统解读

STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源

发力3D Xpoint?美光以15亿美元全资控股与英特尔合资公司IM Flash

10月19日,美光科技宣布将以15亿美元现金收购与英特尔合资公司IM Flash Technologies的英特尔所持股权。

这么夸张?2018半导体资本支出破1000亿美元 存储器占53%
这么夸张?2018半导体资本支出破1000亿美元 存储器占53%

产业研究机构IC Insights预测,2018年半导体资本支出总额将增至1020亿美元,这是史上首次资本支出上超过1000亿美元,同时较2017年的933亿美元成长了9%,比2016年成长了38%。

单片机上FLASH和EEPROM有什么不同?

FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。

升级固件写FLASH如何避免让FPGA发生意外?
升级固件写FLASH如何避免让FPGA发生意外?

FPGA配置两种模式:主动配置和被动配置方式,采用主动配置下,我们就需要一片FLASH来存储FPGA固件,那么我们在升级固件写FLASH的过程中如何避免因意外情况发生导致升级失败而使FPGA变砖呢?下面就由笔者带领大家来挖山掘石、一探究竟。

更多资讯
【技术分享】英特尔10纳米Agilex FPGA核心技术全解读

英特尔的10纳米FPGA终于来了。在四月刚刚结束的英特尔“以数据为中心创新日”中,曾经代号为Falcon Mesa的英特尔最新一代10纳米FPGA正式亮相,并正式命名为Agilex™。

【技术分享】使用EPROM或EEPROM配置FPGA大家都会,使用NOR闪存呢?

NOR闪存已作为FPGA(现场可编程门列阵)的配置器件被广泛部署。其为FPGA带来的低延迟和高数据吞吐量特性使得FPGA在工业、通信和汽车ADAS(高级驾驶辅助系统)等应用中得到广泛采用。汽车场景中摄像头系统的快速启动时间要求就是很好的一个例子——车辆启动后后视图像在仪表板显示屏上的显示速度是最为突出的设计挑战。

【技术分享】详解FPGA中的DDS技术

我知道,我对与电子有关的所有事情都很着迷,但不论从哪个角度看,今天的现场可编程门阵列(FPGA),都显得“鹤立鸡群”,真是非常棒的器件。如果在这个智能时代,在这个领域,想拥有一技之长的你还没有关注FPGA,那么世界将抛弃你,时代将抛弃你。

高云半导体研讨会圆满召开,累计出货已达1500万片

2019年4月12日,中国武汉,高云半导体FPGA技术研讨会系列活动于武汉凯悦酒店成功召开,现场气氛热烈,座无虚席。

高云半导体研讨会圆满召开,累计出货已达1500万

2019年4月12日,中国武汉,高云半导体FPGA技术研讨会系列活动于武汉凯悦酒店成功召开,现场气氛热烈,座无虚席。

Moore8直播课堂
开发板测评
技术讨论
电路方案

1970-01-01 08:00:00