找回密码
 注册
关于网站域名变更的通知
查看: 233|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-7-8 18:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
COCOFLY教程
——疯壳·无人机·系列
SPI(六轴传感器数据获取)
$ p  i* e) {. [+ h- f- d5 c: a

1 a# A4 C) D; {  B9 A9 `. T; M% ~5 L+ U; b$ v1 K5 z0 Q
4 v3 h; V% e: i) S$ V) q
    图17 ^, U. W/ Q: D

" v2 L8 O* d* p7 d9 \$ g) w4 m5 j' g
+ P" |1 K) x: A( `6 Y& k/ t; C    一、ICM20602 简介
+ h: v# n  ~" E    六轴传感器在当今智能穿戴和定位导航产品中被广泛应用,而六轴传感器中做的最好的要属 InvenSense 公司的产品了,ICM20602 便是其推出的优秀六轴传感器之一。, ~3 B) h  Z+ |. X5 k6 u2 ^
    ICM20602 集成 3 轴加速度计和 3 轴陀螺仪,其中陀螺仪量程范围可以选择, \: z1 B. Q8 O- R9 e" |$ B+ U
    +/-250dps,+/-500dps,+/-1000dps 和+/-2000dps 这四种,而加速度计量程范围可选择+/-2g,+/-4g,+/-8g 和+/-16g 四种。: T  E& z" _- w5 `6 b0 L7 O. a6 E
    ICM20602 支持高达 400KHz 的 I2C 以及高达 10MHz 的 SPI,具有较高的接口兼容性。# q7 _% o. e9 z2 Z0 X2 {- N& p& |4 P0 J
    ICM20602 的实物图如下所示。
$ @  v# C- v+ I* {" V$ I& X8 r: l! |- W) E, B0 I) a
   
9 g$ ^8 p2 ^- h; i! Z5 w% I3 q: o    图2* r  ~9 i7 Y% X4 U) N2 J' n! J
    ICM20602 的引脚如下图所示。
! o8 c8 `- R& d1 n$ z! t% p- O1 f5 W% j  @, @) d2 s
    ; z3 P, y4 k1 S3 W% N, A' J
    图3; \$ n( K' i) [3 {

+ S  W5 [  I# r3 v5 j- Z0 A6 n: |
3 H$ |9 g; p& @    二、SPI 概述$ W+ r$ F5 u1 d# l& K
    SPI 是指 Serial Peripheral InteRFace 的缩写,即串行外围设备接口,是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的引脚,SPI 的 4 条通信线为:
+ u0 t. W9 N0 b# [# \: T; j! |    (1)MISO 主入从出接口;
& p/ B6 T: k- a2 {% B    (2)MOSI 主出从入接口;
/ A" D$ O* d3 x3 K) N8 X3 J    (3)SCLK 由主设备产生的时钟信号;
1 E% R5 \4 Q$ U6 }    (4)CS 由主设备控制的从设备片选信号。
# X" v4 q7 @9 j1 `9 i    STM32F103 的 SPI 的时钟最高可达 18MHz,支持 DMA。SPI 主从机通信,如下图所示:
# s# Z7 ?3 L: M; a+ t) c( U- o1 M5 ?& Q
   
