1、IIc是什么:

    是飞利浦公司设计的一种用于mcu与外围设备之间信息交互的一种协议。高速IIC总线一般可大400kbs

  

2、IIC作用:

    用于mcu与外围设备间信息交互。

  

  3、IIc由什么组成:

    由 时钟线SCL 和 数据线SDA构成,总共两根线组成。

  4、实现原理:

    由于只有一个线,为了实现主机和从机间相互信息交互,故采用了半双工通信方式来进行设备间的通信。

    如主机先是输出状态,那么立即会转成输入状态。等待应答回应,成功(ack=0,低电平时候有效)再进行下个周期数据发送。

    

  5、工作流程:

    5-1、写数据:

      1)开始信号

      2)输出设备地址:

      3)输出字节地址:

    

      4)循环写数据(以字节为周期)

      5)停止信号:

    5-2、读数据:

      1)开始信号

      

      2)输出设备地址

      3)输出字节地址

      4)开始信号

      

      5)以读的方式输出设备地址

      6)循环读取数据

      7)停止信号

  6、注意:

    1、数据线SDA 数据变化 必须发生在时钟线为 低电平 期间才有效

    2、读取数据主要靠输入引脚的值获取

  

  

I2c理解的更多相关文章

  1. GPIO模拟SPI

    上次用gpio模拟i2c理解i2c协议.相同的,我用gpio模拟spi来理解spi协议. 我用的是4线spi,四线各自是片选.时钟.命令/数据.数据. 数据在时钟上升沿传递,数据表示的是数据还是命令由 ...

  2. (原创) 巩固理解I2C协议(MCU,经验)

        题外话:这几天天气突然转冷了.今天已是11月23日了,查查黄历,昨天(11月22日)刚好是小雪,一夜温度骤降,果然老祖先的经验有灵验!冬天来了,还是多加加衣服,注意保暖! 1.Abstract ...

  3. 理解一下单片机的I2C和SPI通信

    应某位网友要求,今天说一下单片机的I2C SPI通信,可能说不清楚,因为这毕竟要做实验才可完全理解. I2C和SPI是两种不同的通信协议. 听到协议,似乎高不可攀,其实协议就是人们定义的一个标准而已, ...

  4. I2C总线之(三)---以C语言理解IIC

    为了加深对I2C总线的理解,用C语言模拟IIC总线,边看源代码边读波形: 如下图所示的写操作的时序图: 读时序的理解同理.对于时序不理解的朋友请参考“I2C总线之(二)---时序” 完整的程序如下: ...

  5. IIC - 【转载】对I2C总线的时钟同步和总线仲裁的深入理解

    对I2C总线的时钟同步和总线仲裁的深入理解 每一个IIC总线器件内部的SDA.SCL引脚电路结构都是一样的,引脚的输出驱动与输入缓冲连在一起.其中输出为漏极开路的场效应管.输入缓冲为一只高输入阻抗的同 ...

  6. 转载:关于STM32硬件I2C读写EEPROM代码实现原理的理解与总结

    http://home.eeworld.com.cn/my/space-uid-716241-blogid-655190.html 一.I2C协议简介 I2C是两线式串行总线,用于连接微控制器及其外围 ...

  7. i2c初步理解

    引用自:http://www.cnblogs.com/zym0805/archive/2011/07/31/2122890.html I2C是由Philips公司发明的一种串行数据通信协议,仅使用两根 ...

  8. I2C子系统之驱动SSD1306 OLED

    理解I2C设备驱动框架,主要围绕四个结构体去分析就容易了. struct i2c_algorithm:提供I2C协议的实现的操作,如:master_xfer实现数据收发的最基本方法. struct i ...

  9. I2C总线(异步)

    起始位与停止位的定义: 起始信号:当SCL为高期间,SDA由高到低的跳变:启动信号是一种电平跳变时序信号,而不是一个电平信号. 停止信号:当SCL为高期间,SDA由低到高的跳变:停止信号也是一种电平跳 ...

随机推荐

  1. go get 命令

    示例: go get github.com/jinzhu/gorm 下载并安装gorm包. 远程代码库有github,GitLlab,Gogs 命令介绍说明: -fix : 比如,我的代码是一年前1. ...

  2. mysql 事务的实现原理

    开篇 相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等.今天想跟大家一起研究下事务 ...

  3. js获取简单表单对象(1)

    <form id="form">     <input type="text" name="username" value ...

  4. .net代码混淆

    本人主要记录一下学习心得,.net关于代码混淆的知识 1.代码混淆的原理,转载链接 2.代码混淆工具,ConfuserEx的使用,转载地址

  5. C#多线程解决程序卡顿问题

    描述: 在 C# 中,System.Threading.Thread 类用于线程的工作.它允许创建并访问多线程应用程序中的单个线程.进程中第一个被执行的线程称为主线程. 案例: static void ...

  6. Ubuntu 18.04 RTX2080(ti) + tensorflow-gpu + cuda9.0 + gcc5 兼容性问题解决

    0.下载display driver.cuda和cudnn RTX2080 Display Driver cuda cudnn 1. 禁止系统默认的显卡驱动 打开系统黑名单 sudo gedit /e ...

  7. MAC电脑下Appium + python3 + robotframework ios的真机测试环境搭建

    本人的环境搭建前的准备,MAC电脑一台(macOS Mojave 10.14.0及以上),Xcode 10.0及以上   ,自己注册的一个Apple ID 账户,必须你的电脑能连接互联网,最好不要用公 ...

  8. JAVA 架构和技术框架百科

    YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只 ...

  9. 嵌入式Web服务器boa在ARM平台的移植步骤

    1.下载http://www.boa.org/ 2.解压tar xzf boa-0.94.13.tar.gz 3.编译cd boa-0.94.13/src./configure 生成了makefile ...

  10. 前端项目中公共方法汇总utils.js

    目录 判断手机类型IOS Android 格式化金钱 金钱字符串变回数字 用aa替换中文 并返回 去除文件后缀,得到文件名称(不带后缀) 获取浏览器类型(名称) post方式下载文件流 动态设置img ...