Ⅰ、概述
关于SPI(Serial Peripheral Interface)串行外设接口可以说是单片机或者嵌入式软件开发人员必须掌握的一项通信方式,就是你在面试相关工作的时候都可能会问及这个问题。在这里问一个简单的问题:硬件SPI和软件模拟SPI的区别是有哪些?估计这个问题会问倒很多人。
SPI通信中分为SPI主机和从机,在实际应用中作为主机是比较常见的一种,因为SPI的通信速度远比I2C的通信速度大,所以现在市面上有很多SPI从设备。
Ⅱ、下载
文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。
ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。
今天的软件工程下载地址(360云盘):
https://yunpan.cn/cSCxAn24RF7YD访问密码 44ad
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_ RTC实时时钟配置详细过程
下一篇:STM32F10x_SPI (硬件接口 + 软件模拟)读写Flash(25Q16)
推荐阅读最新更新时间:2024-10-26 20:37
设计资源 培训 开发板 精华推荐
- INA219电流监控模块
- TCA62735AFLG 4-LED WLED 驱动器的典型应用
- 使用 Microchip Technology 的 TC04AC 的参考设计
- LT6656ACS6-4.096、4.096V 2 端子电压基准电流源的典型应用
- AM2G-2418DH30Z ±18V 2 瓦 DC-DC 转换器的典型应用
- LT1632 45MHz 双路轨至轨输入和输出精密运算放大器的典型应用
- 用于电机控制的 MOSFET 功率驱动器
- EVAL-ADM1168LQEBZ,评估用于复杂排序的 ADM1168ASTZ 电压监控器排序器的评估板
- FAN431 恒流吸收稳压器的典型应用
- 40 W打印机AC-DC适配器GreenPoint®参考设计
- 【直播】恩智浦Thread/BLE双模技术讲座
- MPS有奖活动|梦想设计闪亮登场,便携式多功能电工台诞生啦!
- 【备战国赛】干货文集限时免积分下载,别错过哦~
- 力源&安森美有奖直播:RSL15 - 安森美更高效更智能更安全的 BLE 5.2 蓝牙芯片
- 拆招有礼:洞悉电子产品中的大数据,招招解决测量难题!Keysight DAQ970系列活动
- TI MCU 常见问题(FAQ)大搜集
- TI 邀您填问卷赢好礼|私人定制专属你的 2019 工业应用方案
- 是德科技推出新的8通道示波器 点击获取报价
- 泰克MDO系列:1招搞定6大仪器,轻松穿越模拟、数字、频域测量
- PI自研氮化镓助力实现更小、更轻、更高效的充电器 看视频好礼送!