• STM32 SPI


    SPI通信过程简述:

    两根数据线:对应于通信双方的各自数据发送端和接收端

    一根时钟线:用于通信的同步

    一根NSS线:简单来说其作用是使能

     

    通信过程

    双方数据通过时钟的电平边沿保持同步:(SPI只利用了其中一种边沿:即要么上边沿要么下边沿)

    因此对于时钟信号来说,最低要求就是要有边沿的变化,而要产生边沿的变化,有多种选择:

    • 时钟信号可有两种形式:空闲时高 空闲时低 ->STM32中由CPOL进行选择
    • 数据的同步方式也有两种选择:上升沿通信 下降沿通信  -> STM32中由CPHA进行选择

    当然,通信双方的上述配置要相同

     

    再具体些:

    当时钟信号的有效边沿到来时,在MOSIMISO上发生了如下事情:

    MOSI:主发从收

    MISO:从发主收

    由此完成了一个位数据的交换,接着双方等待下一个有效边沿的到来,如此循环

     

    再具体些:

    这里的所谓的“发”,不过是把数据线设置成对应的电平,而“收”就是检测一下数据线的电平。显然,收要在发之后,因此——————>在时钟信号的有效边沿到来前,发送方就要准备好数据(即提前设置数据线的电平),边沿到来时接收方检测一下就行了

     

     

    主和从的区别是什么?

    主:提供时钟信号

     

    NSS详解: 

    Before:

    NSS有两种模式:

    1. 软件模式:类似于用一个寄存器代表实际的引脚状态
    2. 硬件模式:实际引脚状态

     

    从设备:

      NSS信号为低时才能通信(包括软件和硬件)

    主设备:

    NSS又分输入和输出模式:

      输入:输入模式的作用就是两个字——检测

      检测NSS是否为高,若为低表示总线被占用,工作失败,自动切换至从模式(检测对象可为软件模拟引脚或实际引脚,若采用软件,则SSI位作为引脚的模拟就要被置1,官方库中指定modeSPI_Mode_Maste时就同时设定了SSI1

      输出:拉低NSS 片选从设备(此时若配置为软件模式,作用对象是什么?)

     

    其它设置:

    • 数据长度:8位或16位
    • 高位先还是低位先

    关于中断(类似于串口):

    • 发送:当发送缓冲器中的数据传输到移位寄存器时,SPI_SP寄存器的TXE标志被设置,表示内部的发送缓冲器可以接收下一个数据
    • 接收:当移位寄存器中的数据传送到接收缓冲器时,SPI_SR 寄存器中的RXNE标志被设置

     

  • 相关阅读:
    数组
    循环(二)
    循环——笔记
    C#基础(四)
    C#基础(三)
    安卓帮助文档
    增加线程异步发送消息的方法二(Runnable)
    增加线程异步发送消息的方法一(Thread)
    获取下拉框的值
    获取表中字段最大值,并且保存在前台页面中
  • 原文地址:https://www.cnblogs.com/2cats/p/3687480.html
Copyright © 2020-2023  润新知