0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于SPI传输过程 stm32 SPI配置

MCU开发加油站 来源:未知 作者:胡薇 2018-04-20 11:01 次阅读

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

SPI内部简明结构图

关于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数据线会在时钟线第二个边沿开始采样(偶数边沿)

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

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);

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • pcb
    pcb
    +关注

    关注

    4220

    文章

    22469

    浏览量

    385721
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1614

    浏览量

    89586
  • AD转换器
    +关注

    关注

    4

    文章

    244

    浏览量

    40978

原文标题:stm32之SPI通信协议

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SPI总线电路图设计及传输原理

    当主机发送一个连续的数据流时,有些外设能够进行多字节传输.多数具有SPI接口的存储芯片就以这种方式工作.在这种传输方式下,从机的片选端必须在整个传输过程中保持低电平.
    发表于 09-05 11:09 1.3w次阅读
    <b class='flag-5'>SPI</b>总线电路图设计及<b class='flag-5'>传输</b>原理

    请问stm32 SPI DMA传输过程该如何操作?

    程序要使用spi dma,由于以前没有用到过,有些疑惑,主要使用的是spi2,我主要是想用其接收一帧数据,主要的配置如下:RCC_AHBPeriphClockCmd
    发表于 09-05 09:30

    SPI通信模式的配置过程分析

    SPI通信分析许久不更,想你们了。SPI 模式的配置SPI通信配置STM官方的芯片手册中对于SPI
    发表于 02-17 07:57

    关于STM32SPI通信

    STM32SPI通信调试经验
    发表于 02-07 15:53 21次下载

    STM32F0xx_SPI读写(Flash) 配置详细过程

    STM32F0xx_SPI读写(Flash)配置详细过程
    的头像 发表于 04-07 11:40 4622次阅读
    <b class='flag-5'>STM32F0xx_SPI</b>读写(Flash) <b class='flag-5'>配置</b>详细<b class='flag-5'>过程</b>

    STM32SPI接口、cubeMX软件配置SPI接口和分析SPI相关代码

    本文主要介绍STM32SPI接口、cubeMX软件配置SPI接口和分析SPI相关代码。 STM32
    的头像 发表于 09-24 14:09 1.5w次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>SPI</b>接口、cubeMX软件<b class='flag-5'>配置</b><b class='flag-5'>SPI</b>接口和分析<b class='flag-5'>SPI</b>相关代码

    STM32F103和STM32F030 SPI-miso配置不同点

    在调试STM32F103和STM32F030的SPI时,发现两者的MISO配置不同,STM32F103: /**
    发表于 12-02 16:06 15次下载
    <b class='flag-5'>STM32</b>F103和<b class='flag-5'>STM32</b>F030 <b class='flag-5'>SPI</b>-miso<b class='flag-5'>配置</b>不同点

    STM32F1x HAL库学习笔记(12)硬件 SPI配置

    STM32CubeMx 配置 硬件 SPI 主机文章目录一、硬件 SPI 的使用二、SPI配置
    发表于 12-06 11:36 10次下载
    <b class='flag-5'>STM32</b>F1x HAL库学习笔记(12)硬件 <b class='flag-5'>SPI</b> 的<b class='flag-5'>配置</b>

    SPI的基本知识(偏向STM32中的SPI

    SPI的基本知识1. 杂谈2.什么是SPI?3. SPI的通信协议4. STM32SPI配置
    发表于 12-07 11:51 11次下载
    <b class='flag-5'>SPI</b>的基本知识(偏向<b class='flag-5'>STM32</b>中的<b class='flag-5'>SPI</b>)

    SPI通信分析

    SPI通信分析许久不更,想你们了。SPI 模式的配置SPI通信配置STM官方的芯片手册中对于SPI
    发表于 12-22 19:12 2次下载
    <b class='flag-5'>SPI</b>通信分析

    STM32 SPI配置及深入解析

    SPI分析平时会使用硬件SPI,但是只用于应用没有具体深入了解SPI的执行流程,此处我采用抓取波形的方式对SPI进行了一下深入了解。STM32
    发表于 12-22 19:16 4次下载
    <b class='flag-5'>STM32</b> <b class='flag-5'>SPI</b><b class='flag-5'>配置</b>及深入解析

    STM32L4使用SPI驱动TFTLCD

    STM32L4使用SPI驱动TFTLCD在上新建工程的基础上添加使用SPI功能(新建工程见STM32使用LL库建立工程)一、CubeMX的配置
    发表于 12-22 19:20 11次下载
    <b class='flag-5'>STM32</b>L4使用<b class='flag-5'>SPI</b>驱动TFTLCD

    关于STM32SPI外设时钟分频对应的SCK速率

    STM32F103为例,经过system_stm32f10x.c文件中的SystemInit()函数之后,这里是指的默认时钟配置如下图所示:STM32F103的系统框架图如下所示:可
    发表于 12-22 19:23 9次下载
    <b class='flag-5'>关于</b><b class='flag-5'>STM32</b>的<b class='flag-5'>SPI</b>外设时钟分频对应的SCK速率

    STM32学习笔记--SPI

    目录:一、SPI简介1.SPI信号线2.SPI模式3.工作时序二、STM32SPI1.SPI特性2.S
    发表于 12-22 19:24 11次下载
    <b class='flag-5'>STM32</b>学习笔记--<b class='flag-5'>SPI</b>

    STM32CubeMX-HAL库的SPI接口使用

    本文主要介绍STM32SPI接口、cubeMX软件配置SPI接口和分析SPI相关代码。
    发表于 02-08 15:27 10次下载
    <b class='flag-5'>STM32</b>CubeMX-HAL库的<b class='flag-5'>SPI</b>接口使用