一. 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 的数据手册文档,如下:
从以上说明可以看出:
1. 数据采集发生在时钟上升沿。
2. 数据传输发生在时钟下降沿。
以上两点就决定了 SPI通信时的工作模式。即 时钟极性(CPOL)和相位(CPHA)都要设置为 0。
3. SPI 读数据或写数据操作需要 16个时钟周期或更多个时钟周期。第一个字节包含 SPI地址,这里的SPI地址是寄存器地址。接下来的字节包括 SPI数据。
第一个字节的最高位是读/写数据状态位,表示是读数据还是写数据。