STM32 软件模拟SPI

文章介绍了如何在STM32F103系列微控制器上使用标准函数库来软件模拟SPI协议。通过提供的`Driver_SPI.h`和`Driver_SPI.c`文件,展示了SPI的初始化和读写数据的函数,以及模拟SPI时序的关键代码。SPI是一种全双工同步串行通信接口,常用于与各种外围设备如EEPROM、AD转换器等通信,其速度比I²C快,但多从机结构下可能需要更多引脚。

前言

STM32库:标准函数库
测试环境:STM32F103系列

关于 SPI

SPI 协议

SPI(Serial Peripheral Interface,串行外设接口)是由摩托罗拉(Motorola)在1980前后提出的一种全双工同步串行通信接口,它用于MCU与各种外围设备以串行方式进行通信以交换信息,通信速度最高可达25MHz以上。

SPI接口主要应用在EEPROM、FLASH、实时时钟、网络控制器、OLED显示驱动器、AD转换器,数字信号处理器、数字信号解码器等设备之间。

SPI通常由四条线组成,一条主设备输出与从设备输入(Master Output Slave Input,MOSI),一条主设备输入与从设备输出(Master Input Slave Output,MISO),一条时钟信号(Serial Clock,SCLK),一条从设备使能选择(Chip Select,CS)。与I²C类似,协议都比较简单,也可以使用GPIO模拟SPI时序。

SPI和I²C对比如表所示。SPI可以同时发出和接收数据,因此SPI的理论传输速度比I²C更快。SPI通过片选引脚选择从机,一个片选一个从机,因此在多从机结构中,需要占用较多引脚,而I²C通过设备地址选择从机,只要设备地址不冲突,始终只需要两个引脚。
在这里插入图片描述

软件模拟实现

Driver_SPI.h

#ifndef __DRIVER_SPI_H
#define __DRIVER_SPI_H
#include "sys.h" 


/************************* SPI 硬件相关定义 *************************/

#define         SPI_GPIOx    GPIOB
#define         RCC_APB2Periph_GPIOx   RCC_APB2Periph_GPIOB
#define         SPI_GPIO_CSN     GPIO_Pin_12      //片选
#define         SPI_GPIO_SCK     GPIO_Pin_13      //时钟
#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Hwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值