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

【经验分享】STM32 I2C详解

[复制链接]
STMCU小助手 发布时间:2022-3-28 22:00
01. I2C简介
) D& i) o6 p) Y7 k1 {* U) Z; S0 QI2C(内部集成电路)总线接口用作微控制器和 I2C 串行总线之间的接口。它提供多主模式功能,可以控制所有I2C总线特定的序列、协议、仲裁和时序。它支持标准和快速模式。它还与 SMBus 2.0 兼容。
4 Q& Q7 b! B  |" H5 I) J" S3 m. m  M& z* R$ e, {& b- ]7 v! K
它可以用于多种用途,包括 CRC 生成和验证、SMBus(系统管理总线)以及 PMBus(电源管理总线)。
; j, g9 V; N6 ^7 u5 \
8 r7 P7 _/ ^( O2 Q) z4 }" [/ z根据器件的不同,可利用 DMA 功能来减轻 CPU 的工作量。% e/ _: @. d% n6 `/ \/ f

0 ^" l! L0 t3 ?1 s# l2 q02. I2C主要特性
/ r8 z/ I4 s' }! F/ m9 T并行总线/I 2 C 协议转换器
0 j0 u- J! d* w! z● 多主模式功能:同一接口既可用作主模式也可用作从模式6 y" v+ e1 \8 V, \( A: l; o  ]- @
● I 2 C 主模式特性:0 t  d3 B3 C% l' E/ ^
— 时钟生成1 s& U4 p) F+ u$ y3 ^4 k
— 起始位和停止位生成
1 b$ v6 V; g( `2 I● I 2 C 从模式特性:* V# l: F2 |0 o  J% h7 [
— 可编程 I 2 C 地址检测
2 c) X0 S5 j2 G4 L4 T" S) D1 Q! O4 `— 双寻址模式,可对 2 个从地址应答
0 q5 k" h5 ]0 }" G5 m' S— 停止位检测) [% W' N- d/ m7 z( H
● 7 位/10 位寻址以及广播呼叫的生成和检测
4 a; N7 P7 Q- n6 ?4 p6 L● 支持不同的通信速度:
. N! W& h/ a2 m  ~; y6 L- U6 M— 标准速度(高达 100 kHz)
2 ]; s' ]5 e, G1 _' h0 W1 M7 Z— 快速速度(高达 400 kHz)* m- k9 N# e6 U* R
● 适用于 STM32F42xxx 和 STM32F43xxx 的可编程数字噪声滤波器+ V" o- Y* T7 M. K, ^- [
● 状态标志:& s4 H1 N, B- E
— 发送/接收模式标志
' j+ w, \& w0 S6 d— 字节传输结束标志
: U5 ]  L. y  }— I 2 C 忙碌标志
2 m" _+ M, f0 i- t  \. Q- f. J$ H● 错误标志:
6 H# M' Q9 |( O" N; ?' T— 主模式下的仲裁丢失情况
% O; x% e, ~% M4 ]- e* t— 地址/数据传输完成后的应答失败" H+ o) D% F" t9 {- H7 E
— 检测误放的起始位和停止位
3 D, b5 }! i( P5 n' k+ q— 禁止时钟延长后出现的上溢/下溢; a+ X  V- K* \3 P! G0 z
● 2 个中断向量:
! Y# e. ~; k$ ^6 r2 n  D" k! q— 一个中断由成功的地址/数据字节传输事件触发, T, i& p% a) K. e8 B% g6 U- E
— 一个中断由错误状态触发
  W+ m7 n% Z. R/ `1 f3 t● 可选的时钟延长. k6 p9 \% {2 q. p* A

! B, r; G/ w+ M2 h● 带 DMA 功能的 1 字节缓冲
8 Q% i) i, L2 _* e# E  t3 r● 可配置的 PEC(数据包错误校验)生成或验证:' o7 t  u4 t1 [! I5 i
— 在 Tx 模式下,可将 PEC 值作为最后一个字节进行传送
- K/ _, p8 u& k) {— 针对最后接收字节的 PEC 错误校验0 C& [# H+ i0 P  f! I9 G+ Q3 |6 K+ A( B
● SMBus 2.0 兼容性:
5 p) ^( `9 z" T5 j) E( _' N0 ]; t6 F— 25 ms 时钟低电平超时延迟# _$ k( {" l+ i; ~
— 10 ms 主器件累计时钟低电平延长时间$ w2 f; m* A  a* h7 n* x. m! d
— 25 ms 从器件累计时钟低电平延长时间
9 K) N% V1 r1 ~/ B0 b6 [— 具有 ACK 控制的硬件 PEC 生成/验证
+ s& V3 t; y1 r, m5 n2 G: a' P8 U— 支持地址解析协议 (ARP)
- l5 I0 C0 n4 J: M● PMBus 兼容性
2 _1 R5 _4 @- A" _8 c4 n9 S2 ]! q* s) T: l' l2 B
03. I2C功能说明8 o* `- ^) r! i$ B
除了接收和发送数据之外,此接口还可以从串行格式转换为并行格式,反之亦然。中断由软件使能或禁止。该接口通过数据引脚 (SDA) 和时钟引脚 (SCL) 连接到 I 2 C 总线。它可以连接到标准(高达 100 kHz)或快速(高达 400 kHz)I 2 C 总线。
' i5 C/ C5 n# q3 Q) V, ~( J# |* M
$ X9 W) _8 O  l0 F( ^$ a/ ?  J5 B模式选择
0 f4 o' s' G5 h" v. D  l该接口在工作时可选用以下四种模式之一:
, h  y9 F' y0 G* r9 z  W7 R● 从发送器/ Y9 x5 w7 \2 p! s, c- }
● 从接收器
. K5 I7 z8 G  ]9 D3 Z● 主发送器! x8 `% s( |# ^& P3 A" z- n$ `
● 主接收器- C2 J& d  C6 W; e
默认情况下,它以从模式工作。接口在生成起始位后会自动由从模式切换为主模式,并在出现仲裁丢失或生成停止位时从主模式切换为从模式,从而实现多主模式功能。
+ m: f1 L0 @& _9 U% |' ]& w" D! O, X' M* w1 n
IIC框图8 m/ s0 d6 D$ e8 g
( o1 A) E* k  u, u; y; O6 ^* c. v
20201012175518670.png ' d: N3 c; f8 s% G9 O/ Z
! U* d/ ?# ~( t
04. I2C中断6 w3 C& |% J; ~9 f

" `) L; E& i. e$ P 20201012175527217.png
5 Z+ M( Y# x+ a4 e8 R; X' {8 P" s" W1 z% {! B- B8 r: }
05. I2C相关寄存器' P6 l, ]8 k% w% k/ M  t( d
5.1 I2C 控制寄存器 1 (I2C_CR1)
) s/ z% A3 {% d! [I2C Control register 1
' Y8 m  O: H9 v8 L! x( i. v- a偏移地址:0x00
) T) X( M: |& ~+ k复位值:0x00008 d1 j) W" M* f( q
7 \3 ?$ G& L/ ^  ?) [9 S
20201012175536663.png
8 ]. `% `" Y; A$ {  j* v
! V7 T9 ?' ?- u. ?- h5 C5.2 I2C 控制寄存器 2 (I2C_CR2)" \& ^2 }. s+ Q( u/ i! t; h: R
I2C Control register 2, X0 V0 [4 z$ @8 _
偏移地址:0x043 y( V: `* s  p- ^) M
复位值:0x0000, Y' i" G$ ?. o

3 L$ A% Q/ \3 W9 S2 g) b 20201012175543433.png
! f  b$ N, q9 b. B7 i- G% A! N
- @' w( p3 b, L, ~. Z( e5.3 I2C 自有地址寄存器 1 (I2C_OAR1)
# z  K+ ?/ x2 N" R4 yI2C Own address register 1
7 r& }; u$ q" Z) Z0 D偏移地址:0x08$ ?7 w3 P! d$ w9 w# V. E* h
复位值:0x00004 Q. C1 ?, \& V. E+ u
1 y# L* g) Q7 o) P1 [1 A
20201012175552613.png
' v  b( x3 k$ y; `7 m, ~( l0 I( o1 L2 V* h! c2 j  l0 W1 [' v
5.4 I2C 自有地址寄存器 2 (I2C_OAR2)2 @) k6 |) Y0 Q+ N
I2C Own address register 25 v! d- a# A) i" I+ l
偏移地址:0x0C) f+ Q2 k- @9 E: T
复位值:0x0000
, i' o. v7 N3 ?
6 P* L$ V- f  ~6 q 20201012175559433.png * W0 {; q' Y( {8 b  s4 ^4 _+ A

* c) Y. b! ]' d5.5 I2C 数据寄存器 (I2C_DR)
/ U9 d( t: e/ @, j1 pI2C Data register
  C+ G6 I; k8 c/ b2 ~( _5 A% T( n偏移地址:0x109 Y; ^$ T7 @2 k, q
复位值:0x0000
: \) l% F. j4 u0 Z. W
; u+ |1 [1 e6 z# P1 E 20201012175606547.png
/ X4 x0 ?  @( U/ M% `! ?; V+ L
! i9 x, Y1 z$ ]# r) D- F+ }) _: Y. y5.6 I2C 状态寄存器 1 (I2C_SR1)2 v5 i* w. R5 e. B" r* c  B8 U! Y
I2C Status register 19 n' k  v+ [/ z& p" w
偏移地址:0x14. [0 q$ J: ?" h" O8 T5 q
复位值:0x0000
9 H% \: ?& C; H8 _9 @0 s$ Q
) {* x6 ]- C- K 20201012175613925.png * F" O. D' q. U! S! ~
6 _5 ]* g- @& |- y" g! D0 y
5.7 I2C 状态寄存器 2 (I2C_SR2)% l; k7 r& }1 Y' s* K
I2C Status register 2
3 z3 z% G; |  v9 \偏移地址:0x18: R. j* {0 M- I" P6 W
复位值:0x0000$ }) Y0 m( q# z9 r

8 t3 v! z" I5 m1 B 2020101217562154.png
$ ~2 {; @% X% l1 u  l9 @
8 ]- l# e! x" Y5 z9 [: W5.8 I2C 时钟控制寄存器 (I2C_CCR)
- r# Z- H$ I, II2C Clock control register
7 y8 I& X3 n/ ^# Z- {偏移地址:0x1C) E- u/ \3 z5 i: V6 G
复位值:0x0000
! s- ~& t! T7 `# X 20201012175628717.png $ k: I8 {! R3 _1 B6 M
! A. H+ ^( h  s/ _

# Z4 n1 C( t0 t6 z/ n9 x/ M+ Q* u% [  O9 `, K5 n- B5 j+ U! n

! o# @9 l7 L& n7 X" t# R  u& ]! g
赞 收藏 评论0 发布时间:2022-3-28 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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