历史上的今天
返回首页

历史上的今天

今天是: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接口

推荐阅读

史海拾趣

Gigavac LLC公司的发展小趣事

对于数-模转换(D/A转换)用高稳定度稳压电源电路,网友可能提出多个方面的问题。以下是一些可能的问题及其详细回答:

问题一:为什么数-模转换需要高稳定度的稳压电源?

回答
数-模转换器(D/A转换器)将数字信号转换为模拟信号,其输出精度和稳定性直接受到供电电源的影响。高稳定度的稳压电源能够确保D/A转换器在转换过程中电压波动小,从而减小转换误差,提高转换精度。此外,稳定的电源还能保护D/A转换器免受电压波动可能引起的损坏,延长其使用寿命。

问题二:如何设计高稳定度的稳压电源电路?

回答
设计高稳定度的稳压电源电路通常需要考虑以下几个方面:

  1. 选择合适的稳压元件
    • 稳压二极管(齐纳二极管):具有稳定的反向击穿电压,可作为简单的稳压元件。
    • 线性稳压器(LDO):提供低噪声、高精度的输出电压,适用于对电源噪声敏感的场合。
    • 开关稳压器:效率高,但可能引入一定的纹波噪声,需要适当的滤波电路设计。
  2. 优化电源滤波
    • 在稳压电源的输出端加入滤波电容,以减小输出电压的纹波和噪声。
    • 对于开关稳压器,可能需要额外的LC滤波电路来进一步降低纹波。
  3. 考虑温度稳定性
    • 温度变化会影响元件的性能,因此在设计时应考虑元件的温度系数,并采取适当的温度补偿措施。
  4. 采用反馈控制
    • 通过引入电压反馈控制环路,可以实时监测输出电压并调整稳压元件的工作状态,以保持输出电压的稳定。
  5. 选用高质量的元件
    • 使用低漂移、高精度的电阻、电容等元件,以提高电源电路的整体稳定性。

问题三:如何评估稳压电源的稳定度?

回答
评估稳压电源的稳定度通常需要考虑以下几个方面:

  1. 输出电压的纹波和噪声
    • 使用示波器测量输出电压的纹波和噪声水平,确保其在可接受的范围内。
  2. 负载调整率
    • 在不同负载条件下测量输出电压的变化量,评估电源对负载变化的响应能力。
  3. 线性调整率
    • 在输入电压变化时测量输出电压的变化量,评估电源对输入电压变化的抵抗能力。
  4. 温度稳定性
    • 在不同温度条件下测量输出电压的变化量,评估电源的温度稳定性。
  5. 长期稳定性
    • 在长时间运行后测量输出电压的变化量,评估电源的长期使用稳定性。

问题四:有哪些常见的稳压电源故障及其解决方案?

回答
常见的稳压电源故障及其解决方案包括:

  1. 输出电压不稳定
    • 检查稳压元件是否损坏或老化。
    • 检查滤波电容是否失效或容量不足。
    • 检查反馈控制环路是否正常工作。
  2. 无输出电压
    • 检查输入电源是否正常。
    • 检查保险丝是否熔断。
    • 检查稳压元件是否短路或开路。
  3. 输出电压过高或过低
    • 调整稳压元件的工作参数。
    • 检查负载是否过大或过小。
    • 检查输入电压是否在正常范围内。
  4. 温度过高
    • 检查散热系统是否正常工作。
    • 考虑增加散热装置或降低负载。

通过以上问题和答案的梳理,可以帮助网友更全面地了解数-模转换用高稳定度稳压电源电路的设计、评估和维护等方面的知识。

芯朋微电子(chipown)公司的发展小趣事

随着技术的不断进步和市场需求的增长,芯朋微电子逐步将产品线拓展至标准电源和工业驱动领域。2013年,公司推出工控功率芯片产品,这些芯片广泛应用于电机、基站、智能电表等行业领域,进一步扩大了公司的市场份额。

Electronicon Kondensatoren GmbH公司的发展小趣事

1992年,ELECTRONICON成立了卷绕电容器部门,并专注于该领域的研发与生产。该部门拥有238名员工,致力于为客户提供高品质的照明、电机和电力电容器产品。随着部门的不断发展壮大,ELECTRONICON在电容器领域的市场份额也得到了进一步提升。

