资讯详情

【飞控开发基础教程6】疯壳·开源编队无人机-SPI(六轴传感器数据获取)

COCOFLY教程 ——疯壳·无人机·系列 SPI(获取六轴传感器数据)

图1 一、ICM20602 简介 六轴传感器广泛应用于当今智能穿戴和定位导航产品,六轴传感器中最好的是 InvenSense 公司的产品,ICM20602 是其优秀的六轴传感器之一。 ICM20602 集成 3 轴加速度计和 3 可选择轴陀螺仪,其中陀螺仪的量程范围 /-250dps, /-500dps, /-1000dps 和 /-2000dps 这四种可以选择加速度测量范围 /-2g, /-4g, /-8g 和 /-16g 四种。 ICM20602 支持高达 400KHz 的 I2C 以及高达 10MHz 的 SPI,界面兼容性高。 ICM20602 实物图如下所示。 图2 ICM20602 如下图所示。 图3 二、SPI 概述 SPI 是指 Serial Peripheral Interface 缩写,即串行外围设备接口,是一种高速、全双工、同步的通信总线,在芯片管脚上只占用四条线,节省了芯片的引脚,SPI 的 4 条通信线为: (1)MISO 主入从出接口; (2)MOSI 主出从入接口; (3)SCLK 时钟信号由主设备产生; (4)CS 从设备片中选择由主设备控制的信号。 STM32F103 的 SPI 最高时钟可达 18MHz,支持 DMA。SPI 如下图所示如下图所示: 图4 多个设备挂载时 SPI 总线上的接线图如下图所示。 图5 在单片机和外围设备之间进行 SPI 同步串行数据传输时,在主器件的移位脉冲下,数据按位传输,低位在前,高位在后,是全双工通信。总的来说,数据传输较 I2C 总线要快,速度能达到多少? Mbp,与其它总线相比,SPI 协议简单,相对数据速率高,但 SPI 也有它的缺点,例如,没有指定的流量控制,没有响应机制来确认是否接收数据。 三、SPI 总线协议 SPI 通信需要掌握以下知识: 时钟极性、时钟相位和 SPI 传输时序。 (1)时钟极性,SPI 时钟极性(CPOL)在总线空闲时,同步时钟(SCLK)信号线的电平是高电平还是低电平。当时钟极性是 0 时(CPOL=0), SCLK 空闲时,信号线为低电平;当时钟极性为 1 时(CPOL=1),SCLK 空闲时,信号线为高电平; (2)时钟相位,SPI 通过时钟相位(CPHA)决定何时进行信号采样。当时钟相位于 1 时(CPHA=1),在 SCK 采样信号线的第二个跳变沿;这里的跳变边是上升边还是下降边?这取决于时钟的极性。当时钟的极性是 0 当时,取下降缘;当时钟极性为 1 取上升边;如下图所示:

图6 当时钟相位为 0 时(CPHA=0),在 SCK 采样信号线的第一个跳变沿。跳变沿也与时钟极性有关:当时钟极性为 0 当时,取上升沿;当时钟的极性是 1 取下降边,如下图所示: 图7 四、 SPI 寄存器 在本实验中使用 STM32 的硬件 SPI,STM32 的硬件 SPI 涉及的寄存器很多,这里选择更重要的解释。 (1)SPI_CR1:SPI 控制寄存器 1.如下图所示: 图8 其中 SPE 为 SPI 等于使能控制位 1 时使能 SPI,等于 0 时关闭 SPI;BR[2:0]为 SPI 波特率控制位,BR[2:0]等于 000 则波特率为 fPCLK/2,等于 001 则波特率为 fPCLK/4,等于 010 则波特率为 fPCLK/8,等于 011 则波特率为 fPCLK/16,等于100 则波特率为 fPCLK/32,等于 101 则波特率为 fPCLK/64,等于 110 则波特率为fPCLK/128,等于 111 则波特率为 fPCLK/256;MSTR 为 SPI 主从模式选择位,等于0 时从模式,等于 1 时为主模式;CPOL 为 SPI 为 0 空闲时钟为低电平,为 1 则空闲时钟为高电平;CPHA 为 SPI 时钟相位设置等于0 第一时钟跳边开始采集,相当于 1 时,在第 2 个时钟跳边开始采集。 (2)SPI_SR:SPI 状态寄存器如下图所示: 图9 其中 TXE 是发送缓冲区的状态位,该位置为 0 缓冲区非空时发送 1 发送缓冲区为空;RXNE 这个位置是接收缓冲区的状态位 0 当接收缓冲区为空时,该位置为1 接收缓冲区为非空。 (3)SPI_DR:SPI 数据寄存器,用于存储接收或者发送的数据。SPI_DR 描述如下图所示: 图10 其中 DR[15:0]存放 SPI 数据。 五、六轴传感器数据获取实验 六轴传感器数据获取实验 STM32 的硬件 SPI 六轴传感器 ICM20602 连接,串口 1 即 UART1,通过 USB 将计算机连接到转串口模块 SPI 通过串口获得的六轴数据获得的六轴数据 1 串口调试助手端的串口调试助手显示。做这个实验的时候,需要暂时取下视觉模块,把它拿走 USB 连接到视觉模块接口的转弦线。六轴传感器 ICM20602 无人机顶部的白色 RGB 彩灯盒里,通过软排把 SPI 如下图所示,接出供电口。 图11 根据原理图,可以看到 ICM20602 的的 SPI 接口是:PB13、PA5、PA6、PA7.如下图所示。 图12 串口 1 配置代码(通过调用官方库)可参考串口(基本收发) 获取 ICM20602 编写数据代码的思路如下: 代码思路 表1 SPI 初始化代码如下: 图13 SPI 读写代码如下。 图14 ICM20602 初始代码如下。 图15 ICM20602 的读写代码如下。 图16 注意配置串口的发送,以便将数据发送到计算机。 1 通过 USB 接收计算机获取转串口模块 ICM20602 代码如下。 图17 您可以看到保存、编译和下载代码 USB 串口模块不断打印 ICM20602 的 X 轴加速度高 8 如下图所示,位数据: br>         图18               

标签: cs系列速度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台