STMCU小助手
发布时间:2022-3-28 22:00
|
01. I2C简介 I2C(内部集成电路)总线接口用作微控制器和 I2C 串行总线之间的接口。它提供多主模式功能,可以控制所有I2C总线特定的序列、协议、仲裁和时序。它支持标准和快速模式。它还与 SMBus 2.0 兼容。 . m M& z* R$ e, {& b- ]7 v! K 它可以用于多种用途,包括 CRC 生成和验证、SMBus(系统管理总线)以及 PMBus(电源管理总线)。 根据器件的不同,可利用 DMA 功能来减轻 CPU 的工作量。% e/ _: @. d% n6 `/ \/ f 02. I2C主要特性 并行总线/I 2 C 协议转换器 ● 多主模式功能:同一接口既可用作主模式也可用作从模式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 — 起始位和停止位生成 ● I 2 C 从模式特性:* V# l: F2 |0 o J% h7 [ — 可编程 I 2 C 地址检测 — 双寻址模式,可对 2 个从地址应答 — 停止位检测) [% W' N- d/ m7 z( H ● 7 位/10 位寻址以及广播呼叫的生成和检测 ● 支持不同的通信速度: — 标准速度(高达 100 kHz) — 快速速度(高达 400 kHz)* m- k9 N# e6 U* R ● 适用于 STM32F42xxx 和 STM32F43xxx 的可编程数字噪声滤波器+ V" o- Y* T7 M. K, ^- [ ● 状态标志:& s4 H1 N, B- E — 发送/接收模式标志 — 字节传输结束标志 — I 2 C 忙碌标志 ● 错误标志: — 主模式下的仲裁丢失情况 — 地址/数据传输完成后的应答失败" H+ o) D% F" t9 {- H7 E — 检测误放的起始位和停止位 — 禁止时钟延长后出现的上溢/下溢; a+ X V- K* \3 P! G0 z ● 2 个中断向量: — 一个中断由成功的地址/数据字节传输事件触发, T, i& p% a) K. e8 B% g6 U- E — 一个中断由错误状态触发 ● 可选的时钟延长. k6 p9 \% {2 q. p* A ● 带 DMA 功能的 1 字节缓冲 ● 可配置的 PEC(数据包错误校验)生成或验证:' o7 t u4 t1 [! I5 i — 在 Tx 模式下,可将 PEC 值作为最后一个字节进行传送 — 针对最后接收字节的 PEC 错误校验0 C& [# H+ i0 P f! I9 G+ Q3 |6 K+ A( B ● SMBus 2.0 兼容性: — 25 ms 时钟低电平超时延迟# _$ k( {" l+ i; ~ — 10 ms 主器件累计时钟低电平延长时间$ w2 f; m* A a* h7 n* x. m! d — 25 ms 从器件累计时钟低电平延长时间 — 具有 ACK 控制的硬件 PEC 生成/验证 — 支持地址解析协议 (ARP) ● PMBus 兼容性 2 ]! 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 总线。 模式选择 该接口在工作时可选用以下四种模式之一: ● 从发送器/ Y9 x5 w7 \2 p! s, c- } ● 从接收器 ● 主发送器! x8 `% s( |# ^& P3 A" z- n$ ` ● 主接收器- C2 J& d C6 W; e 默认情况下,它以从模式工作。接口在生成起始位后会自动由从模式切换为主模式,并在出现仲裁丢失或生成停止位时从主模式切换为从模式,从而实现多主模式功能。 ' ]& 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
! U* d/ ?# ~( t 04. I2C中断6 w3 C& |% J; ~9 f
; 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) I2C Control register 1 偏移地址:0x00 复位值:0x00008 d1 j) W" M* f( q 7 \3 ?$ G& L/ ^ ?) [9 S
5.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
5.3 I2C 自有地址寄存器 1 (I2C_OAR1) I2C Own address register 1 偏移地址: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
( 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
5.5 I2C 数据寄存器 (I2C_DR) I2C Data register 偏移地址:0x109 Y; ^$ T7 @2 k, q 复位值:0x0000
5.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
6 _5 ]* g- @& |- y" g! D0 y 5.7 I2C 状态寄存器 2 (I2C_SR2)% l; k7 r& }1 Y' s* K I2C Status register 2 偏移地址:0x18: R. j* {0 M- I" P6 W 复位值:0x0000$ }) Y0 m( q# z9 r
5.8 I2C 时钟控制寄存器 (I2C_CCR) I2C Clock control register 偏移地址:0x1C) E- u/ \3 z5 i: V6 G 复位值:0x0000
! A. H+ ^( h s/ _ % [ O9 `, K5 n- B5 j+ U! n " t# R u& ]! g |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版