STM32-----SPI

SPI简介

SCK:

和I2C中SCL的时钟线一个作用,都是在高电平拿出数据,在低电平写数据

MOSI:

主机输出从机输入

MISO:

主机输入从机输出,只有当对应从机的SS为低电平,从机的MISO引脚才能设置推挽输出,当从机SS为高电平时,引脚为高阻态

SS:

从机选择线,主机想选择谁就把谁的SS线置低电平(起始条件),当主机想结束通信就把指定从机SS置高电平(终止条件)。SPI就可以不用像I2C一样通过通信线找从机地址,

注:SPI不允许多主多从,只允许一主多从

当SCK高电平时主机和从机的移位寄存器的高位数据会移到数据线上(SPI是高位先行),移位数据寄存器的剩下7位会整体向高处平移,当SCK低电平时主机和从机都会获取数据线上的数据进入移位数据寄存器的最低位,依次进行8次一个字节的数据就传输完成

如果只想接收不想发送,我们就随便发送一个数据(从机不会看他,我们一般发0x00或0xff),再读移位数据寄存器进行了

如果只想发送不想接收,我们不读接收过来的数据进行了

四种模式

模式0:

模式0:就是在SCK高电平时接收在数据线上的数据,在SCK低电平时将以移位寄存器上的数据发送到数据线上,因为SCK一开始就是低电平所以当SS置低电平时就要把数据发送到数据线上

模式一:

就是在SCK高电平时发送数据,在低电平时接收数据

模式一和模式三的区别就是SCK的极性取反,模式0和模式2的区别也是SCK的极性取反

注:CPHA决定的是第几个时钟沿采样,并不能决定上升沿采样或下降沿采样,只有确定CPOL,CPHA才能决定是上升沿采样或下降沿采样

软件控制SPI

发送指令

在SPI中第一个交换的字节是指令码加读写模式,在从机中有相应的指令集,发送不同的指令码会与从机中的指令集对应,来产生指令

指定地址写

当发送完指令码(0x02,这是指定地址写的指令)后发送指定地址,不同的芯片地址大小不一样(具体要发多少位字节的地址要看芯片手册),由于SPI没有应答机制,发送完一个字节就可以继续发送下一个字节,

有些芯片可能会把地址融合到指令码里面

指定地址读

指定地址读的指令码是(0x03),再发送要指定的地址后,交换的发送字节我们发送0x00或0xFF

这时交换回来的字节就是我们想要的数据

注:这时软件指定SPI,只要我们在软件方面指定每个字节的作用就很容易控制SPI

相关推荐
Dev_XH9 小时前
【成品设计】基于单片机的家用智能浇花系统的设计与实现
stm32·单片机·嵌入式硬件·物联网
意法半导体STM3211 小时前
【官方原创】LAT1717 STM32N6 如何使用单个XSPI驱动双片相同HyperRAM
stm32·单片机·嵌入式硬件·mcu·stm32n6·hyperram
木子单片机11 小时前
基于单片机的直流电机调速系统设计
单片机·嵌入式硬件·51单片机·nosql·keil
Zwawa12 小时前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式
倔强的胡萝卜15 小时前
基于STM32F103C8T6的温度报警器设计
stm32·单片机·嵌入式硬件
缘来是你远去是我15 小时前
ZYNQ 系列芯片中断机制详解:类型、处理过程与中断处理函数
单片机·嵌入式硬件
Zw-awa15 小时前
两根线怎么挂住一堆设备:I2C 协议原理
stm32
LCG米17 小时前
STM32 定时器主从模式输出精确脉冲数实测:TRGO 触发链拆解、多发一脉冲根因与干净停止时序落地
stm32·单片机·嵌入式硬件·嵌入式
青梅味猪大肠17 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
FakeOccupational17 小时前
【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置
笔记·stm32·实时音视频