ARM 裸机开发 DAY8 学习笔记

一、基础

1.数据发送规则

高位先行

2.两根信号线

①SCL:时钟信号线

②SDA:数据信号线

二、信号

1.起始信号:SCL为高电平时,SDA由高电平变为低电平(下降沿)

2.数据传输规则

①SCL高电平期间:SDA电平必须保持稳定,接收方采样读取数据。

②SCL低电平期间:SDA电平允许改变,发送方更新发送数据。

3.应答信号 ACK / NACK:第9个时钟周期,接收方向发送方回复应答。

①ACK:低电平(应答成功)

②NACK:高电平(无应答)

4.结束信号:SCL为高电平时,SDA由低电平变为高电平(上升沿)。

三、设备地址字节

1.起始信号后传输第一个字节:7位设备地址(高位) + 1位读写方向位(最低位)

①方向位 = 0:写,主机 → 从机

②方向位 = 1:读,从机 → 主机

2.最多支持127个从设备。

四、I2C写时序(主机写从机)

1.主机发送起始信号 + 设备地址 + 写位,等待从机ACK应答。

2.主机发送寄存器地址,等待从机ACK应答。

3.主机向从机发送数据,等待从机ACK应答。

4.主机发送停止信号。

五、I2C读时序(主机读从机)

1.主机发送起始信号 + 设备地址 + 写位,等待从机ACK应答。

2.主机发送寄存器地址,等待从机ACK应答。

3.主机发送重发起始信号 + 设备地址 + 读位,等待从机ACK应答。

4.主机接收从机发来的数据,主机回复ACK应答。

5.主机接收完最后一个字节,回复NACK应答。

6.主机发送停止信号。

六、进制

1.0x00:全部位为0

2.0xFF:全部位为1

3.0xAC → 二进制:1010 1100

4.0x10 → 二进制:0001 0000

相关推荐
Linux-lucky13 小时前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
金色光环14 小时前
【DSP学习】C2000_ADC中断_笔记
笔记·学习
Дерек的学习记录15 小时前
Unreal Engine 5:第三人称运动系统和人物动画
开发语言·学习·ue5
zhangrelay15 小时前
mrpt杂乱笔记-26-10-31
笔记·学习
熊猫钓鱼>_>15 小时前
平行视界兼容模式与魔法变量配置避坑【鸿蒙心迹】
运维·服务器·开发语言·笔记·华为·harmonyos·openharmony
衡石科技15 小时前
让多轮问数保持口径一致:Data Agent 的上下文、偏好与学习开关
人工智能·学习·安全
IT199516 小时前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器
東隅已逝,桑榆非晚16 小时前
算法2. 双指针法-复写零
c++·笔记·学习·算法
Star(up up up)17 小时前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo
云析赢指标公式网417 小时前
文华财经指标源码笔记:WINNER筹码函数、控盘变量与MACD变体的调试记录
java·笔记·算法