STM32 SPI通信协议1——协议基本原理及管脚定义

这篇具有很好参考价值的文章主要介绍了STM32 SPI通信协议1——协议基本原理及管脚定义。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  SPI介绍     

        SPI全称为Serial Peripheral interface,译为串行外围设备接口。SPI主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号编码器之间。

        SPI是一种高速,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。STM32也有SPI接口,SPI时钟最大可达18MHz支撑DMA,可以配置为SPI协议或者I2S(音频通信)协议。

STM32 SPI通信协议1——协议基本原理及管脚定义,stm32,嵌入式硬件,单片机,c语言,c++,物联网,学习
SPI的内部简明图
  • MISO:

    • M(master)主机,S(slave)从机,I(input),O(output)由此可以看出,MISO就是从机Output,主机Input。
  • MOSI:

    • 由此类推,我们可以知道,MOSI就是主机Output,从机Input。
  • SCLK:

    • 因为SPI是同步通信,所以需要有个时钟线保证同步。
  • CS:

    • chip select片选信号线。

片选:动词,单片机学科词汇,可以理解成选片。举个例子,有很多芯片挂在同一总线上(像电脑里很多外设都是挂在总线上),但我们有时候需要对其中特定的某个芯片进行数据、地址或命令的独立传输,此时,我们需要有一个信号来告诉挂在总线上的芯片们,这些数据、地址是传给哪个芯片的。那这样的话,其他芯片就会对这些信号“漠不关心”,而目标芯片就知道这些数据是传给自己的从而做出反应。这个信号就叫做片选信号CS(chip select)或SS(slave select)。片选这个词即由此而来,指通过设置跳线,利用与门、或门、非门的组合来决定到底是哪几部分进入工作状态。 

STM32 SPI通信协议1——协议基本原理及管脚定义,stm32,嵌入式硬件,单片机,c语言,c++,物联网,学习

 由上图可以看出一个主机可以连接多个从机,并且通过SS(这里的SS就是刚刚所说的CS)来确认,我们使用的是哪个从机。

 SPI模式

       根据SPI时钟极性(CPOL)时钟相位(CPHA)配置的不同,分为四种SPI模式。

       时钟极性(CPOL)

        时钟极性是指SPI通讯设备处于空闲状态时(也可以认为SPI通讯开始时,即CS线为低电平时),SCK信号线的电平信号。CPOL==0时,SCK在空闲状态时为低电平,CPOL==1时,则相反。

       时钟相位(CPHA)

        时钟相位是指数据的采样的时刻,当CPHA==0时,MOSI或MISO数据线上的型号将会在SCK时钟线的第一个跳变沿(奇数,上升或下降)沿被采样。当CPHA==1时,数据线在SCK的第二个跳变沿(偶数,上升或下降)沿采样。

STM32 SPI通信协议1——协议基本原理及管脚定义,stm32,嵌入式硬件,单片机,c语言,c++,物联网,学习

STM32 SPI通信协议1——协议基本原理及管脚定义,stm32,嵌入式硬件,单片机,c语言,c++,物联网,学习

        当CPHA==0时,MOSI或MISO数据线上的型号将会在SCK时钟线的第一个跳变沿(奇数,上升或下降)沿被采样。从上图可以看出,1,3,5,7为SCK的第一个跳变沿,看图就能分直观的看出为什么是“奇数,上升或下降”。即触发上升沿1,3,5,7。

同理:

        当CPHA==1时,数据线在SCK的第二个跳变沿(偶数,上升或下降)沿采样。2,4,6,8为SCK的第二个跳变沿,即为“偶数,上升或下降”。即触发下降沿2,4,6,8。

同理:

STM32 SPI通信协议1——协议基本原理及管脚定义,stm32,嵌入式硬件,单片机,c语言,c++,物联网,学习

        当CPHA==0时触发下降沿1,3。

        当CPHA==1时触发上升沿2,4。 

STM32 SPI通信协议1——协议基本原理及管脚定义,stm32,嵌入式硬件,单片机,c语言,c++,物联网,学习

        一般情况下我们使用32时会直接通过SPI配置SCK,MISO,MOSI,而不会去用SPI去配置NSS,因为常使用一主多从的模式(一个主机多个从机),为了更好的选择从机,会用GPIO去配置NSS,通过软件起到选择从机的作用。 文章来源地址https://www.toymoban.com/news/detail-822101.html

#include "bsp_spi.h"
void SPI1_Configuration(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
	//PA4:CS片选
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	//PA5:SCK时钟信号线
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	//PA6:MISO
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	//PA7:MOSI
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
}

