时钟芯片SD2200ELP与AVR单片机TWI接口控制的设计

发布者:幸福时刻最新更新时间:2013-12-07 来源: eefocus关键字:SD2200ELP  AVR单片机  WI接口控制 手机看文章 扫描二维码
随时随地手机看文章

  在提升机制动闸瓦间隙实时在线检测的设计中,需要保存故障时间和故障数据。

  大部分仪器仪表中都要使用时钟芯片,但是很多的实时时钟芯片(如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系列内部结构如图l所示。

  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条指令。[page]

  实时数据寄存器是一个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,可以保存时间和相应数据;具有电路简单、占用资源少、程序简洁、调试方便、功耗低等特点。经过实际的现场运行证实了该设计方法是可靠、有效的。对本文的设计方案和程序稍加修改后,可以用在各种需要此功能的数字控制和监控检测系统中

关键字:SD2200ELP  AVR单片机  WI接口控制 引用地址:时钟芯片SD2200ELP与AVR单片机TWI接口控制的设计

上一篇:关于avr单片机两路ad信号的单独采集问题
下一篇:基于AVR单片机的发电机负荷缸多路遥控开关量数字遥控并编解码的实现

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

基于AVR单片机的负荷缸多路遥控开关编解码实现
  负荷缸是船舶电力核心发电机性能的负荷试验必备的重要工装设备,通过负荷试验,可以检验发电机长期工作的性能稳定的情况(静态特性)和对突加突卸负荷的应变能力(动态特性)。 AVR单片机 具有高性能低价格的优点,在本文中利用AVR单片机对发电机负荷缸的多路远程遥控开关量进行采集监控并进行数字信号编解码,用2芯的电缆取代原来40芯的粗电缆传输控制信号,有效地解决了工作中遇到的问题。   1 问题的提出   我们通过把由发电机供电的通电极板放到负荷缸水电阻中,用充气升降极板和补给水调节水电阻大小的方法控制试验发电机所带负荷的大小,对发电机的性能进行试验。体积庞大的负荷缸一般放置在码头,在船舶发电机的负荷试验中需要在船舶配电板处控制负荷
[单片机]
基于<font color='red'>AVR单片机</font>的负荷缸多路遥控开关编解码实现
AVR单片机的全功能工业控制器设计
引言   在自动控制产品的设计过程中,实现方案的选择常常是很矛盾的。使用可编程逻辑控制器(PLC)和人机界面(HMI)来实现,开发速度较快,但成本太高,所开发的产品没有市场竞争力;使用单片机开发,成本低但开发周期长、开发量大且通用性不好。用户需要的是一种成本低、开发周期较短、通用性较好的控制器,因此全功能工业控制器有很大的应用市场。   全功能工业控制器的整个电路分为信号隔离输入部分、控制器输出部分、实时时钟与历史数据存储部分、彩色液晶显示和触摸屏控制部分、通信接口等。 1 信号隔离输入电路   信号隔离输入电路分为开关量隔离输入、模拟量隔离输入、高速电脉冲隔离输入,电路如图1所示,开关量的隔离输入较为简单,输入信号采用
[单片机]
<font color='red'>AVR单片机</font>的全功能工业<font color='red'>控制</font>器设计
AVR单片机汇编器伪指令
  伪指令不属于 单片机 的指令系统,而是由汇编器提供的指令,用于调整 存储器 中程序的位置、定义宏、初始化存储器等。AVR单片机的汇编器共提供18条伪指令(见附表)。      其中,ORG、DB、DW、EQU读者比较熟悉,这里不再赘述。下面对部分伪指令加以说明。      BYTE-保存单字节数据到SRAM中。BYTE伪指令仅用在数据存储器。为提供数据保存的位置,在BYTE前应有标号。在由CSEG、ESEG定义的代码段和E2PROM段中不能使用BYTE伪指令。      格式LABEL:.BYTE表达式 CSEG-定义程序存储器代码段的起始位置一个汇编文件可以包括若干个代码段,汇编时这些代码段被连成一个代码段。在代码
[单片机]
<font color='red'>AVR单片机</font>汇编器伪指令
使用AVR单片机配置FPGA
Altera公司的ACEX、FLEX等系列的FPGA芯片应用广泛,但其FPGA基于SRAM结构,决定电路逻辑功能的编程数据存储于SRAM中。 由于SRAM的易失性,每次上电时必须重新把编程数据装载到SRAM中,这一过程就是FPGA的配置过程。FPGA的配置分为主动式和被动式。在主动模式下,FPGA上电后主动将配置数据从专用的EPROM(如EPC1,EPC2等)加载到SRAM中。被动模式下,FPGA为从属器件,由相应的控制电路或微处理器控制配置过程,包括通过下载电缆由计算机控制配置和单片机模拟配置时序配置。其中,专用的EPROM价格高,可编程次数少,而计算机配置在现场应用中又很不现实,因此本文提出一种基于AVR单片机的被动配置方式
[单片机]
使用<font color='red'>AVR单片机</font>配置FPGA
C51单片机和AVR单片机的区别
1.avr为risc结构cpu,大多数指令在一个时钟周期内完成.所以MIPS比51高 2.avr单片机的复位电平为负逻辑, 而51为正逻辑 3.汇编的程序不通用,但是如果用c写的程序还是可以移植的. AVR 单片机是ATMEL 在90年代推出的精简指令集RISC的单片机,跟PIC类似.使用哈佛结构.可以这样类比,AT89C52相当于复杂指令集CISC的intel的奔腾CPU,AT90S8515相当于AMD的精简指令集RISC的K7 CPU. 以上是指令集的类比.AVR是专门为使用高级语言设计的,在使用高级语言时, 会比89C52有较佳的表现. 可以直接替代89C52的CPU是AT90S4414和AT90S8515.
[单片机]
avr单片机位操作方法
#include avr/io.h #define SET_BIT(x,y) ((x)|=(0x0001 (y))) /*置X的第Y位为1*/ #define CLR_BIT(x,y) ((x)&=~(0x0001 (y)))      /*置X的第Y位为0*/   #define SET_BIT(x,y) ((x)^=(0x0001 (y)))       /*X的第Y位取反*/ #define SET_BIT(x,y) (((x)$(1 (y)))==0 ? 0:1)     /*读取X的Y位,返回0或1*/ #define SET_BIT(x,y,z) ((x)=(x)&(~(1 (y)))!((z) (y))
[单片机]
基于ATMEGA8A_AVR单片机温度测控系统proteus仿真
仿真电路图: #include mega48.h #include delay.h // DS18b20 Temperature Sensor functions #include ds18b20.h // Alphanumeric LCD Module functions #include alcd.h #define ADC_VREF_TYPE 0x60 #define Temp_Set_Key_Not_Pressed PIND.6 #define Alarm_Set_Key_Not_Pressed PIND.7 // Read the 8 most significant bits // of th
[单片机]
基于ATMEGA8A_<font color='red'>AVR单片机</font>温度测控系统proteus仿真
AVR单片机公交车语音报站系统程序
const char QFDZ ={ {0x10,0x10,0x17,0x15,0x95,0x75,0x57,0x10,0x10,0x13,0x30,0xD0,0x57,0x10,0x10,0x00, 0x00,0x00,0xFE,0x20,0x24,0x22,0xFC,0x00,0x00,0xF8,0x02,0x01,0xFE,0x00,0x00,0x00},//前 {0x10,0x10,0x10,0x10,0x10,0x10,0x9F,0x52,0x32,0x12,0x12,0x13,0x10,0x10,0x10,0x00, 0x02,0x02,0x04,0x08,0x30,0xC0,0x00,0x00,0x04,0x02,0
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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