佰宏(BHFUSE)公司的发展小趣事

随着国内市场的稳定发展,佰宏公司开始积极拓展海外市场。他们的产品被多个海外电商平台上架,受到了国际客户的青睐。这一举措不仅提升了公司的国际化水平,也为公司的长期发展注入了新的动力。

Herth+Buss Fahrzeugteile GmbH & Co KG公司的发展小趣事
合理布局传感器,避免遮挡和干扰,提高检测准确性。
EREM公司的发展小趣事

作为一家具有社会责任感的企业,EREM始终关注环境保护和可持续发展。在生产过程中,EREM严格遵守环保法规和标准,采用环保材料和工艺,减少对环境的影响。此外,EREM还积极参与公益活动和社会责任项目,为社会做出积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

请注意,以上故事均为虚构,旨在展示EREM公司在电子行业中的发展历程和可能面临的挑战与机遇。如需了解更多关于EREM公司的信息,请查阅相关官方资料或咨询行业专家。

问答坊 | AI 解惑

硬件工程师必杀技

1 、充分了解各方的设计需求,确定合适的解决方案 启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设计 ...…

查看全部问答>

用RFM12收发模块的请进

本人最近正在调试RFM12收发模块,一直没调试成功,数据不能发射出去,请各位大侠指教…

查看全部问答>

单片机系统常用电子元器件知识简析

电阻种类及特点简介 电阻,英文名resistance,通常缩写为R,它是导体的一种基本性质,与导体的尺寸、材料、温度有关。欧姆定律说,I=U/R,那么R=U/I,电阻的基本单位是欧姆,用希腊字母“Ω”表示,有这样的定义:导体上加上一伏特电压时,产生一 ...…

查看全部问答>

请教~初学者什么时候买开发板?

我刚刚开始接触FPGA,资料也才看了一点,Verilog HDL也只是大致了解. 我在想要不要买块开发板,一边看资料一边在开发板上试试 以前学C的时候上课也觉得很枯燥,但是会经常自己编些小算术题之类的~呵呵 望有经验的兄弟姐妹给些建议 不慎感谢…

查看全部问答>

掉电保持数据 20字节左右

想实现 运行状态 掉电保持,以便重新上电时恢复, 需要保持的数据大约  20字节, 该状态每秒更新一次。 请问有什么比较好的方法?掉电检测如何实现? //目前使用的方法是:Dallas SDRAM, 当作RAM一部分。 掉电检测没有,上电时检查状 ...…

查看全部问答>

WinCE6.0中应用中使用物理地址

做应用的需要一片固定的内存,我在Config.bib中划好,在驱动里增加了MmIOMapSpace和MmIOUnMapSpace以及对应的IOCTL,在驱动内部测试,这片内存可以正常访问,map以及unmap。 我用IOCTL为应用返回这片内存的物理及虚拟地址,为什么在应用中使用该虚 ...…

查看全部问答>

[求助]DPF播放一個半小時的幻燈圖片後就不再播放了。爲什麽?

在板子上做测试,从服务器上读图片,在板子上以幻灯片的形式播放,几乎每次一个半小时后就停止播放。系统是winCE的,网上查了好久,知道是订阅时间的问题,但不知道该改哪部分的代码,请达人们指教,小弟刚接触嵌入式开发。…

查看全部问答>

AT89S51单片机控制GSM模块(M22)发送短信程序!~!~!~!

AT89S51单片机控制GSM模块(M22)发送短信程序!~!~!~! 自己改的AT89S51单片机控制GSM模块(M22)发送短信程序,在Keil上编译没错,但还未试过烧入片内运行。。 大家看看,这个程序可行否? 还有什么错误的地方? 希望搞过GSM的朋友多提点 ...…

查看全部问答>

为什么我在debug的时候会出现F437.txt格式错误呀

@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 ...…

查看全部问答>

STM32 微库使用方法

stm32 裸板 怎么样使用微库 malloc strlen..这些函数 怎样掉微库的函数哦  微库的函数怎么看…

查看全部问答>