历史上的今天
今天是:2024年12月08日(星期日)
2020年12月08日 | STM32——I2C
2020-12-08 来源:elecfans
一、I2C协议
I 2 C (Inter-Integrated Circuit)协议是由 Philips 公司开发的,由于它具备引脚少、硬件实现简单、可扩展性强、不需要如 USART、CAN 的外部收发设备等特点,现在被广泛地使用在系统内多个集成电路(IC)间的通信。
1、物理层
(1)它只使用两条总线线路 :一条双向串行数据线(SDA) ,一条串行时钟线 (SCL)。
(2)每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。
(3)多主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线。
(4)具有三种传输模式 :标准模式的传 输速率为 100 Kbit/s ,快速模式为 400 Kbit/s,高速模式下可达 3.4 Mbit/s,但目前大多 I 2 C 设备尚不支持高速模式。
(5)片上的滤波器可以滤去总线数据线上的毛刺波以保证数据完整。
(6)连接到相同总线的 IC 数量受到总线的最大电容 400 pF。

2、协议层
I 2 C 的协议包括起始和停止条件、数据有效性、响应、仲裁、时钟同步和地址广播等环节,由于我们使用的是 STM32 集成的硬件 I 2 C 接口,并不需要用软件去模拟 SDA 和SCL 线的时序。

S:传输开始信号
SLAVE_ADDRESS:从机地址
R/W: 传输方向选择位,1 为读,0 为写
A/A——: 应答或非应答信号
P:停止传输信号
二、STM32的I2C架构
1、I2C接口特性
(1)STM32 的中等容量和大容量型号的芯片均有多达两个的 I 2 C 总线接口。
(2)能够工作于多主模式或从模式,分别为主接收器、主发送器、从接收器及从发送器。
(3)支持标准模式 100 Kbit/s 和快 速模式 400 Kbit/s,不支持高速模式。
(4)支持 7 位或 10 位寻址。
(5)内置了硬件 CRC 发生器 / 校验器。
(6)I 2 C 的接收和发送都可以使用 DMA 操作。
(7)支持系统管理总线(SMBus)2.0 版。
2、I2C结构

I 2 C 的所有硬件架构就是根据 SCL 线和 SDA 线展开的(其中 SMBALERT 线用于 SMBus)。
SCL 线的时序即为 I 2 C 协议中的时钟信号,它由 I 2 C 接口根据时钟控制寄存器(CCR)控制,控制的参数主要为时钟频率。
SDA 线的信号则通过一系列数据控制架构,在将要发送的数据的基础上,根据协议添加各种起始信号、应答信号、地址信号,实现以 I 2 C 协议的方式发送出去。读取数据时则从 SDA 线上的信号中取出接收到的数据值。发送和接收的数据都被保存在数据寄存器(DR)上。
上一篇:STM32——ADC
下一篇:STM32——SPI接口
史海拾趣
|
电阻种类及特点简介 电阻,英文名resistance,通常缩写为R,它是导体的一种基本性质,与导体的尺寸、材料、温度有关。欧姆定律说,I=U/R,那么R=U/I,电阻的基本单位是欧姆,用希腊字母“Ω”表示,有这样的定义:导体上加上一伏特电压时,产生一 ...… 查看全部问答> |
|
我刚刚开始接触FPGA,资料也才看了一点,Verilog HDL也只是大致了解. 我在想要不要买块开发板,一边看资料一边在开发板上试试 以前学C的时候上课也觉得很枯燥,但是会经常自己编些小算术题之类的~呵呵 望有经验的兄弟姐妹给些建议 不慎感谢… 查看全部问答> |
|
想实现 运行状态 掉电保持,以便重新上电时恢复, 需要保持的数据大约 20字节, 该状态每秒更新一次。 请问有什么比较好的方法?掉电检测如何实现? //目前使用的方法是:Dallas SDRAM, 当作RAM一部分。 掉电检测没有,上电时检查状 ...… 查看全部问答> |
|
做应用的需要一片固定的内存,我在Config.bib中划好,在驱动里增加了MmIOMapSpace和MmIOUnMapSpace以及对应的IOCTL,在驱动内部测试,这片内存可以正常访问,map以及unmap。 我用IOCTL为应用返回这片内存的物理及虚拟地址,为什么在应用中使用该虚 ...… 查看全部问答> |
|
[求助]DPF播放一個半小時的幻燈圖片後就不再播放了。爲什麽? 在板子上做测试,从服务器上读图片,在板子上以幻灯片的形式播放,几乎每次一个半小时后就停止播放。系统是winCE的,网上查了好久,知道是订阅时间的问题,但不知道该改哪部分的代码,请达人们指教,小弟刚接触嵌入式开发。… 查看全部问答> |
|
AT89S51单片机控制GSM模块(M22)发送短信程序!~!~!~! AT89S51单片机控制GSM模块(M22)发送短信程序!~!~!~! 自己改的AT89S51单片机控制GSM模块(M22)发送短信程序,在Keil上编译没错,但还未试过烧入片内运行。。 大家看看,这个程序可行否? 还有什么错误的地方? 希望搞过GSM的朋友多提点 ...… 查看全部问答> |
|
@8000 30 40 04 80 FF 3F 31 40 00 06 3C 40 0C 02 3E 40 F8 00 B0 12 EE A7 3C 40 00 02 3E 40 0C A8 30 12 0B 00 B0 12 00 A8 21 53 B0 12 44 A0 B0 12 12 A4 0A 12 0B 12 08 12 09 12 06 12 07 12 04 12 05 12 D2 93 E5 02 C5 20 C2 43 E5 ...… 查看全部问答> |




