嵌入式学习——ARM(8) IIC

发布时间:2026/9/28 20:57:56
嵌入式学习——ARM(8) IIC 一、I2C底层硬件基础GPIO工作模式与线与特性1. 线与线逻辑I2C总线的核心硬件基础多个设备引脚并联任意一方拉低输出总线电平就为低只有全部设备都输出高总线才是高。chipA输出chipB输出总线pad电平1000101110002. GPIO两种输出模式推挽模式内部两个MOS管mos1上拉输出高电平、mos2下拉输出低电平可输出强高/强低。禁止两个MOS同时导通。开漏模式I2C使用仅下拉mos2可以工作上拉mos1永远关闭输出只有低电平或者高阻态。I2C的SDA/SCL必须配置为开漏输出外部接上拉电阻4.7~10kΩ才能实现线与逻辑多设备挂载同一总线。二、I2C通信时序规则总线空闲时SDA、SCL默认保持高电平。START起始信号SCL为高电平时SDA产生下降沿高→低标志一次通信开始。数据传输数据高位先行MSB优先1字节8bit。SCL为低电平主机改变SDA电平SCL为高电平从机读取采样SDA此时SDA必须保持稳定不能变化。应答位第9bitACK应答从机拉低SDA电平0表示成功收到数据NACK无应答SDA保持高电平1表示未收到/通信结束。STOP停止信号SCL保持高电平SDA产生上升沿低→高结束本次通信总线回到空闲状态。I2C地址字节定义1字节8bitbit7~bit1为从机地址最低bit0为读写方向位bit0 0主机写从机接收写操作bit0 1主机读从机发送读操作三、I2C主机写操作流程功能主机向从机的指定寄存器写入多字节数据初始化清除仲裁丢失、I2C中断标志配置为主机发送模式发送START信号发送从机地址写位(bit00)等待从机ACK应答收到NACK则终止本次传输发送目标寄存器地址等待从机ACKNACK则终止循环发送待写入数据每发送1字节等待从机ACK全部数据发送完成后发送STOP停止信号等待总线恢复空闲。四、I2C主机读操作流程I2C读操作特点先写寄存器地址告诉从机要读哪个寄存器再重复起始Restart切换方向执行读数据初始化配置主机发送模式产生START发送从机地址写位(0)等待ACK发送要读取的寄存器地址等待ACKRestart重复起始不发送Stop直接再次产生START信号发送从机地址读位(1)等待ACK切换I2C硬件到接收模式循环读取len个字节读到倒数第2个字节前主机回复ACK继续读下一字节读到最后1个字节主机回复NACK通知从机不再继续传输读完所有数据发送STOP信号释放总线。五、核心要点I2C依靠开漏GPIO外部上拉电阻实现线与支持多从机挂载在同一SDA/SCL总线时序核心SCL高时采样SDASCL低时切换SDASTART/STOP都必须在SCL高电平下产生读操作和写操作流程不对称读需要先写寄存器地址使用Restart重复起始写操作直接连续发送寄存器地址数据ACK/NACK是握手信号从机在写阶段回复ACK读阶段主机控制回复ACK/NACK最后一个字节必须发NACK结束。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询