美文网首页我爱编程
运动控制器20:STM32的SPI模块

运动控制器20:STM32的SPI模块

作者: 吴松乾 | 来源:发表于2018-01-18 13:03 被阅读0次

SPI简介

  1. 大容量的SPI接口支持I2S,默认为SPI
  2. 全双工,半双工,同步和串行通信四种方式
  3. 主模式为从设备提供时钟

SPI主要特点

  1. 3线全双工
  2. 2线单工
  3. 8位和16位帧格式
  4. 主模式OR从模式
  5. 预分频
  6. 可编程时钟极性和相位
  7. 可编程数据顺序
  8. 发送和接收的中断,忙状态
  9. 硬件CRC
  10. 故障,过载和CRC错误标志
  11. 支持DMA,单字节收发缓冲,并产生中断

SPI的功能描述

概述

  1. 引脚,4PIN,MI,MO,SCK,NSS,NSS为输出时,片选,做输入时,如果拉低,则强制主模式进入从状态,该引脚可不用。
  2. 两种模式:
    • 软件NSS模式,引脚作为它用,要设置引脚时可以写寄存器。
    • 硬件NSS模式,使能后拉低NSS,其他设备进入从模式。如果不能拉低,表示总线忙,返回失效。
  3. 时钟信号的相位和极性CPOL和CPHA
    • CPOL,闲置时时钟电平。
    • CPHA,1:第二个边沿进行采样。0:第一个边沿采样。

配置为从模式

配置为主模式

  1. 设置波特率
  2. 设置极性和相位
  3. 数据格式为8位还是16位
  4. 设置高位还是低位在前
  5. 设置NSS引脚
  6. 设置主从和使能


    1.png

上面为串行12864的通信时序,CPOL=1,CPHA=1,我们可以设置为双线单工通信。

配置为单工通信

  1. 单工有两种,1时钟+1双向线或者1时钟+1单向
  2. 只发送时只用到SCK和MO引脚,不需要处理接收缓冲

发送和接收过程

主模式下,有四种方式:

  1. 全双工
  2. 单向只接收
  3. 双向模式时,发送时不接受
  4. 只接收不发送

主模式全双工流程如下:单向只发送同这种模式

  1. 使能SPI模块
  2. 写入发送的数据
  3. 等待TXE=1,发送完毕,如果要接收,等待RXNE=1,然后读出
  4. 发送完毕后,检查BSY=0后关闭SPI

双面液晶的通信流程如下:

  1. 使能
  2. 写入要发送的数据
  3. 等待发送完,读取TXE
  4. 写入第二个……,读取TXE
  5. 读BSY=0后,关闭

CRC计算

  1. CRC计算可选择需要的多项式
  2. 使能以后,将在通信的最后,自动再发送CRC
  3. 接收的时候可以再计算一遍,然后和接收到的CRC进行对比

状态标志

  1. 发送完成 TXE
  2. 接收完成 RXNE
  3. 忙 BSY

关闭SPI

主模式全双工通信时,等待发送完最后一个数据TXE=1后,读BSY=0后,关闭SPI

利用DMA

TXE=1时触发DMA,DMA将数据写入DR后清除TXE,如果只发送,则只使能DMA发送通道

中断

可设置TXE和RXNE中断

相关文章

  • 运动控制器20:STM32的SPI模块

    SPI简介 大容量的SPI接口支持I2S,默认为SPI 全双工,半双工,同步和串行通信四种方式 主模式为从设备提供...

  • STM32-SPI的理解

    STM32在芯片内部已经集成了SPI接口,用户只需配置SPI并复用映射到相应的IO口就行。 一、SPI的特点: ...

  • STM32F407 SPI配置并读取磁角度传感器AS5048a笔

    STM32的SPI模块是一种标准的全双工数据传输模块,很多传感器芯片都将其作为标准的数据传输协议。一般来说,STM...

  • 和唐并肩作战

    晚上唐说一起和我搞stm32单片机,我很开心。 在给他打电话沟通后,他提出用并联的方式进行学习。一是spi模块的参...

  • SPI机制

    SPI:由于业务模块进行了组件拆分,开发了基于SPI组件通信方式,用在模块间降低耦合,解决业务模块的通信问题。可以...

  • stm32固件库SPI操作

    stm32固件库SPI操作 来源: 野火<零死角玩转STM32-F407> '''/* Private typed...

  • 运动控制器13:STM32的I2C模块

    I2C模块功能知识点梳理 简介 多主机 用于控制I2C的时序,协议,仲裁和定时 标准和快速两种模式 CRC码生成和...

  • 第20课 SPI协议详解及裸机程序开发分析

    第001节_SPI协议介绍 市面上的开发板很少接有SPI设备,但是SPI协议在工作中经常用到。我们开发了SPI模块...

  • 工作日志记录 2021-05-08

    stm32 操作 wifi 模块 , wifi 模块通过socket 传送数据 socket 同时支持 web...

  • 运动控制器15:STM32的I2C模块2

    EEPROM的操作函数 AT24C02芯片手册链接:芯片手册 I2C_EE_WaitEepromStandbySt...

网友评论

    本文标题:运动控制器20:STM32的SPI模块

    本文链接:https://www.haomeiwen.com/subject/btxwoxtx.html