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 )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
Flash这个“网红”,终究要“凉凉”?
Flash这个“网红”,终究要“凉凉”?

十年前,用PC访问门户网站的时候,经常被屏幕上闪个不停的大广告晃得眼睛疼。而且,不等它闪完,你还没法点击里面的内容。那叫一个心急。

兆易创新陈晖:Flash Memory如何应对物联网行业的机遇与挑战。

6月20日,由 ASPENCORE主办的“TechShenzhen 物联网技术论坛”在深圳科兴科技园成功举办,兆易创新资深产品市场总监陈晖先生进行了主题演讲。

超低能耗计算时代即将来临,DRAM 和 Flash 要被取代了?

业界普遍认为未来从数据中将能挖掘出最大的价值,但要挖掘数据的价值除了需要很强的计算能力之外,数据的存储也非常关键。目前,新型存储器也是领先的企业非常关注的一个方向,兰开斯特大学(Lancaster University)的研究人员最近发表论文称其研究的新型存储器可以兼具稳定、高速、超低功耗的优点。

玩转MSP430:long数据烧写至Flash方法简介

从RAM地址0x0200中读取一个long数据,并烧写至地址为0x1800的Flash中。

Sense Photonics 宣布完成 A 轮融资,有望推出一种全新的激光雷达解决方案

据麦姆斯咨询报道,为自动驾驶汽车、工业机器人和其它不同功能性应用提供激光雷达(LiDAR)和3D传感器的创新开发商Sense Photonics,近日宣布完成2600万美元A轮融资。

更多资讯
Qualcomm董事会任命Mark McLaughlin担任董事长

Qualcomm Incorporated(NASDAQ: QCOM)今日宣布任命Mark McLaughlin接替Jeff Henderson担任董事会董事长,该任命于2019年8月13日生效。

科技成就品质生活 戴森举办“智享-净鉴”杭州分享会

今日,戴森在杭州举行地板清洁类新品媒体分享会,旨在为当地家庭提供完整的家居清洁方案。Dyson V11 Absolute智能无绳吸尘器、Dyson V7 Mattress手持除螨吸尘器及Dyson 360 Heurist智能吸尘机器人皆为现代繁忙生活背景下的各类清洁难题设计,协助用户吸除日常生活中的常见微尘,有害颗粒及过敏原[1],以科技

FPGA是否可以脱离CPU独立部署?

作为一种硬件可重构的体系结构,FPGA经常被用作专用芯片(ASIC)的小批量替代品,随着全球数据中心的大规模部署,以及人工智能应用的落地,FPGA凭借强大的计算能力和高度的灵活性有了更多的用武之地。

FPGA 设计经验分享

从大学时代第一次接触FPGA 至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。

如何寻找并使用一个适用于FPGA的机器学习平台?
如何寻找并使用一个适用于FPGA的机器学习平台?

随着摄像头和其他设备产生的数据在快速增长,促使人们运用机器学习从汽车、安防和其他应用产生的影像中提取更多有用的信息。专用器件有望在嵌入式视觉应用中实现高性能机器学习 (ML) 推理。但是此类器件大都处于早期开发阶段,因为设计人员正在努力寻找最有效的算法,甚至人工智能 (AI) 研究人员也在迅速推演新方法。