基于ATmegal6单片机实现SD2200L的TWI接口设计

在提升机制动闸瓦间隙实时在线检测的设计中,需要保存故障时间和故障数据。大部分仪器仪表中都要使用时钟芯片,但是很多的实时时钟芯片(如pcf8563)没有掉电保护,须外接晶振和电池,比较麻烦。而深圳兴威帆电子技术有限公司生产的sd2200elp是内置32 kbe2prom的串行实时时钟芯片,不需要外接器件支持,连线简单、可靠,提供的数据精确,断电后也能继续工作。微控制器采用atmel公司的atmegal6单片机,利用at-megai6的硬件twi接口可直接对sd2200elp进行操作,无需软件模拟i2c方式,使用方便、可靠。
1、sd2200l简介
sd2200l系列(包括sd2200b/c/d/e/flp)是一种具有内置晶振、支持i2c总线的高精度实时时钟芯片。sd2200elp是sd2200l系列中的一种,该芯片可保证时钟精度为5ppm(在-10~50℃下),即年误差小于2.5min。芯片内置时钟精度调整功能,可以在很宽的范围内校正时钟的偏差;内置32kb串行非易失性e2prom;可在3.0~5.5v下工作,擦写次数可达100万次,数据保存时间为十年;内置一次性电池,可保证在外部掉电情况下时钟使用寿命超过五年。sd2200l系列内部结构如图1所示。
2、硬件设计
sd2200elp既有实时芯片的功能,又可以存储数据到内置e2prrom中。因为sd2200elp是i2c总线接口方式,所以其硬件接口设计非常简单,可以大大简化单片机外围器件。avr的twi总线实质上就是i2c总线,只是名称不一样。图2中intl脚为sd2200elp的定时中断输出,与atmegal6的外部中断intl相连接(intl配置为下降滑触发方式),sda、scl为两线式串行引脚,分别与atmegal6的twl(pcl、pco)相连。
3、软件设计
如果外围器件是i2c接口类型,而单片机没有i2c接口,那么必须用软件模拟的方式来实现。avr单片机功能很强,它带有twi接口,可以直接利用atmegal6的硬件i2c接口来对外围i2c器件进行操作,非常方便、有效。这样可以节省模拟i2c程序,为用户编程省去很多麻烦。下面是使用atmegal6对内置e2prom的实时时钟芯片sd2200elp读/写的程序设计,均是在iccavr开发环境下编写。
3.1 atrnegal6的twi总线接口
两线接口twi很适合于典型的处理器应用。twi协议允许系统设计者只用两根双向传输线就可以将128个不同的设备互连到一起。这两根线是时钟线scl和数据线sda。外部硬件只需2个上拉电阻,每根线上1个。所有连接到总线上的设备都有自己的地址。twi协议解决了总线仲裁的问题,twi总线的连接如图3所示。
twi总线可以工作于4种不同的模式:主机发送器(mt)、主机接收器(mr)、从机发送器(st)以及从机接收器(sr)。在后面将介绍的连续读e2prom操作中就使用了mt和mr模式。
3.2 实时时钟读取
实时时钟操作指令格式如下:
其中高4位称为“器件代码”,它代表实时时钟的器件地址,固定为“0110”。c2、c1、c0构成对实时时钟操作的8条指令。
实时数据寄存器是一个56位的存储器,它以bcd码方式存储,包括年、月、日、星期、时、分、秒的数据。实时数据的读/写操作都通过发送或接收年(实时数据读写方式1)数据的第一位“lsb”开始执行的。
3.3 e2prom的读/写
sd2200elp的e2prom操作指令与实时时钟的器件代码是不一样的。当cpu要对sd12200l中的e2prom进行操作时,首先发出开始信号给sd2200l,然后cpu发出包括4位器件代码10lo、3位页选码000、1位读/写指令的8位数据(即“从器件地址”)。一位读/写指令表明进行何种操作(读操作为1,写操作为o)。其格式如下:
3.3.1 对e2prom的页写操作
写操作可分为:单字节写操作和页写操作。单字节写操作指每次只写入一个字节的数据;页写操作指一次可以写入多个字节的数据。值得注意的是,sd2200l是一个系列,不同类型对应着不同数量的e2prom。例如在页写操作下,sd2200elp单个写周期内e2prom可以被写入64字节的数据。在某监测仪器应用中,需要保存故障值和故障发生时间,故采用页写方式。页写e2prom程序流程图如图4所示。
3.3. 2 对e2prom连续读操作
读操作有3种方式:立即地址读操作、随机地址读操作和连续读操作。atmegal6为完成从sd2200elp内置串行e2prom中读取数据,必须将几种twi模式组合起来。由于内置e2pprom的存储容量大小不同,因此在进行读操作时,其操作方式有所不同。在查询故障值和故障时间时,需要读出保存在e2prom的数据,故采用连续读操作。与页写操作类似,sd2200elp最多连续读64字节的数据。连续读操作程序流程图如图5所示。
读/写e2prom需用到的5个公用函数:
4、总结
sd2200elp可以方便地结合avr单片机的twi总线实现日期显示功能。并且因其内置32 kbe2prom,可以保存时间和相应数据;具有电路简单、占用资源少、程序简洁、调试方便、功耗低等特点。经过实际的现场运行证实了该设计方法是可靠、有效的。对本文的设计方案和程序稍加修改后,可以用在各种需要此功能的数字控制和监控检测系统中。


2021年我国的扫地机器人市场规模将达到224亿元左右
微星也即将推出自己的非公版显卡:GTX 1080 Ti红龙显卡
如何建立高效的ERP工业车间管理看板
声源定位技术的三大定位原理
深度学习在工业自动化中的优势
基于ATmegal6单片机实现SD2200L的TWI接口设计
华为云发布十大新服务
借助 Google 无障碍功能提供更有温度的服务 | Android 开发者故事
中兴通讯将发布三款搭载骁龙888的智能手机
三星新款MiniLED电视曝光
LCD驱动工作原理 ,基于51单片机LCD底层时序程序该如何编写?
AI批改作文哪家强?英语老师亲测讯飞智能学习机更高效
那些你不知道的无线路由器功能
焊锡膏和松香有什么区别
基于STM32设计的指针式电子钟与日历
极客黑科技 与无人机完全不同的飞行体验
物联网水资源监测系统在商业建筑中的4种应用
线性电源LDO基础知识(一):压降Dropout Voltage
估值高达400亿美元的中国铁塔主要的业务范围有哪些?
软开关的基本特性和类型