专栏中心

EEPW首页 > 专栏 > 疯壳AI开源无人机SPI(六轴传感器数据获取)

疯壳AI开源无人机SPI(六轴传感器数据获取)

发布人:fengkelisa 时间:2020-04-26 来源:工程师 发布文章

一、ICM20602简介

   六轴传感器在当今智能穿戴和定位导航产品中被广泛应用,而六轴传感器中做的最好的要属InvenSense公司的产品了,ICM20602便是其推出的优秀六轴传感器之一。

ICM20602集成3轴加速度计和3轴陀螺仪,其中陀螺仪量程范围可以选择+/-250dps+/-500dps+/-1000dps+/-2000dps这四种,而加速度计量程范围可选择+/-2g+/-4g+/-8g+/-16g四种。

ICM20602支持高达400KHzI2C以及高达10MHzSPI,具有较高的接口兼容性。

ICM20602的实物图如下所示。

image.png

ICM20602的引脚如下图所示。

image.png

二、SPI概述

SPI是指Serial Peripheral Interface的缩写,即串行外围设备接口,是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的引脚,SPI4条通信线为:

1MISO主入从出接口;

2MOSI主出从入接口;

3SCLK由主设备产生的时钟信号;

4CS由主设备控制的从设备片选信号。

STM32F103SPI的时钟最高可达18MHz,支持DMA

SPI主从机通信,如下图所示:

image.png

当有多个设备挂载在SPI总线上,其接线图如下图所示。

image.png

单片机和外围器件之间进行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时,取上升沿;如下图所示:

image.png

当时钟相位为0时(CPHA=0),在SCK信号线的第一个跳变沿进行采样。跳变沿同样与时钟极性有关:当时钟极性为0时,取上升沿;当时钟极性为1时,取下降沿;如下图所示:

image.png


四、 SPI寄存器

在本次实验中使用到的是STM32的硬件SPISTM32的硬件SPI所涉及的寄存器较多,这里挑选较为重要的来讲解。

1SPI_CR1SPI控制寄存器1,如下图所示:

其中SPESPI使能控制位,等于1时使能SPI,等于0时关闭SPIBR[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/256MSTRSPI主从模式选择位,等于0时为从模式,等于1时为主模式;CPOLSPI时钟极性设置位,为0则空闲时钟为低电平,为1则空闲时钟为高电平;CPHASPI时钟相位设置位,等于0时,在第一个时钟跳边沿开始采集,等于1时,在第2个时钟跳边沿开始采集。

2SPI_SRSPI状态寄存器,如下图所示:

image.png

其中TXE是发送缓冲区状态位,该位为0时发送缓冲区非空,为1时发送缓冲区为空;RXNE为接收缓冲区状态位,该位为0时接收缓冲区为空,该位为1时,接收缓冲区为非空。

3SPI_DRSPI数据寄存器,用于存储接收或者发送的数据。SPI_DR的描述如下图所示:

image.png

其中DR[15:0]存放SPI数据。

五、六轴传感器数据获取实验

六轴传感器数据获取实验使用STM32的硬件SPI与六轴传感器ICM20602相连接,串口1UART1,通过USB转串口模块连接电脑,把SPI获取到的六轴数据通过串口1传输到电脑端的串口调试助手显示出来。做该实验的时候需要把视觉模组暂时取下,并且把USB转串口的线接到视觉模组接口处。六轴传感器ICM20602在无人机顶部的白色RGB彩灯盒里,通过软排把SPI及供电口接出,如下图所示。

image.png

根据原理图,可以看到ICM20602的的SPI接口分别是:PB13PA5PA6PA7,如下图所示。

image.pngimage.png

串口1的配置可以参考《串口(基础收发),配置代码(通过调用官方库)

获取ICM20602的数据代码编写的思路如下:

 

代码思路

1

管脚配置

1、定义结构体;

2、使能时钟;

3、填充结构体;

4、装载结构体。

2

SPI配置

1、定义结构体;

2、使能时钟;

3、填充结构体;

4、装载结构体;

5、使能SPI

3

SPI读写逻辑

1、读一个字节;

2、写一个字节。

4

ICM20602驱动

1、从传感器读;

2、从传感器写;

3、ICM20602初始化。

SPI初始化代码如下:

image.png

SPI的读写代码如下。

image.png

ICM20602的初始化代码如下。

image.png

ICM20602的读写代码如下。

image.png

这里注意要把串口的发送也配置好,这样才能把数据发送到电脑。串口1通过USB转串口模块接到电脑,获取ICM20602代码如下。

image.png

image.png

保存、编译、下载代码,可以看到USB转串口模块在不断地打印ICM20602X轴加速度高8位,数据如下图所示:

image.png

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

在线仿真的兴起、衰落和重生(1)

电子科技大学--嵌入式系统应用开发技术17

CMOS 2.0 正在推进半导体拓展极限

EDA/PCB 2025-10-21

电子科技大学--嵌入式系统应用开发技术20

Pickering 新型基于MEMS技术的多端口千兆以太网接口单元(GBASE-T1 FIU),显著提升了测试系统的带宽、数据吞吐能力以及使用寿命

“全民数字人”时代来袭!IDC最新研究解码AI数字人市场关键趋势

电子科技大学--嵌入式系统应用开发技术18

电子科技大学--嵌入式系统应用开发技术19

芯华章开放免费使用商用级仿真器GalaxSim加速中国芯片初创公司发展

EDA/PCB 2025-10-22

意法半导体加入FiRa董事会,加大对UWB生态系统和汽车数字钥匙应用的投入

在线仿真的兴起、衰落和重生:真实案例研究(2)

莱迪思Drive荣获第六届 AutoSec Awards安全之星突出贡献奖

电子科技大学--嵌入式系统应用开发技术16

世强硬创平台上新:天钰科技高集成AI SoC,助力客户解锁轻量智能家居新方案

人工智能电脑:准备重新点燃电脑市场的新类别

更多 培训课堂
更多 焦点
更多 视频

技术专区