手把手之STM32SPI接口(一)

简介: ●SPI总线 1、何为SPI     SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SPI总线

1、何为SPI

    SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

    SPI是一个环形总线结构,由ss(cs)scksdisdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。上升沿发送、下降沿接收、高位先发送。上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。

0?wx_fmt=png


2、SPI模型

    0?wx_fmt=png
1MOSI:主器件数据输出,从器件数据输入
2MISO:主器件数据输入,从器件数据输出
3SCLK :时钟信号,由主器件产生
4/SS:从器件使能信号,由主器件控制


3、SPI时序

    SPI接口有四种不同的数据传输时序,取决于CPOLCPHL这两位的组合下图表现了这四种时序0?wx_fmt=png

CPOL是用来决定SCK时钟信号空闲时的电平,CPOL0,空闲电平为低电平;CPOL1时,空闲电平为高电平。CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样;CPHA1,在每个周期的第二个时钟沿采样。

     SPI主模块和与之通信的外设音时钟相位和极性应该一致。



STM32的SPI接口

1、接口特性

1)基于三条线的全双工同步传输

2)8位或者16位的数据帧

3)主模式或从模式

4)最先以为LSB或者MSB

5)SPI总线忙标志


2、功能说明

0?wx_fmt=png
0?wx_fmt=png
0?wx_fmt=png
NSS引脚可以选择软件管理,这样比较容易操作,而从器件的NSS引脚可以用单片机的一个GPIO口来驱动,只要将IO电平拉低就可以选中从器件


3、时序0?wx_fmt=png
注意,主器件的相位和极性一定要和从器件匹配。


4、将STM32配置成主器件

0?wx_fmt=png


5、寄存器

1)控制寄存器SPI_CR1

0?wx_fmt=png
0?wx_fmt=png
0?wx_fmt=png
0?wx_fmt=png

0?wx_fmt=png
0?wx_fmt=png

2)控制寄存器SPI_CR1

0?wx_fmt=png
0?wx_fmt=png



代码

1、初始化

0?wx_fmt=png
0?wx_fmt=png

2、收发数据

0?wx_fmt=png



相关文章
|
2月前
STM32CubeMX RS485接口使用
STM32CubeMX RS485接口使用
114 8
|
2月前
STM32CubeMX RS232接口
STM32CubeMX RS232接口
31 0
|
传感器
STM32:串口协议(内含:1.通信接口+2.串口通信+3.硬件电路+4.电平标准+5.串口参数及时序+6.串口时序)
STM32:串口协议(内含:1.通信接口+2.串口通信+3.硬件电路+4.电平标准+5.串口参数及时序+6.串口时序)
367 0
STM32:串口协议(内含:1.通信接口+2.串口通信+3.硬件电路+4.电平标准+5.串口参数及时序+6.串口时序)
|
存储 芯片 内存技术
手把手之STM32SPI接口(二)
本文旨在使用W25Q16存储芯片来验证STM32的spi接口使用方法 ●关于flash芯片 1、flash写入时,只能由1到0;擦除时,全部变为1 2、flash写入的时候最小写入单位是页,不能单个字节写入 3、flash擦除的最少单位是扇区 4、在W25Q16中:一页有256个byte,一个扇区有4KB,一块有64k ●W25Q16手册 1、引脚和封装 cs片选信号,DO串行输出,DI串行输入,CLK串行时钟,WP写保护,HOLD保持。
1131 0
|
2月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
261 0
|
3月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
190 2
|
4月前
|
传感器
|
3月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
358 4
|
3月前
|
存储 数据采集 数据安全/隐私保护
使用STM32F103读取TF卡并模拟U盘:使用标准库实现
通过以上步骤,你可以实现用STM32F103将TF卡内容变成U盘进行读取。这种功能在数据采集、便携式存储设备等应用中非常有用。如果你有更多的需求,可以进一步扩展此项目,例如添加文件管理功能、加密存储等。希望这篇博客能帮到你,如果有任何问题,欢迎在评论区留言讨论!
91 1
|
3月前
|
传感器
【经典案例】STM32F407使用HAL库配置I2C详解
STM32F407是一个强大的微控制器,广泛应用于嵌入式系统中。在许多应用中,我们需要使用I2C总线来与传感器、EEPROM、显示屏等外设进行通信。本文将详细介绍如何使用STM32 HAL库来配置和使用I2C接口。
288 2