( k8 {( o& R7 q3 h/ p5 z) m5 L# Q    图4
& R5 v# w( X# {  L0 T    当有多个设备挂载在 SPI 总线上,其接线图如下图所示。* T3 `" ?; ?: o. \0 Y) B
' N* N. M1 T  r9 s
   
2 o" V/ o0 e+ |; s! A- N    图59 S0 J5 v  j5 W- [, i* m7 G
    单片机和外围器件之间进行 SPI 同步串行数据传输时,在主器件的移位脉冲下,数据按位传输,低位在前,高位在后,为全双工通信,数据传输速度总体来说比 I2C 总线要快,速度可达到几 Mbp,相比于其它总线,SPI 协议简单,相对数据速率高,但是 SPI 也有它的缺点,比如没有指定的流控制,没有应答机制确认是否接收到数据。
1 i- b6 ~' s, Q* H
" ]3 f1 J4 I/ k$ N* e    三、SPI 总线协议) M4 l" ~/ p1 b3 i( y# @' f
    SPI 通信需要掌握以下知识: 时钟极性、时钟相位以及 SPI 的传输时序。% ~7 L: d4 e& l4 i: p+ J

# t% `2 u; `, c$ ^" Z$ |/ }    (1)时钟极性,SPI 通过时钟极性(CPOL)来决定在总线空闲时,同步时钟(SCLK)信号线的电平是高电平还是低电平。当时钟极性为 0 时(CPOL=0), SCLK 信号线在空闲时为低电平;当时钟极性为 1 时(CPOL=1),SCLK 信号线在空闲时为高电平;& L  f* W' i3 v2 _  X. i
    (2)时钟相位,SPI 通过时钟相位(CPHA)用来决定何时进行信号采样。当时钟相位为 1 时(CPHA=1),在 SCK 信号线的第二个跳变沿进行采样;这里的跳变沿究竟是上升沿还是下降沿?这取决于时钟的极性。当时钟极性为 0
3 O- P. ]+ v3 `5 W    时,取下降沿;当时钟极性为 1 时,取上升沿;如下图所示:
, h7 g) z( t# ?4 U$ s0 X* t9 l% d8 n" G! ^
' G9 s* U8 ]" j" h' h% y
图6( o# Z- B$ h! w
    当时钟相位为 0 时(CPHA=0),在 SCK 信号线的第一个跳变沿进行采样。跳变沿同样与时钟极性有关:当时钟极性为 0 时,取上升沿;当时钟极性为 1
* x) W+ K, N1 e8 I) r    时,取下降沿;如下图所示:
- i( K2 p! l! h
# g4 }6 }' ?: u; w- p    
8 E! B  k4 {2 Y0 k- Y1 ?    图7$ W7 ~1 i3 w4 K9 Z" Q( k- I* \8 b
    四、 SPI 寄存器
" u. N) _" `& g; C9 v/ k' A" R    在本次实验中使用到的是 STM32 的硬件 SPI,STM32 的硬件 SPI 所涉及的寄存器较多,这里挑选较为重要的来讲解。2 \% Z* k! `1 f: n
- K' n  z+ {" v
    (1)SPI_CR1:SPI 控制寄存器 1,如下图所示:
. z+ e+ \' d1 q$ F  ]3 a2 X9 ~6 W7 R  g* N" f$ i$ ?
   
# w! R6 H" X& d0 C$ Z* K    图8
' q' E. N, O. |; V, m    其中 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 个时钟跳边沿开始采集。( u$ c% ^8 k2 q* T5 c; }0 |. N% N3 v
    (2)SPI_SR:SPI 状态寄存器,如下图所示:
# I8 e8 T0 V- t  G  |* @4 I% L. y/ V
   
0 g' J- }3 j) q& N0 c0 G, K9 q    图9) D: n/ l9 C; Z! K* N  I
    其中 TXE 是发送缓冲区状态位,该位为 0 时发送缓冲区非空,为 1 时发送缓冲区为空;RXNE 为接收缓冲区状态位,该位为 0 时接收缓冲区为空,该位为1 时,接收缓冲区为非空。
4 S/ _" d: i" ^- _3 u/ u    (3)SPI_DR:SPI 数据寄存器,用于存储接收或者发送的数据。SPI_DR 的描述如下图所示:) w- |3 @7 o1 C! m. K! G! u, [
8 m% h* E3 G1 o( x3 z
   
6 Z7 H9 D/ X: Z/ C% l4 U% E4 k5 l2 q    图10/ O- _8 \+ O. S
    其中 DR[15:0]存放 SPI 数据。1 M+ J; Y# G/ p7 R4 g5 n
    五、六轴传感器数据获取实验
% A! Z" M# z% x
8 z* a7 `( ?& j, B* |6 g8 H- @    六轴传感器数据获取实验使用 STM32 的硬件 SPI 与六轴传感器 ICM20602 相连接,串口 1 即 UART1,通过 USB 转串口模块连接电脑,把 SPI 获取到的六轴数据通过串口 1 传输到电脑端的串口调试助手显示出来。做该实验的时候需要把视觉模组暂时取下,并且把 USB 转串口的线接到视觉模组接口处。六轴传感器 ICM20602 在无人机顶部的白色 RGB 彩灯盒里,通过软排把 SPI 及供电口接出,如下图所示。
' ]2 f! t1 L7 L6 d
' j+ g) @) s# @+ `     $ p# x9 u% @+ d/ Y6 d1 C
    图11
: C# K" L; F) v' [    根据原理图,可以看到 ICM20602 的的 SPI 接口分别是:PB13、PA5、PA6、PA7,如下图所示。: O3 X6 L6 Z8 e5 X/ r& d
+ ]' G. K4 L3 Z: y+ P- V* @
    % n6 N+ V% ^3 `9 u0 y
    图12% m6 g; g  X  O" ~; d3 T4 ~' h
    串口 1 的配置可以参考《串口(基础收发),配置代码(通过调用官方库) 获取 ICM20602 的数据代码编写的思路如下:6 t/ U" T: s: g% q
; n8 n  T& X1 _+ f% ?# n9 Y
    代码思路
& p* U. U4 ]! I4 {! A0 s2 B
: {/ I; c4 z# k! ^& f  D# ~    
( G+ P3 ]( O& J! p    表15 ^$ X: f$ H* p0 ~
    SPI 初始化代码如下:8 U. c. V# D, F8 P0 g

9 p5 @6 R9 I: Z$ u% [  \    
' P. x( `3 z# _  @, V" W; [0 a5 O    图13
" J+ H' X  T4 m8 K    SPI 的读写代码如下。
0 A: q0 Q. C5 w% u- R* O5 ?3 D' x; _
4 [) C& G7 h7 _" g( A     $ }& k, `) S. k7 O' V6 Y7 m
    图14
) E& u1 X1 ?" L# c/ w  I    ICM20602 的初始化代码如下。$ N5 E, P9 t! s/ e

* O0 d6 w) ~+ r$ ~4 f       i  Z1 w! |3 c& I0 p1 i; f
    图157 Q5 p# w1 k0 E% K  U3 Y' |) f1 m& j) N7 G
    ICM20602 的读写代码如下。, w7 T" q3 d# O2 [; e6 P
