IIC从机如何判断主机是单字节写入还是也写入

在主机使用IIC协议与AT24C02进行写入通信时,分单字节写入和页写入


  1. ‌单字节写入时序‌

    主机发送‌起始信号‌ → 写入从机地址(读写位为0) → 发送存储地址 → 写入单字节数据 → 发送‌停止信号‌‌
  2. ‌页写入时序‌

    主机发送‌起始信号‌ → 写入从机地址(读写位为0) → 发送存储地址 → ‌连续写入多字节‌ → 发送‌停止信号‌‌

因此,从机判断主机到底是单字节写还是页写,判断依据是若接收到第一个数据字节后,主机未发送停止信号且继续传输数据,则视为页写入模式,并自动递增内部存储地址‌  


### I2C从设备工作原理 I2C(Inter-Integrated Circuit)协议定义了一种两线接口标准,用于连接低速外围设备到微控制器单元(MCU)、嵌入式系统或其他电子设备。作为同步串行通信协议的一部分,I2C允许多个从设备共享同一总线,并由单个主机控制这些从设备的操作[^1]。 #### 总线结构与初始化 在一个典型的I2C配置中,存在两个主要信号线:SCL(Serial Clock Line,串行时钟线)和SDA(Serial Data Line,串行数据线)。每条I2C总线上可以挂载多个支持该协议的器件;为了确保稳定的数据传输,通常会在这两根线上加上拉电阻来维持高电平状态[^2]。 当启动一次新的读写操作时,主机首先发出起始条件——即先拉低 SDA 而保持 SCL 高电平时序变化,随后发送目标地址字节给所有监听着这条公共信道上的节点们识别自己是否被选中成为当前事务的目标对象之一。如果某个特定地址匹配成功,则对应的从会回应ACKnowledge位表示准备就绪接受后续指令或提供所需资料。 #### 数据交换过程 一旦建立了有效的链接关系之后,接下来就是按照既定规则完成具体任务了: 对于 **写入请求** 来说,主站会继续向选定好的伙伴传递命令参数集或者要存储的信息包直到结束标志到来为止; 而针对 **读取需求** ,则相反地是由对方主动推送最新测量结果回传过来供查询方处理分析之用。 无论哪种情况发生期间内都离不开周期性的脉冲波形配合下才能实现可靠无误码率下的双向通讯制正常运转下去。 ```c // C语言伪代码展示如何设置一个简单的I2C从接收并响应来自主机的消息 void setup() { Wire.begin(8); // 加入I2C总线并将此设备设为ID号8的从 } void loop() { while (Wire.available()) { // 当有可用数据时执行下面语句块内的动作 char c = Wire.read(); // 获取字符型输入流里的下一个元素赋值给变量'c' Serial.print(c); // 将收到的内容打印出来显示于监视器窗口里便于观察验证效果 } } ``` 上述例子展示了Arduino平台下编写一段简易程序使一块开发板扮演好被动角色等待外界发起交互邀请的同时做好充分准备以便及时作出适当反馈的行为模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值