到了这里,关于STM32 SPI通信协议1——协议基本原理及管脚定义的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【快速上手STM32】SPI通信协议&&1.8寸TFT-LCD(ST7735S)

    SPI,英文全称Serial Peripheral Interface,即串行外围设备接口,是一种高速、全双工、同步的串行通信总线。 我们之前说过I2C,那么我们就拿I2C和SPI做个对比。 SPI和I2C对比,优势在于SPI的传输速率比I2C快得多,劣势在于SPI需要用的通信线比较多。 I2C只需要两根线,而SPI至少需要

    2024年04月27日
    浏览(34)
  • (新手必看)自定义数据传输通信协议+STM32代码详解

           本篇博客主要学习和了解一些单片机协议的格式,在对传输大数据或者要求准确性的时候,都需要通过协议来发送接收,下面通过了解协议的基本构成和代码来分析和实现协议的发送和接收。本篇博客大部分是自己收集和整理,如有侵权请联系我删除。 本次博客开发

    2024年02月03日
    浏览(48)
  • STM32管脚模拟协议驱动双路16位DAC芯片TM8211

    TM8211是一款国产的低成本双路16位DAC驱动芯片,可以应用于普通数模转换领域及音频转换领域等。这里介绍STM32 HAL库驱动TM8211的逻辑,时序和代码。 TM8211的功能特性为: TM8211的内部电路功能框图为: TM8211支持典型的3.3V供电和5V供电,在驱动后进行电压输出时, 需要注意,如以

    2024年02月16日
    浏览(43)
  • STM32F103单片机通过SPI全双工通信协议与W25Q64(FLASH)进行通信【串行同步通信(数据线与时钟线配合),(一主多从模式)】附相关驱动代码详解

    1.W25Qxx系列是一种低成本、小型化、使用简单的 非易失性存储器 ,常应用于数据存储、字库存储、固件程序存储等场景 2.存储介质: Nor Flash(闪存) 3.时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI) 4.存储容量(24位地址): W25Q40: 4Mbit / 512KByte W25Q80: 8Mbit / 1MByte W25Q16: 16

    2024年04月13日
    浏览(59)
  • STM32——SPI通信

    SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线 四根通信线: SCK(Serial Clock)【CLK或SCL或CK】、 MOSI(Master Output Slave Input)【DO(Data Output)】、 MISO(Master Input Slave Output)【DI(Data Input)】、 SS(Slave Select)【CS或NSS】 同步,全双工 支持总线挂载多设备

    2024年02月11日
    浏览(36)
  • STM32开发(十)STM32F103 通信 —— SPI通信编程详解

    👈《上一篇》  🏡《主目录》  👉《下一篇》 本实验通过STM32F103 的SPI功能,实现对W25Q64JVSSIQ (Flash芯片)芯片擦除,读数据,写数据等操作。 本实验内容知识点: 1、SPI通信协议介绍 2、

    2024年02月07日
    浏览(47)
  • stm32----SPI协议

    SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口技术,是一种高速、 全双工 、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输,节约了芯片pin的数目,同时为PCB在布局上节省了空间。正是由于这种简单易用的特性,现在越

    2024年02月11日
    浏览(28)
  • 【STM32】学习笔记-SPI通信

    SPI通信(Serial Peripheral Interface)是一种同步的串行通信协议,用于在微控制器、传感器、存储器、数字信号处理器等之间进行通信。SPI通信协议需要使用4个线路进行通信:时钟线(SCLK)、主输入/主输出线(MISO)、主输出/主输入线(MOSI)和片选线(SS)。其中,SCLK由主设备提供,用于

    2024年02月09日
    浏览(40)
  • 【SPI】STM32 SPI 双机通信,SPI从机模式使用

    最近要用到STM32的SPI从机模式,从其他板子读SPI数据过来,踩了2天坑,记录一下过程。 (因为hal库提供了三种函数,我调试的过程是阻塞、中断、DMA依次来调试学习的, 这份代码为使用DMA方式的代码。 ) 软件 :keil5、STM32CubeMX 硬件 :两块STM32F103C8T6最小系统 实现功能 :两

    2024年02月17日
    浏览(51)
  • STM32硬件SPI通信详解-------附代码

    1.STM32内部集成了 硬件SPI收发电路 ,可以由 硬件自动执行时钟生成 、 数据收发 等功能, 减轻CPU的负担 2.可配置 8位/16位数据帧 、 高位先行/低位先行 3. 时钟频率 : fPCLK / (2, 4, 8, 16, 32, 64, 128, 256) 4.支持 多主机模型 、 主或从操作 5.可精简为 半双工/单工通信 6. 支持DMA 7. 兼

    2024年04月27日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包