1.前言
对于大多数工程师而言,I2C永远是一个头疼的问题。相比UART和SPI而言,I2C的时序要复杂一些,I2C组合变化也丰富一些。在这里以AT24C04为例说明I2C使用过程中的一些注意点。
2.AT24C04操作示意图
图 AT24C04操作示意图
示意图说明:示意图分阐述了4种不同的操作方式,例如写单个存储单元,写多个存储单元,读单个存储单元和写单个存储单元。对于单个操作而言,上部为MCU通过I2C输出的相关指令,下部为I2C设备的响应。例如写单个存储单元操作时,MCU发出I2C启动,设备地址,写标志位等,而I2C设备输出多个ACK。
3.若干说明
3.1 基本操作方式
I2C设备的操作可分为写单个存储字节,写多个存储字节,读单个存储字节和读多个存储字节。相对于AT24C04而言,这些读写动作相对于内部的存储单元而言,对于其他的具备I2C接口的AD或传感器而言,存储单元变成了寄存器单元。虽然存在概念上的差别,但是其操作原理确实一样的。
3.2 无应答
在以上4种情况中,无应答为MCU发出,无应答意为MCU不需要从机输出数据,MCU将会停止本次I2C操作。需要说明的是,无应答并不是一种异常情况。
3.3 I2C设备并不只有一个设备地址
这一点往往被忽略,一般情况下认为在I2C启动信号之后的字节为I2C从机地址(7位)。对于AT24C04而言,内部具有4Kb存储位,合计512字节。若需要访问512字节内容,总共需要9根地址线(8位宽度),那么上图中的存储地址(8位长度)显然还差了一位,那么就需要从设备地址中“借”1位,这就使得AT24C04具有两个I2C地址,例如0x50和0x51。
3.4 存储地址
相对于AT24C04而言,存储地址占1个字节。若换成其他I2C设备,例如ADXL345,存储地址被寄存器地址替代即可,其他操作方式相似。但是像AT24C32或AT24C64这样的大容量EEPROM,则存储地址需要2字节描述,也就意味着需要连续发送两个字节地址信息且高字节在前。其他像BH1750这样的光照芯片,存储地址被具体的操作命令替代,使用I2C设备时需要因地制宜,切不可照搬教条。
3.5 连续读和连续写限制
AT24C04中存在页的概念,一页的大小为8字节,若果在单页的范围内,存储地址累加,若超过该页的最大地址,存储地址回到页开始处。所以对于连续读和连续写而言,最大的操作字节数为8。若需要操作的字节内容超过8字节,则需要进行翻页操作,即写入下一页的起始存储地址。
4 总结
I2C设备有很多种,若掌握基本原理,便可见招拆招,那是I2C总线就不那么难了。
关键字:单片机 I2C操作 AT24C04
引用地址:
单片机 I2C操作笔记——以 AT24C04为例
推荐阅读最新更新时间:2024-03-16 16:08
I2C总线的读操作的流程
M24Cxx的读操作模式及其各种模式的操作流程如图1、图2所示。 1. 当前地址读 EEPROM内部具有保持当前地址的寄存器。读取当前地址的数据时,不需要指定地址。只要单纯给出读指令就可读出数据。读取完毕后,内部所保持的当前地址将自动进位。
图1 I 2 C存储器的读操作(1)
图2 I 2 C存储器的读操作(2)
数据读操作后的ACK/NoACK信号由主机返回,但必须返回NoACK信号。
2. 随机读 随机读是由主机指定任意的地址读取的。利用写指令设定地址,如果赋予读指令则可以读出当前地址。所以,与字节写操作时相同,在第1字节的数据后面给出地址。在这里,一旦发送
[嵌入式]
单片机校园打铃系统源程序
主频率 12M 功能: 1、使用DS1302获得时钟信号,能够进行时间设置 2、能够设置10组打铃时间,并具有临时打铃功能,打铃的时长为5S钟 3、1602液晶屏幕显示数据。 仿真原理图如下 使用方法: 按键“÷”时间调整,多次按下调整位 按键“X”打铃时间调整,多次按下调整位 按键“=”打铃时间数组调整 按键“+”数据加 按键“-”数据减 按键“/C”退出 单片机主频率 12M 单片机源程序如下: /* 主频率 12M 项目名称: 校园打铃系统 功能: 1、8位数码管显示当前时间。 2、使用DS1302获得时钟信号,能够进行时钟设置 3、能够设置10组打铃时间,并具有临时打铃功能,打铃的时长为5S钟 4、
[单片机]
PCF8591与AT89C51单片机的接口程序
以AT89C51为主器件.I2C总线上连接4个PCF8591芯片,芯片地址分别为(OOOb、OlOb、020b、400b),89C51的P3.6作为SCL信号.P3.7做为SDA信号,每个芯片的模拟输入采用单端方式输入,参考电压VREF选用4.8V。参考电路如下图所示。下面程序为I2c协议、读取4路A,D转换数据以及写入D/A变换数值的C语言代码。
[单片机]
Microchip扩展通用8位PIC®单片机系列,
全球领先的整合单片机、混合信号、模拟器件和闪存专利解决方案的供应商——Microchip Technology Inc.(美国微芯科技公司)宣布扩展具有智能模拟和独立于内核的外设之全新PIC16F75X系列8位单片机(MCU),该产品是通用应用,以及电源、电池充电、LED照明、电源管理和电源控制/智能能源等应用的理想选择。全新PIC16F753 MCU建立在广受推崇的PIC12F752成功基础上。PIC16F753提供了PIC12F752的全部主要特性;例如集成的互补输出发生器(COG)外设可为比较器和脉宽调制(PWM)外设输入提供非重叠、互补波形,同时又实现死区控制、自动关断、自动复位、相位控制和消隐控制。此外,PIC16F75
[单片机]
基于单片机的温度传感器设计
通过对AT89C2051单片机原理分析,研究了一种对环境温度测量、控制的设计方案,实现了采用AT89C2051单片机编程达到控制温度,精确测量的目的。 现代工业生产中,温度的测量和控制极为普遍,单片机的优点十分明细,其具有体积小、功能强大、低功耗、性价比高等诸多优点,其广泛应用于自动控制领域,单片机的应用可以有效提高产品的控制质量和自动化水平,利用单片机对温度进行测控的技术,日益得到广泛应用。 1 AT89C2051元器件技术参数 AT89C2051是51系列单片机的一个型号,它是一个低电压,高性能CMOS 8位单片机 ,它可以兼容MCS-51指令系统,该单片机内置了8位的CPU和闪存单元,这就使得该单片机功能强大。可以为用户提供
[单片机]
基于单片机+FPGA频谱分析仪系统电路设计详解
目前,由于频谱分析仪价格昂贵,高等院校只是少数实验室配有频谱仪。但电子信息类教学,如果没有频谱仪辅助观察,学生只能从书本中抽象理解信号特征,严重影响教学实验效果。针对这种现状提出一种基于FPGA的简易频谱分析仪设计方案,其优点是成本低,性能指标满足教学实验所要求的检测信号范围。 设计方案 图1为系统设计总体框图。该系统采用C8051($8.5125)系列单片机中的 C8051($8.5125)F121作为控制器,CvcloneⅢ系列EP3C40F484C8($86.5000)型FPGA为数字信号算法处理单元。系统设计遵循抽样定理,在时域内截取一段适当长度信号,对其信号抽样量化,按照具体的步骤求取信号的频谱,并在LCD上
[单片机]
PC机与多单片机串行通信的实现
1 引言 在实际工程应用中,经常会遇到将一台PC机与多个单片机或多个智能仪表相连接进行实时监测与管理的情况。这就要考虑通信方案的选择问题,如果采用多个串行口或采用网络通信的方法,则会增加成本,同时,软件的编写也不容易。下面介绍一种简单易行,成本低廉的通信方法—用PC机的一个串行口对多个AT89C51单片机的通信。 2 通信硬件系统的构成 整个系统如图1。 2.1 PC机的RS-232串行口接口设计 通常,PC机提供一个打印机输出的并行口(LPT),两个串行口(COM1,COM2),采用PC机的RS-232串行口时,在PC机与单片机间通信必须有相同的通信协议,由于AT89C51单片机采用的电平为TTL逻辑电平,在PC机侧的
[单片机]
8位MCU TM56F1552在电陶炉的应用方案,集成低噪声OPA
随着人们生活水平的不断提高,消费者对厨房电器的要求越来越高,对电器的环保节能特性,安全性,灵活性等都有很高的需求,电陶炉由于其加热效率高且可以持续加热,无辐射,适用性高等特点很好的满足了目前消费者的需要。 为了满足市场上对于电陶炉产品的需求,本文介绍一种成熟的电陶炉产品整体解决方案,方案由AC-DC电源芯片与8位MCU主控两部分组成,MCU内置触摸模块,LED/LCD显示驱动模块,多路PWM输出,带基准电压源的ADC以及EEPROM存储器等模块。其中主控TM56F1552芯片内集成了低噪声OPA,CMP,LDO,CTK,可以减少产品零件数目及降低成本。 方案中TM56F1552是一款8位内置OPA,外围电路简单,可以节省B
[嵌入式]