关闭关闭
网站导航▼ 电子论坛datasheet电子说学院芯城PCBSMT最新更新登录 | 注册
电子发烧友网Logo
技术资料买IC/元器件
搜索
技术特刊 编辑计划高端访谈 资料分享 直播
首页设计技术
可编程逻辑
电源/新能源
MEMS/传感技术
测量仪表
嵌入式技术
制造/封装
模拟技术
连接器
EMC/EMI设计
光电显示
存储技术
EDA/IC设计
处理器/DSP
接口/总线/驱动
控制/MCU
RF/无线
行业应用
音视频及家电
LEDs
汽车电子
通信网络
医疗电子
智能电网
机器人
人工智能
vr|ar|虚拟现实
可穿戴设备
安全设备/系统
军用/航空电子
移动通信
便携设备
触控感测
物联网
工业控制
行业文库资料
资料下载
电源技术
可编程逻辑
测试测量
FPGA/ASIC
行业软件
工控技术
单片机
无线通讯
传感控制
仿真技术
存储技术
EDA教程
C语言|源代码
显示及光电
音视频类
电磁兼容
3G技术
安防技术
机械电子
接口技术
电子论文
电路图
嵌入式电路
手机电路
电源电路
消费电子
LED电路
功率放大
光电显示
>>更多
资料分享
元器件
百科
在线工具
电子书籍
规则标准
工程师创意
型 号产品描述
请输入要搜索的元器件的型号
搜
问答
社区活动: 点击获取:是德科技最新物联网资料 | 免费下载:福禄克红外热像最新资源 | 【学院】ARM裸机—GPIO和LED | 硬件开发与电路设计
推荐帖子
【社区之星】越努力,越幸运
论坛活跃用户的好帖分享,不可错过的精彩,等你来发现。[详细]
【学院】《单片机有问必答》ZN-X开发板书籍放肆送
【精华分享】TI 经典参考设计套件精选!
【资料共享】TI DSP 热门资料汇总
【直播】模块化设计—基于FPGA的数字逻辑分析仪
【学院】ARM裸机实战—SD卡启动详解
【学院】ARM裸机实战—定时器、看门狗和RTC
厂商社区
keysight-iot fluke keysight-5g TI_deyi TI-RC TI_industry ni tektronix fujitsu heilind
技术小站:福禄克红外热像有奖知识小测验是德科技5G有奖知识小测验Silicon Labs小测验TI资源中心TI智能语音Intel社区Embest小测验TTI
厂商活动
【西安站】NI射频测试全国巡回研讨会
地点:西安 | 时间:11月16日 14:00 - 17:00
【东莞站】NI射频测试全国巡回研讨会
地点:东莞 | 时间:11月9日 14:00 - 17:00
2017 MPS高性能电源与工业技术研讨会
地点:深圳 | 时间:11月8日 13:00 - 17:30
【深圳站】NI射频测试全国巡回研讨会
地点:深圳 | 时间:11月2日 14:00 - 17:00
互动中心 ?
在线研讨会
[直播] 如何快速完成一个智能产品
logo
演讲人:赵海艳
2017.11.15
立即报名>>
[直播] 如何确保ARM平台进行稳定运算
logo
演讲人:周洵
2017.11.30
立即报名>>
设计大赛
Xilinx
2017中国硬件创新大赛
2017.5-2017.11
Xilinx
IDT无线充电设计大赛
2017.06.28—2017.12.01
华强芯城工程师创新设计大赛
2017.07.27—2017.12.28
精彩课程
自己动手定制51开发板PCB
立即报名>>
高速PCB模块化电路设计实战
立即报名>>
韦东山Linux工作驱动程序编写
立即报名>>
李述铜从0到1学会使用RTOS
立即报名>>
张飞电子视频全套共十部
立即报名>>
社区活动
【学院】ARM裸机—LCD显示器实战
【学院】ARM裸机实战—按键和CPU的中断系统
嵌入式Linux驱动篇—深度开发编写工作中的驱动
LED照明高功率因素切相调光器的设计要点
TE全方位子系统创新解决方案
如何攻克可穿戴医疗低功耗设计难关?
【学院】C语言复杂表达式与指针高级应用
专题活动 ?
热门会议
时间:12月6-7日 9:00-17:00
地点:深圳南山科兴科学园国家会议中心
时间:11月16日 14:00-17:00
地点:西安皇冠假日酒店珍珠琥珀厅
时间:11月9日 14:00-17:00
地点:东莞会展国际大酒店4楼8号厅
时间:11月8日 13:00–17:30
地点:深圳凯宾斯基酒店三楼宴会B厅
热门课程
张飞硬件电路设计第1部,免费学!
讲师:张飞立即报名
厨房电子秤硬件+程序设计
讲师:孟瑞生立即报名
高速PCB设计进阶课程,限时优惠!
讲师:林超文立即报名
RTOS应用篇,火热开课中...
讲师:李述铜立即报名
预售报名,3个月玩转Altium 51开发板实战
讲师:郑振宇立即报名
更多精彩课程 >> 教育
发烧友学院
让电子设计更简单-1天教你玩转Altium 51开发板PCB实战速成课程
已有5516人学习
Android驱动框架深度开发
已有1772人学习
从0到1手把手教你用嵌入式操作系统
已有3056人学习
PIC单片机的I2C 24LC02 C读写程序
1 I2C总线特点
I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
2 I2C总线工作原理
I2C总线上的数据稳定规则,SCL为高电平时SDA上的数据保持稳定,SCL为低电平时允许SDA变化。如果SCL处于高电平时,SDA上产生下降沿,则认为是起始位,SDA上的上升沿认为是停止位。通信速率分为常规模式(时钟频率100kHz)和快速模式(时钟频率400kHz)。同一总线上可以连接多个带有I2C接口的器件,每个器件都有一个唯一的地址,既可以是单接收的器件,也可以是能够接收发送的器件。
每次数据传输都是以一个起始位开始,而以停止位结束。传输的字节数没有限制。最高有效位将首先被传输,接收方收到第8位数据后会发出应答位。数据传输通常分为两种:主设备发送从设备接收和从设备发送主设备接收。这两种模式都需要主机发送起始位和停止位,应答位由接收方产生。从设备地址一般是1或2个字节,用于区分连接在同一I2C上的不同器件。
I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
在I2C总线中只有主发送和主接收两种操作方式。在系统初始化时,由指令控制CPU送出相关的数据,经接口送到I2C寄存器内。通过初始化这些寄存器,可以实现I2C总线的主模式控制,以及实现I2C总线上的从设备读写。
当主设备和其中的一个从设备交换数据时,主设备首先发出一个启动Start信号,这个信号被所有的从设备接收。即从设备准备接收CPU的信号,然后主设备再发出它要通信的从设备地址。接下来,所有的从设备将收到的这个地址和它们自己的地址进行比较。
如果收到的地址和它们自己的地址不同,则什么都不做,只是等待主设备发出停止stop信号;如果收到的地址和它自己的地址相同,它就发出一个信号给主设备,这个信号称为应答Acknowledge信号。当主设备收到应答信号后,它就开始向从设备发送数据或者从从设备接收数据。当所有操作都进行完毕时,主设备发出一个Stop信号,通信完毕,释放I2C总线;然后所有的从设备都等待下一次Start信号的到来。
3 总线基本操作
I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。
3.1 控制字节
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。
1.写过程
(1)上电后等待一个延时(1ms)。
(2)器件寻址,给一个起始信号(SCL为高电平时SDA给一个下降沿)。发送从器件地址,高5位为10110,然后根据A1/A0(如果和器件的地址相同则那个器件会应答)进行读/写控制(O为读)。
(3)应答,器件在SCL的第9个周期时SDA给出一个低电平,作为应答信号。
(4)开始写有两种模式:字节写模式和页写模式。
·字节模式:给出A15~A8应答,给出A7~A0应答;然后给出DATA和停止信号 (SCL为高电平时,SDA给出一个上升沿),接着要等待一个擦写时间。
·页写模式:给出地址以后连续给出64个数据。如果多于64个数据,则地址计数器自动翻转。(如果少于64昵,估计是没有问题的,但是需要实验验证。)
(5)判断擦写操作是否完毕的一个方法(应答查询),如果器件还处于擦写状态,则不会应答器件寻址;如果有应答,则说明擦写完毕。
2.读过程
(1)上电以后等待一个延时(lms)。
(2)器件寻址。
(3)应答。
(4)开始读有三种模式:立即当前地址读、选择/随机读、连续读。
·立即当前地址读:如果上次读/写的操作地址为N,则现在是N+1。不需要ACK,但是需要Stop信号。
·选择/随机读:先伪写(用于给出一个地址),然后再次启动,读取数据。
·连续读:读取一个以后给一个应答,这样器件会再给出下一个地址的数据内容。
(5)开始数据传输Start后、停止数据传输Stop前,SCL高电平期间,SDA上为有效数据。
/***********************************************************
一、程序说明:
1, 24LC02器件地址是1010000R/W.
2, 数组写入24LC02采取页写方式.
3, 数组code从24LC02读出时采取自由
评论0