STM32之SPI总线

一、SPI总线概述

1、SPI总线介绍

SPI是一种通信协议,它是摩托罗拉公司研发出来的一种通信协议,就有自己的特点(串行,并行,单工,半双工,全双工,同步异步)。它主要应用于音视频的开发. SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议.

一般的通信速度可以达到几十Mhz

SPI(Serial Peripheral Interface)是一种串行外设接口标准,用于在微控制器或其他数字设备之间进行通信。它被广泛应用于各种应用领域,如通信、嵌入式系统和传感器网络等。

 2、SPI总线接口与物理拓扑结构

SPI按照接线的不同分为3线SPI与4线SPI。

同步串行全双工

同步串行半双工

物理上的连接是怎么样的?

使用SPI协议重点是知道里面的一个时序的情况,如果知道了这种情况,完全可以实现这种协议。

SPI协议是一种一主多从的形式:

可以通过片选线来选中不同的从机

时钟线(信号)只能由主机控制,从机受到主机发出的时钟信号来做出相应的处理

针对主机而言:

当时钟线产生上升沿时接收数据,当时钟线产生下降沿时发送数据

当时钟线产生下降沿时接收数据,当时钟线产生上升沿时发送数据

3、SPI总线通信原理

SPI可以配置为4种模式(SPI控制器)

MODE0-MODE3

4、SPI总线数据格式

8位的数据,高位先发

SPI的通信过程其实就是数据交换的过程

首先需要拉低片选线

再根据当前的边沿决定是发送数据还是接收数据(上升沿发送,下降沿接收)

结束本次通信拉高片选线

用IO口来实现SPI协议?

写伪代码(不是真正可以实现的,不过可以实现相应的逻辑)

当前选择模式0:CPHA = 0, CPOL = 0,下降沿发送数据,上升沿接收数据

SCK, MOSI, MISO,CS

U8 Data = 0;//0000 0000
CS = 0;//选中这个芯片
SCK = 1;
for(i =0; i <8 ;i++)
{
    SCK = 0;
    MOSI = 0/1;
    SCK = 1;
    Data <<= 1;//空出低位的操作,data = 0000 0100
    if(MISO)
    {
        Data |= 1;//0000 0001
    }
}

二、SPI控制器

1、SPI的控制器特征

基于三条线的全双工同步传输(通过一个标志位的切换达到所谓的双工通信)
   
基于双线的单工同步传输,其中一条可作为双向数据线
   
8 位或 16 位传输帧格式选择
    主模式或从模式操作
   
多主模式功能
   
8 个主模式波特率预分频器(最大值为 fPCLK/2)fpclk就是看当前用的SPI是在哪根总线上
   
从模式频率(最大值为 fPCLK/2
   
对于主模式和从模式都可实现更快的通信
   
对于主模式和从模式都可通过硬件或软件进行 NSSCS管脚) 管理:动态切换主 /从操作
    可编程的时钟极性和相位
   
可编程的数据顺序,最先移位 MSB LSB
       可触发中断的专用发送和接收标志
    SPI 总线忙状态标志
   
SPI TI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值