当前位置: 首页 > news >正文

I2C控制器及其应用

I2C(Inter--Integrated Circuit))芯片与芯片之间的通讯,

集成电路总线,它由飞利浦(现为NXP)公司在20世纪80年代开发,是一种广泛用于嵌入式系统的
同步、串行、半双工通信协议,用于在同一块电路板上的集成电路之间进行通信。
I2C总线是一种物理通信架构,用于连接多个设备,实现设备之间的数据传输。

SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道。
SDA(serial data): 数据线,通信数据都通过SDA线传输

快速模式下,数据传输速率为400Kb/s。
高速模式下,数据传输速率为3.4Mb/s

I2C总线上可以挂载一个主设备和多个从设备,实现一对一(一个主设备 + 一个从设备)或者一对多(一个主设备 + 多个从设备)的通信;
主设备负责调度总线,决定某个时间和其中一个从设备通信。在同一时间,只有主设备和其中一个从设备通信,其余的从设备处于等待状态,等待主设备与其通信;
每个从设备在I2C总线上都有唯一的地址,主设备就是通过地址来区分不同的从设备,从而决定和哪一个从设备通信。

读模式

主设备发送开始信号;
主设备接着发送8bit数据,其中7bit是从设备的地址,1bit表示此次主设备是要读数据还是写数据;
从设备发送ACK响应信号;
从设备将数据每次发送8bit到SDA线上,主设备接收到发送ACK响应信号;
当主设备接收完数据后,发送一个停止信号;

写模式

主设备发送开始信号;
主设备接着发送8bit数据,其中7bit是从设备的地址,1bit表示此次主设备是要读数据还是写数据;
从设备发送ACK响应信号;
主设备将要写的数据每次发送8bit到SDA线上,从设备接收到发送ACK响应信号;
当主设备发送完数据后,发送一个停止信号;

I2C通信接收流程


通过操作I2CCON寄存器,将设备配置成主发送模式;
将从设备的地址写到I2CDS寄存器中;
往I2CSTAT寄存器写0xF0,让I2C控制器产生一个开始信号;
移位寄存器将I2CDS里的数据发送到SDA总线上;
在收到ACK信号后,中断被挂起,需要中断处理程序来处理;
中断处理程序判断是否是要结束本次通信;
如果不是结束本次通信,则将新的数据写到I2CDS寄存器中,然后清中断挂起标志,将数据发送到SDA总线上,等待ACK信号,进入下一次判断;
如果是要结束本次通信,则往I2CSTAT寄存器中写0xD0,产生一个停止信号,清中断挂起标志,等停止信号发送完毕则结束本次通信

I2C通信发送流程


通过操作I2CCON寄存器,将设备配置成从发送模式;
在SDA总线上检测到开始信号,I2CDS寄存器接收到数据;
将I2CDS寄存器中接收到的数据和I2CADD寄存器中保存的地址进行比较;
判断是否匹配;
如果不匹配,则表示主设备不是和自己通信,不用再进行下面的步骤;
2C地址匹配则中断产生,告诉设备主设备要和自己通信,并发送一个ACK信号;
写数据到I2CDS寄存器,然后清中断;
判断是否要停止本次通信,也就是有没有检测到主设备发送停止信号;
如果不停止通信,则将I2CDS寄存器中的数据发送到SDA总线上,然后产生中断,重复之前的步骤;
如果是停止本次通信,则不再做响应即可;

http://www.jsqmd.com/news/714925/

相关文章:

  • 题解:洛谷 P7077 [CSP-S 2020] 函数调用
  • 3大核心功能解密:OpenCore Legacy Patcher如何让老旧Mac重获新生
  • CSS如何使得响应式的侧边抽屉附带遮罩渐暗效果
  • 2026年一体化预制泵站/污水提升泵站/一体式泵站实力厂家推荐:聚焦技术领先与多场景应用方案 - 泵站报价15613348888
  • 绵阳老房翻新选对公司,千川环宇帮你实现安全焕新 - 资讯焦点
  • VS Code Copilot Next 成本失控真相(2024 Q2真实账单拆解):从$287→$49/月的7类配置陷阱与修复清单
  • 2026年宁波短视频代运营与GEO优化:中小企业同城获客完全指南 - 优质企业观察收录
  • 橱柜小拉手优质厂家盘点:精选五家实力生产商推荐指南 - 品牌策略师
  • 2026年度中国房车定制游服务商综合实力TOP6推荐 - 资讯焦点
  • Omdia:2025年第四季度,中国大陆云基础设施支出增长26%,AI与智能体成主要驱动力
  • 【网络协议-10】低成本物联网产品放弃SSL加密的隐形成本与市场逻辑
  • 从零开始:手把手教你跑通、分析和“解剖”大模型
  • 深度技术解析:Windows系统工具注册表权限管理完整指南
  • 让 Claude Code : Codex: Open Code 成本爆降 92%,没早用上这款开源工具。。。
  • 可替代进口频谱分析仪推荐:安徽白鹭电子实力诠释国产崛起 - 品牌推荐大师
  • 上海强平机器人官方联系方式合作电话官方网站官网 - 资讯焦点
  • 别再死记硬背了!用这5个Mathf函数搞定Unity角色移动与旋转(附完整代码)
  • 用Verilog和DAC芯片手把手教你做个可编程波形发生器(附完整RTL代码与示波器实测)
  • 【VS Code MCP插件生态搭建权威指南】:20年IDE架构师亲授5大核心配置步骤与3个避坑红线
  • 从传感器配置到标签解析:一份给研究者的RADIal数据集深度使用指南
  • 广州市黄埔区鑫邦租赁:广州二手空压机回收推荐哪几家 - LYL仔仔
  • Biosimilar抗体选购:TargetMol保障高特异性 - 资讯焦点
  • LeetCode HOT100 - 无重复字符的最长子串
  • 告别动画蓝图复杂连线!在UE5里用Control Rig模块化重构你的Foot IK系统(含GitHub工程对比)
  • Win11Debloat:Windows系统优化与隐私保护解决方案的技术实现
  • palera1n越狱工具终极指南:解锁A8-A11设备的iOS 15+系统限制
  • Phi-mini-MoE-instruct快速上手:3步启动http://localhost:7860对话界面
  • 2026年宁波短视频代运营与GEO搜索优化:5大服务商深度横评与选购指南 - 优质企业观察收录
  • 节假日生日宴菜单实测:全龄适配的粤赣融合宴请方案 - 资讯焦点
  • C++27范围算法提速47%?实测std::ranges::sort_stable与chunk_by_exhaustive,现代迭代器协议重构真相大起底,