你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32实现SPI通信1

[复制链接]
STMCU小助手 发布时间:2022-12-25 13:10
SPI
Serial Peripheral Interface

串行外围设备接口

是一种告诉,全双工,同步的通信总线
MISO
MOSI
SCL
CS



SPI的结构框图

a40d5805a658444faf82826ab784c13d.png


8个时钟周期,主机和从机移位寄存器中的数据完全交换
硬件上通过4根线连接
主机和从机都有一个串行移位寄存器,主机通过向自己的SPI串行寄存器写入一个字节来发起一次传输
串行寄存器通过MOSI将主机数据传输给从机,同时从机也将自己的串行移位寄存器数据通过MISO传给主机,两个串行移位寄存器中的内容进行交换
外设的读写操作同时完成。若写操作,只需要忽略收到的字节,若读操作,则主机发送8位空字节即可



STM32的SPI模块
3线全双工同步传输
8位或16位帧格式
主或从
可编程的时钟极性和相位
主机和从机均可通过硬件进行NSS管理
可编程的数据顺序,MSB在前或LSB在前
可触发中断的专用发送和接收标志



从选择NSS管理
两种NSS模式:
软件NSS
硬件NSS

软件NSS
通过设置SPI_CR1寄存器的SSM位来使能这种模式

这种模式下NSS引脚可以另作他用。内部的NSS电平可以通过SPI_CR1寄存器进行驱动


硬件NSS

若NSS输出被使能,此时STM32工作为主SPI,并且NSS输出已经通过SPI_CR2寄存器的SSOE位使能,此时NSS引脚被拉低,所有NSS引脚与这个主SPI的NSS引脚相连并配置为硬件NSS的SPI设备,将自动变成SPI设备

若一个SPI设备需要发送广播数据,它必须拉低NSS信号,从而通知其他所有的设备,它是主设备;如果它不能拉低NSS,这意味着总线上有另外一个主设备在通信,这是将产生Hard Fault

若NSS输出被关闭,允许操作于多主环境


时钟信号的相位与极性
通过SPI_CR寄存器的CPOL和CPHA位进行控制

共有4种可能性

CPOL即时钟极性,控制在没有数据传输时的是中能够空闲状态电平,对于主模式和从模式下的设备都是有效的
CPOL为0,表示SCK在空闲时为低电平
CPOL为1,表示SCK在空闲时为高电平

CPHA即数据在上升沿还是下降沿被采集
CPHA为0,表示数据在下降沿被采集
CPHA为1,表示数据在上升沿被采集

8a05b468380544f8b6f3f6f48070f377.png

fa1860f1505949bf9c3cfadf2e08c254.png

使用时,根据对应芯片的Datasheet选择时钟的相位和极性


数据帧格式
由SPI_CR1寄存器的LSBFIRST位进行配置

输出数据可以MSB或LSB

由SPI_CR1寄存器的DFF位可以配置数据帧为8位或16位

状态标志

3个状态标志
发送缓冲器空闲标志TXE
接收缓冲器非空RXNE
忙标志Busy

SPI中断

61e27191868f4624aa8d7541eb016b02.png

STM32F103RCT6的SPI1引脚

2e56ba1221404db9be0cc1efd178328c.png

SPI模块引脚配置的GPIO模式


67f15dded2474d6d9d57140affe65202.png

SPI的常用寄存器
SPI控制寄存器1 SPI_CR1

SPI控制寄存器2 SPI_CR2

SPI状态寄存器 SPI_SR

SPI数据寄存器 SPI_DR

SPI_I2S配置寄存器 SPI_I2S_CFGR

SPI_I2S预分频寄存器 SPI_I2SPR

注意:STM32的SPI接口可以配置为支持SPI协议或支持I2S音频协议,默认是SPI模式,可以通过软件切换到I2S模式


STM32的SPI相关固件函数
SPI_I2S_DeInit

5f7784572d884227a3007578e182fefb.png

SPI_Init

307646167616444dbb56a13fd1419970.png

SPI_Cmd


2cd57fe8c62f4fad9e1d3db1ed6c0d93.png

SPI_I2S_ITConfig

51fe886ab7aa4b9f8a7d23569fd22621.png

SPI_I2S_DMACmd


a5be3c19f560413db16dfef09f78a954.png

SPI_I2S_SendData


61a0204a6c1149daaeb1ce7f636e6678.png

SPI_I2S_ReceiveData

4b37ef56b6b741938204d5415a8c4250.png

SPI_DataSizeConfig

d6982c430216409eae89c840cfdfca01.png

SPI_I2S_GetFlagStatus


7965d79a42b14d6f873295613edb88cd.png


SPI_I2S_ClearFlag

98a4115cf3ed43948539b053ff0313d9.png

SPI_I2S_GetITStatus

f2a03da213554f6e82fefcd193a62f66.png

SPI_I2S_ClearITPendingBit

b8f7d7549a534f8b96a9b7dbe6dec7b2.png


————————————————
版权声明:CodeForCoffee


收藏 评论0 发布时间:2022-12-25 13:10

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版