# x- u0 O6 h6 X) q) z( K
   
/ ]6 F: O) R  D9 h! U- h    图16( f9 a0 y/ ^  i2 U/ s2 ^
    这里注意要把串口的发送也配置好,这样才能把数据发送到电脑。串口 1 通过 USB 转串口模块接到电脑,获取 ICM20602 代码如下。0 \; N! j8 N4 e: B& T) M8 x

3 D9 x: W. t' G2 \2 M! M & S( ^. B( m" H0 t
   3 O: f! d/ q, e6 V* H5 k
    图17
8 a; X9 q* C2 o: I    保存、编译、下载代码,可以看到 USB 转串口模块在不断地打印 ICM20602; B. I) I3 X3 y7 I9 G- [
    的 X 轴加速度高 8 位,数据如下图所示:% z( e4 Z0 l' Y) g

% k7 ~, J# H3 l% A% `  i    
1 }# e, U6 r' O1 K* Y    图18
2 e# y- ]8 X5 ~: N$ T& ]: P0 c& |+ @7 G+ Q) q8 u
% Y1 O3 L5 l& G7 |5 W6 t
5 a* l) G3 `; ], t
    配套资料:http://www.fengke.club
% M( d$ G5 y/ I0 b: B: n# Z    套件地址:http://shop115904315.taobao.com & o( T1 X: ~" m' g
    文件下载请点击: 【6】SPI(六轴传感器数据获取).pdf (1.19 MB, 下载次数: 1) ; t( P1 k: x0 [# D
9 ~* q$ ?' _' D& D4 g9 c/ B
2 ]% p# V) N7 J3 O/ y2 H

该用户从未签到

2#
发表于 2022-7-12 11:01 | 只看该作者
此协议还是比较浅显易懂的3 d0 H0 O4 _- C2 R! r- b. g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 17:35 , Processed in 0.156250 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表