IMX6ULL裸机篇之SPI实验-ICM20608代码实现

一.  SPI 实验

SPI实验:学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608,读取 ICM-20608 的六轴数据。

本文学习 SPI通信实验中,涉及从设备的 SPI代码编写。

之前学习了 SPI 主控芯片代码的编写,如下所示:

IMX6ULL裸机篇之SPI原理图_凌雪舞的博客-CSDN博客

IMX6ULL裸机篇之SPI实验-SPI主控寄存器_凌雪舞的博客-CSDN博客

IMX6ULL裸机篇之SPI实验-SPI主控代码实现_凌雪舞的博客-CSDN博客

二.  SPI从设备

1.   ICM20608从设备

IMC20608 传感器是一个六轴传感器,其中包括一个三轴陀螺仪与三轴加速度计。

IMC20608 传感器涉及两个文档,两个文档分别为:

"ICM-20608-G Datasheet Revision 1.0.pdf " 文档:是 IMC20608 的数据手册。

"ICM-20608-G Register Maps and Description Revision V1.0.pdf" 文档:是 ICM20608的寄存器说明。

参考 IMC20608 的数据手册文档,如下:

IMX6ULL裸机篇之SPI实验-ICM20608代码实现_第1张图片

 

从以上说明可以看出:

1.   数据采集发生在时钟上升沿。

2.  数据传输发生在时钟下降沿。

以上两点就决定了 SPI通信时的工作模式。即 时钟极性(CPOL)和相位(CPHA)都要设置为 0。

3.  SPI 读数据或写数据操作需要 16个时钟周期或更多个时钟周期。第一个字节包含 SPI地址,这里的SPI地址是寄存器地址。接下来的字节包括 SPI数据。

 第一个字节的最高位是读/写数据状态位,表示是读数据还是写数据。

2.  ICM20608从设备代码

你可能感兴趣的:(嵌入式C开发,裸机开发,arm开发,linux)