stm32 SPI 内部结构及配置过程
0 2023-01-30

SPI (Serial Peripheral interface),顾名思义就是串行外围设备接口。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间

SPI内部简明结构图

stm32之SPI通信协议

关于SPI传输过程(下面由灵魂画家作图)

stm32之SPI通信协议

SPI包含四根线:

1、SS(Slave Select):片选信号线,当有多个SPI设备与MCU相连时,每个设备的这个片选信号线是与MCU单独的引脚相连的,而其他SCK,MOSI,MISO线则为多个设备并联到相同的SPI总线上,当SS信号线为低电平时,片选有效,开始SPI通信

2、SCK(Serial Clock):时钟信号线,由主通信设备产生,不同的设备支持的时钟频率不一样。

3、MOSI(Master Output,Slave Input):主设备输出、从设备输入引脚

4、MISO(Master Input,Slave Output):主设备输入、从设备输出引脚

关于SPI模式

根据SPI时钟极性(CPOL)和时钟相位(CPHA)配置的不同可分为4种模式

时钟极性是指SPI通信设备处于空闲状态时(或SPI通信开始时,即SS为低电平时),SCK的电平信号

CPOL=0时,SCK空闲状态为低电平,CPOL=1时则相反。

时钟相位是指数据采样的时刻,当CPHA=0时,MOSI或MISO数据线会在时钟线第一个边沿开始采样(奇数边沿)

当CPHA=1时,MOSI或MISO数据线会在时钟线第二个边沿开始采样(偶数边沿)

stm32之SPI通信协议
步骤分析:SS片选信号线拉低-->根据CPOL和CPHA进行数据采样

stm32 SPI接口框图

stm32之SPI通信协议

stm32 SPI配置过程

1、配置相关引脚的复用功能,使能SPIx时钟

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

2、初始化SPIx,设置SPIx工作模式

void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);

3、使能SPIx

void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);

4、SPI传输数据

void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);

uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx);

5、查看SPI传输状态

FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG); 

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • STM32的GPIO工作方式

    STM32F1xx官方资料:《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)芯片数据手册(datasheet)STM32的GPI

    3小时前
  • 蜂鸣器发声驱动实现和代码

    蜂鸣器是很常见的设备,分为无源和有源两种。根据项目需求选择不同类型的蜂鸣器。最近的项目里有用到有源蜂鸣器对有源蜂鸣器。还是老一套,把电路板画完,接着编程。在项目

    3小时前
  • STM32芯片异常复位的解决

    问题描述某STM32用户反馈,当使用STM32L4芯片的时候,程序运行一段时间后,会忽然复位。复位后程序继续运行,但是还会继续复位,原因不详。问题解析01:初步

    3小时前
  • 51单片机汇编指令集

    (1)数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(MoveCode)读取程序存储

    3小时前
  • STM32 学习笔记40条

    1、SYSCLK时钟源有三个来源:HSIRC、HSEOSC、PLL2、MCO[2:0]可以提供4源不同的时钟同步信号,PA83、GPIO口有两个反向串联的二极管

    昨天
  • 基于MM32W系列开发的数据透传应用

    在前面一个章节中我们详细介绍到了基于MM32W系列芯片开发的使用场景非常丰富的简易蓝牙智能锁方案,在本章节我们将继续给大家介绍一个蓝牙案例——基于MM32W系列

    昨天
  • MM32W无线MCU 自定义AT指令

    MM32W0/3提供模组和开发板方式供客户使用,支持UART\SPI\IIC接口的AT指令,用户通过发送相关固定格式的指令方式可以实现对应功能。开发板上电后,模

    昨天
  • MM32W无线MCU 自定义服务和特征值

    MM32W0x2xxB蓝牙功能协议栈目前以Lib形式提供,用户通过调用相关接口的方式实现对应功能。例程中,用户如需调整BLE数据交互的特征值、服务及数据的收发,

    昨天
  • MM32W无线MCU接口函数调用

    MM32W0x2xxB的蓝牙协议栈目前以lib形式提供用户使用,用户无需了解蓝牙底层协议,通过调用相关接口的方式即可实现蓝牙无线传输,其中BLE协议栈lib放置

    昨天
  • MM32W 低功耗模式的休眠和时钟配置函数

    本章我们来看一下低功耗模式下用到的休眠和时钟配置函数。目前MM32W0系列有n4和q1两个版本,n4主要针对需要大容量的应用方案,q1针对超低功耗精简型的应用方

    昨天
  • MM32W应用笔记,阻塞式例程

    本章我们将对软件架构进行简单的讲解。阻塞式例程介绍对于大部分的低功耗设备来说,CPU都是处在休眠模式中,只在接收到特定数据的时候被唤醒处理少量数据,这种应用场景

    昨天
  • 不同类型单片机之间的通信方式

    几种常用单片机之间的通信方式①采用硬件UART进行异步串行通信。这是一种占用口线少,有效、可靠的通信方式;但遗憾的是许多小型单片机没有硬件UART,有些也只有1

    前天
下载排行榜
更多
广告