STMCU小助手
发布时间:2022-6-16 17:00
|
01. I2C简介 I2C(内部集成电路)总线接口用作微控制器和 I2C 串行总线之间的接口。它提供多主模式功能,可以控制所有I2C总线特定的序列、协议、仲裁和时序。它支持标准和快速模式。它还与 SMBus 2.0 兼容。( B2 n4 j$ V8 Q" O ]5 h 它可以用于多种用途,包括 CRC 生成和验证、SMBus(系统管理总线)以及 PMBus(电源管理总线)。% R& n0 a7 I7 N5 D! u, M* z 根据器件的不同,可利用 DMA 功能来减轻 CPU 的工作量。2 K, }2 b. ]; v% B% Y h. W 02. I2C主要特性3 c$ K( k0 t, \ x. o5 r" G, H 并行总线/I 2 C 协议转换器5 p, ?( M9 @& a4 U# h) e ● 多主模式功能:同一接口既可用作主模式也可用作从模式 ● I 2 C 主模式特性: — 时钟生成 — 起始位和停止位生成' c( p; C7 @, K# d ● I 2 C 从模式特性: — 可编程 I 2 C 地址检测 — 双寻址模式,可对 2 个从地址应答 — 停止位检测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 的可编程数字噪声滤波器 ● 状态标志:3 r+ Y* w ^. \ — 发送/接收模式标志' L( w$ T, G. @" V — 字节传输结束标志 — I 2 C 忙碌标志 ● 错误标志:" i% @0 V, V* L — 主模式下的仲裁丢失情况1 q5 x4 ?# g" I — 地址/数据传输完成后的应答失败 — 检测误放的起始位和停止位 — 禁止时钟延长后出现的上溢/下溢 ● 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 字节缓冲 ● 可配置的 PEC(数据包错误校验)生成或验证: — 在 Tx 模式下,可将 PEC 值作为最后一个字节进行传送7 H- y+ Z0 k( L1 j — 针对最后接收字节的 PEC 错误校验 ● SMBus 2.0 兼容性: — 25 ms 时钟低电平超时延迟 — 10 ms 主器件累计时钟低电平延长时间- ?( a9 c: ^" i# s3 Y — 25 ms 从器件累计时钟低电平延长时间! C" }# e' w) v1 H — 具有 ACK 控制的硬件 PEC 生成/验证 — 支持地址解析协议 (ARP) ● PMBus 兼容性/ l6 h+ ~) p) j, a2 Z" R8 d# Y " l0 t% N" O2 ^# F 03. I2C功能说明 除了接收和发送数据之外,此接口还可以从串行格式转换为并行格式,反之亦然。中断由软件使能或禁止。该接口通过数据引脚 (SDA) 和时钟引脚 (SCL) 连接到 I 2 C 总线。它可以连接到标准(高达 100 kHz)或快速(高达 400 kHz)I 2 C 总线。8 B6 r$ U+ I9 Q1 l' k3 x 模式选择, v6 g8 g8 g, S 该接口在工作时可选用以下四种模式之一: ● 从发送器2 v l1 L# L1 ^" P/ s/ o4 y ● 从接收器: U4 y" F( b! t% c M ● 主发送器 ● 主接收器 默认情况下,它以从模式工作。接口在生成起始位后会自动由从模式切换为主模式,并在出现仲裁丢失或生成停止位时从主模式切换为从模式,从而实现多主模式功能。 - H+ o0 o* d0 G' w) k IIC框图; Q7 l8 y- _! N$ w3 j1 _2 K8 d & Z3 i" X4 p: d
' V0 p/ h: g& c. I3 T: S 04. I2C中断6 b$ Q8 s) L% Y 4 S. `# ^9 T3 W$ A8 s
" ~& \2 |/ Q3 [0 g: X4 [* B4 ^ 05. I2C相关寄存器 5.1 I2C 控制寄存器 1 (I2C_CR1)/ \- k5 ?' k Z( f I2C Control register 1 偏移地址:0x00 复位值:0x0000- A1 a' c, ~* p& x/ s$ v9 y+ K2 S2 R6 [
5.2 I2C 控制寄存器 2 (I2C_CR2)( E% \2 L% B; R Z8 d+ ` I2C Control register 2 偏移地址:0x044 I( x5 v" w- a" J3 l! O 复位值:0x0000) l4 Z; u _8 G, a2 j# }) l5 _ 8 a6 L+ ?1 F2 }% D
8 D4 |! E- V4 _, H 5.3 I2C 自有地址寄存器 1 (I2C_OAR1) I2C Own address register 1 偏移地址:0x08' }' m% Y- M1 j; ?$ O 复位值:0x0000 6 n) G1 g. }4 q
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 偏移地址:0x0C# p3 s5 ?5 t& v 复位值:0x00007 ^3 `. h5 I2 C7 F7 s8 @
5.5 I2C 数据寄存器 (I2C_DR) I2C Data register 偏移地址:0x10 复位值:0x0000 - `0 `- }9 I6 E0 m) ]
/ {; 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 偏移地址:0x14 复位值:0x0000
5.7 I2C 状态寄存器 2 (I2C_SR2) I2C Status register 24 f; _8 h0 O$ L2 x: t 偏移地址:0x18 复位值:0x0000# a% S) S% D$ J( q : y b4 [( N( j, [% Q, P$ h$ o }
) C, ^* K3 ^6 i: a- Q2 `9 P 5.8 I2C 时钟控制寄存器 (I2C_CCR) I2C Clock control register 偏移地址:0x1C* B5 J3 J% n7 H0 A' ` 复位值:0x00009 U- @) ~ B% q5 t* q4 S
: [# ^$ N. W4 L, y" j5 Y# B 2 s1 y J% t3 Y 5 G. f+ K/ @: o7 s/ d" K |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版