嵌入式Linux学习笔记6_I2C协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
I2C协议如下,I2C的开始信号是在SCL保持高电平的时候,SDA由高变低,停止信号是在SCL保持高电平的时候SDA由低变高,写入数据时,时钟信号SCL保持高电平稳定,读取SDA的电平值,在SCL保持低电平时,SDA可以改变自己的值
在第一个八位数据里,包含了七位的地址(addr),和最后一位的读/写标记(R/W),0表示写,1表示读。
在发出第八位数据之后,主机的第八位会被拉高,设备是否存在,就看第九位是不是低电平信号,因为若设备存在,从设备会把第九位拉低。
也就是说,前八位由主设备驱动,第九位由从设备驱动。
后续就是所需要发送的数据。遵循的都是SCL保持高电平稳定,读取SDA的电平。
在这里插入图片描述
对于单个的设备如下,当输出为高电平时,CMOS管导通,SDA为低电平,当输出为低电平时,CMOS管截止,SDA浮空。
在这里插入图片描述
实际电路中为了防止两个设备输出低电平,导致他们的SDA没有输出而出现电路悬空的情况,会加一个上拉电阻,让电路保持在高电平。
在这里插入图片描述
当双方都不驱动CMOS管时,SDA一定为高,所以当从设备需要回应主设备时,ACK回应信号一定是低电平。

因为当SCL为高电平不变时,可以读取SDA,所以当从设备需要完成自己内部的一些事情的时候,把SCL拉低,就可以处理自己内部的事情。
主从设备均可驱动SCL。

所以主从设备都是如下图所示结构:
在这里插入图片描述

参考韦东山的芯片开发手册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很高兴回答你关于野火嵌入Linux学习的问题!以下是一些学习笔记的建议: 1. 了解嵌入系统:首先,你需要了解嵌入系统是什么以及它们与桌面操作系统的区别。嵌入系统通常用于特定的应用领域,例如智能家居、汽车电子和工业控制等。 2. 学习Linux基础知识:野火嵌入Linux是基于Linux内核的操作系统,所以你需要掌握Linux的基础知识,包括文件系统、进程管理、设备驱动程序等。 3. 硬件平台了解:野火嵌入Linux有不同的硬件平台,例如野火开发板。你需要学习如何操作和配置这些硬件平台,并了解它们的特性和限制。 4. 交叉编译环境设置:为了在PC上开发嵌入系统,你需要设置一个交叉编译环境,以便能够编译和调试嵌入应用程序。这涉及到安装和配置交叉编译工具链。 5. 内核定制和驱动程序开发:学习如何定制Linux内核以满足特定需求,并开发设备驱动程序以支持外部硬件。 6. 应用程序开发:掌握嵌入应用程序的开发技术,包括使用C/C++语言、Makefile和调试工具。 7. 调试和故障排除:学会使用调试工具和技术来定位和解决嵌入系统中的问题。 8. 实际项目经验:通过参与实际的嵌入项目或完成一些小型项目来应用你的知识和技能。 这些只是一些学习笔记的建议,野火嵌入Linux学习需要不断的实践和探索。希望这些对你有帮助!如果你有任何进一步的问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值