I2C通信 读写数据过程

发布者:中和子最新更新时间:2018-07-17 来源: eefocus关键字:I2C通信  读写数据 手机看文章 扫描二维码
随时随地手机看文章

在通信之初,主从机必须根据自己的要求约定好通信规则:command的定义和位置、address的位数和位置。


以读写从机寄存器数据为例:

假设从机寄存器地址为8位、从机寄存器也位8位(被读取数据为8位);

约定读command为0x01,写command位0x02;

约定主机发起通信后,第一个slave address字节收到ack后,紧跟的一个字节为command,再下面一个字节为address。


1. 读寄存器数据步骤:

    1.1 主机先发起一次通信,将读command(0x01)和需要读取的寄存器地址address写入从机;(主机发出写操作)

    1.2 从机firmware的处理:

          1.2.1 将command和address分别提取出来;

          1.2.2 判断command的含义(本例中,是读指令还是写指令);

          1.2.3 根据收到的的address,将对应寄存器的的数据放入从机I2C输出buffer;(这个步骤可以使用指针)

    1.3 主机再次发起一次通信,读取从机的数据;(主机发出读操作)





2. 写操作步骤:

    2.1 主机发起通信,按约定依次写入command、要写入的从机寄存器地址address和要写入的数据data;

    2.2 从机firmware要做的处理:

          2.2.1 分别提取command、address和data;

          2.2.2 根据command做出判断(本例中则判断是写入还是读取);

          2.2.3 将data写入与接收到的address对应的寄存器。(这个步骤可以使用指针)。


关键字:I2C通信  读写数据 引用地址:I2C通信 读写数据过程

上一篇:I2C通用读写函数
下一篇:[STM32/8经验] 经验分享——EEPROM读写及数据管理

推荐阅读最新更新时间:2024-03-16 16:09

基于I2C串行通信的EEPROM在电视中的设计应用
1 前言 近年来,数字化电视技术迅猛发展,特别是遥控系统的面市,各厂商在电视机中加人微处理器(MCU),各种人工智能化彩电完全替代了老式电视手动(机械式)控制和记忆方式。随着电视专用MCU功能日益强大,用户使用的功能日趋丰富,所需存储的数据和刷新速度不断提高,先后涌现出各种型号和规格的存储器。目前,电视机中应用最为广泛的是E2PROM。   因为E2PROM保存着大量与电视机工作状态密切相关的数据,其可靠性就遥控电视而言至关重要,视为第二核心器件。E2PROM与第一核心器件 (MCU)保持通信,并存储电视机的工作信息。有时由于存储数据的丢失造成重大损失,甚至导致数据无法修复。因此,在电视系统中,对于系统数据和用户数据的存
[家用电子]
基于<font color='red'>I2C</font>串行<font color='red'>通信</font>的EEPROM在电视中的设计应用
模拟I2C总线多主通信研究与软件设计
  I2C总线(Inter IC BUS)是Philips公司推出的双向两线串行通信标准。由于它具有接口少、通信效率高等优点,现已得到广泛的应用 。它除了可以进行简单的单主节点通信外,还可以应用在多主节点的通信系统中。在多主节点通信系统中,如果两个或者更多的主节点同时启动数据传输,总线具有冲突检测和仲裁功能,保证通信正常进行并防止数据破坏。现在许多微控制器(MCU)都具有I2C总线接口,能方便地进行I2C总线设计。对于没有I2C总线接口的MCU,可以采用两条I/O接口线进行模拟 。目前,一些介绍模拟I2C的资料主要讲的是在单主节点系统中进行的通信,这使得模拟I2C总线的应用具有一定的局限性。本文根据总线仲裁的思想,提出一种多主节点通
[单片机]
模拟<font color='red'>I2C</font>总线多主<font color='red'>通信</font>研究与软件设计
基于STM32f103的I2C通信接口的EPPROM模块(24C256)读写程序详解2
接上面的文章!!! 第五步:我们要封装2个函数,一个用于读8位数据,一个用于写8位数据,程序如下: 第六步:我们要利用上面2个函数再封装2个函数,一个用于向EPPROM指定的地址写指定的一字节数据,一个用于读EPPROM指定的地址的数据。程序如下: 第七步:我们要封装2个函数,用于多字节的读写!程序如下: 最后我们就是主函数了!当然这里利用串口发送数据来显示读写的数据!!! const u8 My2 ={ 地址100开始的数据 rn }; //定义了一个多字节的数据 #define MySize2 sizeof(My2) //该数据长度 int main(
[单片机]
基于STM32f103的<font color='red'>I2C</font><font color='red'>通信</font>接口的EPPROM模块(24C256)<font color='red'>读写</font>程序详解2
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved