你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 I2C详解

[复制链接]
STMCU小助手 发布时间:2022-6-16 17:00
01. I2C简介
! K2 l8 {: {, h3 AI2C(内部集成电路)总线接口用作微控制器和 I2C 串行总线之间的接口。它提供多主模式功能,可以控制所有I2C总线特定的序列、协议、仲裁和时序。它支持标准和快速模式。它还与 SMBus 2.0 兼容。( B2 n4 j$ V8 Q" O  ]5 h

- A. h" v2 v! U, K' g7 \它可以用于多种用途,包括 CRC 生成和验证、SMBus(系统管理总线)以及 PMBus(电源管理总线)。% R& n0 a7 I7 N5 D! u, M* z

0 f& a- ~: h3 _5 |, c' W$ k7 b根据器件的不同,可利用 DMA 功能来减轻 CPU 的工作量。2 K, }2 b. ]; v% B% Y  h. W

( x6 I8 A( v* R" m02. I2C主要特性3 c$ K( k0 t, \  x. o5 r" G, H
并行总线/I 2 C 协议转换器5 p, ?( M9 @& a4 U# h) e
● 多主模式功能:同一接口既可用作主模式也可用作从模式
0 u- w/ U3 ^5 V7 s! ^● I 2 C 主模式特性:
# J7 g' D3 @, j' z5 R! g' U  r, [— 时钟生成
0 P* E# X3 `7 k, D— 起始位和停止位生成' c( p; C7 @, K# d
● I 2 C 从模式特性:
5 J  |1 @- D" Y) b* A8 S— 可编程 I 2 C 地址检测
1 ^3 d8 [  x- X  Q3 F& m, u# a; {— 双寻址模式,可对 2 个从地址应答
3 _( ]' I. ^: A( _3 D— 停止位检测8 k  z6 l; ^9 u" A- `& H" @! [
● 7 位/10 位寻址以及广播呼叫的生成和检测' K  I6 ?& k( w& O+ Z1 P: E* y
● 支持不同的通信速度:: z; u" i* {% }+ ^% |9 p8 d
— 标准速度(高达 100 kHz)4 `& N" v: h8 S' J* B- U% c
— 快速速度(高达 400 kHz)1 x2 U; }. Q# u2 y+ A* `5 e
● 适用于 STM32F42xxx 和 STM32F43xxx 的可编程数字噪声滤波器
# C1 T  c/ z: R% P8 o● 状态标志:3 r+ Y* w  ^. \
— 发送/接收模式标志' L( w$ T, G. @" V
— 字节传输结束标志
1 W1 y' i3 x* c: L( i# h— I 2 C 忙碌标志
' F+ {/ R' f% s9 ^4 M● 错误标志:" i% @0 V, V* L
— 主模式下的仲裁丢失情况1 q5 x4 ?# g" I
— 地址/数据传输完成后的应答失败
. s8 `$ @# s1 z/ t— 检测误放的起始位和停止位
( n; t; W" u2 d  f2 k' {7 n$ g# x— 禁止时钟延长后出现的上溢/下溢
& E( ?" S8 F3 Z2 ~( L● 2 个中断向量:. A$ M5 c3 T! u( ~5 T2 g  y7 J
— 一个中断由成功的地址/数据字节传输事件触发$ h! p! e+ Y, |' j: g$ y% G
— 一个中断由错误状态触发. X8 J1 t# b( G& c$ {, ?. N' z
● 可选的时钟延长4 E- K8 T: l: T% J0 K# k( d/ _
: l: L  c9 e, G8 u5 A/ t& A
● 带 DMA 功能的 1 字节缓冲
- D7 e- L# [9 m5 A) x; _● 可配置的 PEC(数据包错误校验)生成或验证:
$ g* v" B2 N) S9 y+ L+ z— 在 Tx 模式下,可将 PEC 值作为最后一个字节进行传送7 H- y+ Z0 k( L1 j
— 针对最后接收字节的 PEC 错误校验
' @5 v4 S1 [) P) @● SMBus 2.0 兼容性:
3 j7 i$ a# P7 g$ e1 z; k0 R8 q— 25 ms 时钟低电平超时延迟
1 W* ^% L& I: G8 z— 10 ms 主器件累计时钟低电平延长时间- ?( a9 c: ^" i# s3 Y
— 25 ms 从器件累计时钟低电平延长时间! C" }# e' w) v1 H
— 具有 ACK 控制的硬件 PEC 生成/验证
  m& E. q0 U- C2 d6 ]' \/ {1 [— 支持地址解析协议 (ARP)
! u+ O; s8 O- F- w. M* [$ g( P● PMBus 兼容性/ l6 h+ ~) p) j, a2 Z" R8 d# Y
" l0 t% N" O2 ^# F
03. I2C功能说明
3 {5 D! @$ H- S  W/ T9 x$ ?, P除了接收和发送数据之外,此接口还可以从串行格式转换为并行格式,反之亦然。中断由软件使能或禁止。该接口通过数据引脚 (SDA) 和时钟引脚 (SCL) 连接到 I 2 C 总线。它可以连接到标准(高达 100 kHz)或快速(高达 400 kHz)I 2 C 总线。8 B6 r$ U+ I9 Q1 l' k3 x

. j5 I) I& M; L2 b- ~5 h% m模式选择, v6 g8 g8 g, S

* k7 e4 G4 T! I/ s该接口在工作时可选用以下四种模式之一:
( V3 V" c. ?- o● 从发送器2 v  l1 L# L1 ^" P/ s/ o4 y
● 从接收器: U4 y" F( b! t% c  M
● 主发送器
' E- w8 A0 X& ]0 Z/ h! N3 P● 主接收器
) Y- |1 G/ {) X0 m7 |9 _默认情况下,它以从模式工作。接口在生成起始位后会自动由从模式切换为主模式,并在出现仲裁丢失或生成停止位时从主模式切换为从模式,从而实现多主模式功能。
1 d/ h0 n  c. H- ~  y- H+ o0 o* d0 G' w) k
IIC框图; Q7 l8 y- _! N$ w3 j1 _2 K8 d
& Z3 i" X4 p: d
BB2C$R6B268II2GK@{GZMNM.png 7 _" Z' X/ {7 X
' V0 p/ h: g& c. I3 T: S
04. I2C中断6 b$ Q8 s) L% Y
4 S. `# ^9 T3 W$ A8 s
}PIQW}LAP8G0LY@(X}7ILBQ.png
! }0 f* o5 @1 z2 ]2 e) v- v) P( V" ~& \2 |/ Q3 [0 g: X4 [* B4 ^
05. I2C相关寄存器

0 N0 ~7 Y+ d$ {8 g# }$ E, U1 [, g5.1 I2C 控制寄存器 1 (I2C_CR1)/ \- k5 ?' k  Z( f
I2C Control register 1
/ h- N7 e* f& W* g; J# W; A# u- F# z偏移地址:0x00
' Z* X, N3 u% I/ P8 \$ Z9 Q复位值:0x0000- A1 a' c, ~* p& x/ s$ v9 y+ K2 S2 R6 [

9 o( J( _* i# e% l$ q: Y9 c 20201012175536663.png   _5 v& h0 [4 d! y& I! R3 |

4 ?# e/ S  R! t( y5.2 I2C 控制寄存器 2 (I2C_CR2)( E% \2 L% B; R  Z8 d+ `
I2C Control register 2
; x% |# {! R6 o# z( [偏移地址:0x044 I( x5 v" w- a" J3 l! O
复位值:0x0000) l4 Z; u  _8 G, a2 j# }) l5 _
8 a6 L+ ?1 F2 }% D
20201012175543433.png
0 J' w- C) O  K, J. q' f2 F8 D4 |! E- V4 _, H
5.3 I2C 自有地址寄存器 1 (I2C_OAR1)
% q- p1 G$ _2 l9 qI2C Own address register 1
" o) _' h' j# _( o偏移地址:0x08' }' m% Y- M1 j; ?$ O
复位值:0x0000
/ L" p& t9 U, D/ W. I' s; o, ]6 n) G1 g. }4 q
20201012175552613.png - u- {2 y$ U6 n9 Q) e  T, P
2 S; d# L' n% B. P. }4 A
5.4 I2C 自有地址寄存器 2 (I2C_OAR2)( e, A! Z, ~  l# z% t3 W
I2C Own address register 2
: w% L- N9 A; J2 X" D0 \- D/ P偏移地址:0x0C# p3 s5 ?5 t& v
复位值:0x00007 ^3 `. h5 I2 C7 F7 s8 @

# r6 c" i) o- Z/ b7 B' w 20201012175559433.png
8 g+ ?+ e4 Z% l+ i; A' P6 W* G
- u0 S& R% j3 V+ L5 n5.5 I2C 数据寄存器 (I2C_DR)
0 ~# \/ c7 x) Q6 M9 |I2C Data register
$ A" i* A7 ]% L. P  w偏移地址:0x10
' |  w* ^; ?+ d; b  t复位值:0x0000
# Q/ }1 {% l4 U- ]( |9 ^- `0 `- }9 I6 E0 m) ]
20201012175606547.png $ q, g0 J. Y" d4 n
/ {; t5 v" H# B# x( \2 k* H% e
5.6 I2C 状态寄存器 1 (I2C_SR1)+ T) {) s$ _  y. B; ?. a* [7 w/ l/ g4 N
I2C Status register 1
7 R# c& J; n0 P1 r偏移地址:0x14
! }6 P/ N: S( O4 h复位值:0x0000
3 {3 s$ _5 ~1 b, l9 o5 A
5 a& T3 B8 K$ F( ] 20201012175613925.png   G7 y' J+ w( J. q$ B- S

# b6 @7 g# x, J5.7 I2C 状态寄存器 2 (I2C_SR2)
: @/ X! p: ]! U1 l5 E( uI2C Status register 24 f; _8 h0 O$ L2 x: t
偏移地址:0x18
9 F2 a% X+ t+ \- T& Y9 ~复位值:0x0000# a% S) S% D$ J( q
: y  b4 [( N( j, [% Q, P$ h$ o  }
2020101217562154.png # S9 w3 D$ f6 S, m1 O$ s
) C, ^* K3 ^6 i: a- Q2 `9 P
5.8 I2C 时钟控制寄存器 (I2C_CCR)
- P: _& g4 B: b; T3 u! eI2C Clock control register
2 s# I$ M7 [3 Z; s4 o' X偏移地址:0x1C* B5 J3 J% n7 H0 A' `
复位值:0x00009 U- @) ~  B% q5 t* q4 S
20201012175628717.png ) T$ e- ?; D& p0 S
: [# ^$ N. W4 L, y" j5 Y# B
2 s1 y  J% t3 Y

7 N4 _5 T% h. W6 B# b
) o; F6 U$ B" v- ]$ `2 `3 p5 G. f+ K/ @: o7 s/ d" K
赞 收藏 评论0 发布时间:2022-6-16 17:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版