写在前面:
本节课将介绍BMI088传感器的相关知识,BMI088传感器是一个六轴惯性测量单元 (IMU),能够应用于机器人上的姿态解算,将在本章节学习六轴惯性测量单元的内部结构——三轴陀螺仪和三轴加速度计,惯性测量单元的功能及其基本原理,同时我们将介绍一个重要的通信协议——SPI协议,以及BMI088传感器的使用方法,并编写工程进行BMI088传感器的驱动。
SPI协议是摩托罗拉公司开发的一种高速的,全双工,同步的通信总线,使用四根线进行通信,具有简单易用,通讯速度高的特点。SPI总线上可以挂载多个设备,这些设备被区分成主设备(Master)和从设备(Slave),主设备通过时钟线和片选线对从设备进行控制。
SPI通信采用主从架构,由一个主设备(通常是微控制器)和一个或多个从设备组成。通信过程中,主设备负责控制时钟信号,并通过以下四个主要引脚与从设备进行数据交换:
SPI是单主设备(Single Master)通信协议,只有一支主设备能发起通信,当SPI主设备想读/写从设备时,它首先拉低从设备对应的SS线(SS是低电平有效)。接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”。如下图所示:
使用SPI进行通信时,各个设备的时钟引脚一起挂载在SCK线上,主设备的输入和各个从设备的输出连接MISO/SDI,主设备的输出和各个从设备的输入连接MOSI/SDO,同时主设备的GPIO口连接各个从设备的CS。
SPI的通讯过程开始时,如果一个主设备和一个从设备要进行通信,则主设备会通过CS信号线选中该从设备,其他未被选中的从设备不参与此次通信。
SPI的时序规定了不同的工作模式,如下表所示: