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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

0 M# S# K/ b$ M# z0 @* J  I& r, s! b. r- ~
( I! p' h% h5 ~* p3 @
3 e+ @- `% D" l
    图1" C0 K4 f4 I: n# Y' w7 {. V
  @- L. G- u9 j

- A, K3 u0 i; q: `; d# u    一、ICM20602 简介) V, R6 c7 g5 X. P7 x$ J3 R1 P
    六轴传感器在当今智能穿戴和定位导航产品中被广泛应用,而六轴传感器中做的最好的要属 InvenSense 公司的产品了,ICM20602 便是其推出的优秀六轴传感器之一。$ x( J4 F$ {7 I8 r
    ICM20602 集成 3 轴加速度计和 3 轴陀螺仪,其中陀螺仪量程范围可以选择
1 t0 @/ K. L" d. R- G    +/-250dps,+/-500dps,+/-1000dps 和+/-2000dps 这四种,而加速度计量程范围可选择+/-2g,+/-4g,+/-8g 和+/-16g 四种。
! O, z% e7 D" J. N    ICM20602 支持高达 400KHz 的 I2C 以及高达 10MHz 的 SPI,具有较高的接口兼容性。* ~5 }' w. a+ k- [* n; @
    ICM20602 的实物图如下所示。
, ^$ k' D$ k1 S, T
, B) u9 T* x# ?% j7 Q9 q3 P     % Y3 F4 d* y, |& y3 U& I
    图2
. N6 y0 P, A+ L2 x( ^    ICM20602 的引脚如下图所示。
% e( x) p5 s  {# b9 D  n
6 }9 w, f' K1 B+ j4 O) E- B# E" F: K. w$ S    
+ `1 Q7 v! j5 K$ [, ^7 L8 x    图3
* |- a: t, y* u8 _
+ |, l% ^6 D) t3 `( y$ e  H
& n2 P* u5 m7 T6 i5 r    二、SPI 概述
  T/ z* K) Z" X  O+ N( P* ?    SPI 是指 Serial Peripheral InteRFace 的缩写,即串行外围设备接口,是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的引脚,SPI 的 4 条通信线为:
9 U, c3 m3 E7 N' y' c& [0 d, o    (1)MISO 主入从出接口;
# p$ `& [; t# ?' q- o' V2 k    (2)MOSI 主出从入接口;3 A5 L/ {* u9 ~% m
    (3)SCLK 由主设备产生的时钟信号;6 ~' D/ ?# B+ k# z; A: E
    (4)CS 由主设备控制的从设备片选信号。
2 m) v- A% c5 O: [    STM32F103 的 SPI 的时钟最高可达 18MHz,支持 DMA。SPI 主从机通信,如下图所示:' a4 Y' [# b: f" Q6 M+ T4 z) h6 |! Y
7 b# m6 p# N' n& o; G, t
   
3 ~: y7 j% v, I) ~$ V0 g: i% }: T" d4 W    图4
1 Z6 z. U1 U6 E; c/ S& a    当有多个设备挂载在 SPI 总线上,其接线图如下图所示。
4 x/ b0 U2 y5 j" y2 e
; P/ Y; ]# j/ j( }# J. d     * l: K7 W$ @+ g2 `/ `+ T
    图55 L9 R) m$ e5 [' |6 q  O/ C9 p
    单片机和外围器件之间进行 SPI 同步串行数据传输时,在主器件的移位脉冲下,数据按位传输,低位在前,高位在后,为全双工通信,数据传输速度总体来说比 I2C 总线要快,速度可达到几 Mbp,相比于其它总线,SPI 协议简单,相对数据速率高,但是 SPI 也有它的缺点,比如没有指定的流控制,没有应答机制确认是否接收到数据。  I5 F/ T" e: E2 t- v

1 N1 S4 L) ?, N+ J' ^    三、SPI 总线协议7 t+ e0 v. k" @2 c4 f6 u! @& _2 s
    SPI 通信需要掌握以下知识: 时钟极性、时钟相位以及 SPI 的传输时序。$ q2 C  v; a4 ~  \3 w3 r
7 u! h8 _* `3 L# \' Z4 D* }
    (1)时钟极性,SPI 通过时钟极性(CPOL)来决定在总线空闲时,同步时钟(SCLK)信号线的电平是高电平还是低电平。当时钟极性为 0 时(CPOL=0), SCLK 信号线在空闲时为低电平;当时钟极性为 1 时(CPOL=1),SCLK 信号线在空闲时为高电平;5 e3 Q7 f; U4 D% \8 v" A$ R( x
    (2)时钟相位,SPI 通过时钟相位(CPHA)用来决定何时进行信号采样。当时钟相位为 1 时(CPHA=1),在 SCK 信号线的第二个跳变沿进行采样;这里的跳变沿究竟是上升沿还是下降沿?这取决于时钟的极性。当时钟极性为 0# H8 R. s+ }( y. b
    时,取下降沿;当时钟极性为 1 时,取上升沿;如下图所示:
' \2 D1 F; T* f' R8 W6 e
3 v( l8 p; b/ n  s6 t+ d6 \
6 n5 a/ i6 \3 D/ O# r1 e# M( @- V图6
8 i0 z2 F# m! J& \    当时钟相位为 0 时(CPHA=0),在 SCK 信号线的第一个跳变沿进行采样。跳变沿同样与时钟极性有关:当时钟极性为 0 时,取上升沿;当时钟极性为 1* N: \9 @+ C$ S% `$ v
    时,取下降沿;如下图所示:
" @  k# N$ v! ~# N6 C
* O- i8 B7 S4 V4 {/ R    , Q, N) q; G  m* j
    图7+ t5 |7 a3 A+ c5 F8 ?
    四、 SPI 寄存器
4 h: h9 r: w3 T( X    在本次实验中使用到的是 STM32 的硬件 SPI,STM32 的硬件 SPI 所涉及的寄存器较多,这里挑选较为重要的来讲解。. c- [# z7 E, e$ q; x/ ]/ I, J3 A
$ H9 l/ _9 a) {/ c, e3 v* L; I
    (1)SPI_CR1:SPI 控制寄存器 1,如下图所示:
6 ~' b  p3 e" S/ M' h- m/ b, [$ ]% x/ J' [# _/ U; i* d- x
   $ W3 Z, s/ U/ @% l
    图83 J  O; U  G' O. b& H9 G. ?$ \* q$ g( y
    其中 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 个时钟跳边沿开始采集。. K! F1 b" p6 E. l2 M
    (2)SPI_SR:SPI 状态寄存器,如下图所示:& U$ c: Q) P6 u: {+ I

% M4 D3 [$ ^8 c4 l$ p    
3 F) `! ]1 j" [, P0 Q. `) [8 `    图9
+ J$ y% X/ b, O6 Y: E+ I4 p3 u    其中 TXE 是发送缓冲区状态位,该位为 0 时发送缓冲区非空,为 1 时发送缓冲区为空;RXNE 为接收缓冲区状态位,该位为 0 时接收缓冲区为空,该位为1 时,接收缓冲区为非空。# ~" P6 F, z5 D
    (3)SPI_DR:SPI 数据寄存器,用于存储接收或者发送的数据。SPI_DR 的描述如下图所示:& D/ L/ O4 h$ X- v& O
, l) Y, N, y2 C0 |/ D
   
5 A. K+ I1 @+ O    图10
: m# V# A2 ~3 _- r    其中 DR[15:0]存放 SPI 数据。+ Q7 m& _4 r/ w. ]2 a1 B6 s
    五、六轴传感器数据获取实验+ d! N4 B! j3 _! [

  ^) R0 k2 A! }( S7 y- Q) j    六轴传感器数据获取实验使用 STM32 的硬件 SPI 与六轴传感器 ICM20602 相连接,串口 1 即 UART1,通过 USB 转串口模块连接电脑,把 SPI 获取到的六轴数据通过串口 1 传输到电脑端的串口调试助手显示出来。做该实验的时候需要把视觉模组暂时取下,并且把 USB 转串口的线接到视觉模组接口处。六轴传感器 ICM20602 在无人机顶部的白色 RGB 彩灯盒里,通过软排把 SPI 及供电口接出,如下图所示。
9 F( s, z0 P  K0 c5 k1 D
& W9 E" S' J0 w* d     ! G, F; R, |3 c8 D/ t
    图11, d2 a) ?6 b0 z' |% O9 `, v$ K
    根据原理图,可以看到 ICM20602 的的 SPI 接口分别是:PB13、PA5、PA6、PA7,如下图所示。1 c+ j) Z3 s3 S6 [( B
- e8 s; t: b2 o+ M" P
    . \; p, \/ D- y5 A5 ?4 M5 r# U
    图12
9 V6 \# |/ M2 Z+ i    串口 1 的配置可以参考《串口(基础收发),配置代码(通过调用官方库) 获取 ICM20602 的数据代码编写的思路如下:
& U& w: H: E( P8 e, x
2 \' x# f' n9 t: X3 w    代码思路
& @4 x$ ]' {. e0 E9 ?; y0 v: b+ U/ ^, m7 y" J
   3 q: ^! F: V2 k( u  z5 d8 Z
    表1
4 L+ s' N" m3 ^/ n    SPI 初始化代码如下:4 ?; W+ E' N9 F; ?% Q/ f9 l) C
8 r% U$ G) @3 P9 |2 N# O, B9 F) {
   
5 g" J  w+ D' o. L    图131 N1 {: J' m1 e; a7 W. |, Q/ V
    SPI 的读写代码如下。7 w7 k2 y+ h5 N" h/ x
  B( D" @2 m2 e% C
    ! p+ u  N& B6 B* k% P
    图14
' r, W* ?7 I6 w  }+ Y, r- n' f    ICM20602 的初始化代码如下。' @6 G- [. Y3 N6 e" H
3 D; b- ^5 O9 `2 C
   
/ m' j: Y; Z( l# K    图15
4 z- V: m4 [" v; a9 k7 T6 Y) [    ICM20602 的读写代码如下。
7 u; G+ u3 ~- E% b7 y
, ~3 [" I+ x8 t# K3 A    3 T+ ~& m" [1 }! _6 P# _9 y; G' ]; v0 j
    图161 G9 N* n" r1 a
    这里注意要把串口的发送也配置好,这样才能把数据发送到电脑。串口 1 通过 USB 转串口模块接到电脑,获取 ICM20602 代码如下。
* a' Q6 M- s( Y5 X# o1 K
# z+ S; I% ?  ~9 y+ T5 c1 v1 \ 4 c1 m& I$ A  }: t
   * M  [+ B% G% \' r# t9 x  k
    图17% {9 M9 \1 U' T, h; O/ S
    保存、编译、下载代码,可以看到 USB 转串口模块在不断地打印 ICM20602
7 s8 g/ e! r8 z4 f* A9 d    的 X 轴加速度高 8 位,数据如下图所示:
" w) T- H6 d2 w/ E& _2 m9 F
2 G/ a, ^1 _2 v; U4 O" ~& Q  B1 X    5 k. q, s" l, A! ]1 q* O
    图18
" c! P2 C+ p' `# g' S
7 f, n& a# u; s; _0 M& t( m8 q7 _/ I: b7 h/ `
' Q1 |4 C  p) ?& m- E% Z1 k
    配套资料:http://www.fengke.club
+ _: U6 [$ X& D' ^' D* X4 D: g    套件地址:http://shop115904315.taobao.com
) h" d; v* r  h; {5 B8 N2 M    文件下载请点击: 【6】SPI(六轴传感器数据获取).pdf (1.19 MB, 下载次数: 1)
; p' x. A7 ~6 o' v' y9 @
. ]$ V9 o5 I& Y* [- h$ o: i8 N
) B! e% W; O# t* @

该用户从未签到

2#
发表于 2022-7-12 11:01 | 只看该作者
此协议还是比较浅显易懂的
: y: |6 F3 l- f! Q1 Q2 i! o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-25 21:21 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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