在提升机制动闸瓦间隙实时在线检测的设计中,需要保存故障时间和故障数据。大部分仪器仪表中都要使用时钟芯片,但是很多的实时时钟芯片(如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万次,数据保存时间为十年;内置一次性电池,可保证在外部掉电情况下时钟使用寿命超过五年。
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总线可以工作于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字节的数据。在某监测仪器应用中,需要保存故障值和故障发生时间,故采用页写方式。
3.3. 2 对E2PROM连续读操作
读操作有3种方式:立即地址读操作、随机地址读操作和连续读操作。ATmegal6为完成从SD2200ELP内置串行E2PROM中读取数据,必须将几种TWI模式组合起来。由于内置E2PPROM的存储容量大小不同,因此在进行读操作时,其操作方式有所不同。在查询故障值和故障时间时,需要读出保存在E2PRoM的数据,故采用连续读操作。与页写操作类似,SD2200ELP最多连续读64字节的数据。连续读操作程序流程图如图5所示。
读/写E2PROM需用到的5个公用函数:
4 总结
SD2200ELP可以方便地结合AVR单片机的TWI总线实现日期显示功能。并且因其内置32 KBE2PROM,可以保存时间和相应数据;具有电路简单、占用资源少、程序简洁、调试方便、功耗低等特点。经过实际的现场运行证实了该设计方法是可靠、有效的。对本文的设计方案和程序稍加修改后,可以用在各种需要此功能的数字控制和监控检测系统中。
关键字:SD2200ELP ATmegal6 实时时钟 I2C E2PROM
引用地址:
时钟芯片SD2200ELP与AVR单片机的接口设计
推荐阅读最新更新时间:2024-03-16 12:50
基于I2C总线的新型可编程增益放大电路的设计
在各类遥感遥测系统中,模拟信号的动态范围通常都很大,一般在几mV至几十V范围内(动态范围可达80_90db),有的甚至是几pV_几百V(动态范围可达160db以上)。而且信号的干扰源多,有时甚至掩盖掉有用信号,很难辨识是有用信号还是干扰信号。此外,不同的材料、形状、尺寸,不同的类型,不同的测量速度,得到的信号频谱不同,受干扰信号的特点也不同。对这样的信号进行采集处理,为保证精度,检测系统首先需要对大动态模拟信号的动态范围进行压缩,即对mV甚至pV级的信号进行放大,对几十V甚至几百V的信号进行衰减,将信号的变化幅度调整到A/电路所需要的范围。针对这一问题,本文提出了一种基于I2C总线的新型可编程增益放大器的设计方法,可根据输入的模拟信
[模拟电子]
1.10.3_I2C_程序框架_P
下面介绍一下I2C程序的框架。 IIC控制器不知道数据的含义,它只负责数据的传输,主要是读和写功能的实现。 下图是IIC传输数据的结构。 下图是AT24cxx的写时序图。 下图是AT24cxx的读时序图。 我们的程序应该分为两层,上层是I2C设备,比如AT24cxx,下层是I2C控制器,比如2440。 I2C控制器有很多种,比如2440的I2C控制器,Ti的I2C控制器,他们都分到下层的I2C控制器一层,上层的I2C设备则将I2C的功能进行封装,这样在使用不同芯片的I2C控制器时,我们就直接通过调用设备函数而不关心底层的控制器类型。 通过i2c_transfer函数来调用I2C设备,第一个参数是I2C
[单片机]
24c08 I2C总线协议操作程序汇编和C语言2个版本详解
;24c08操作时序为:起始信号sclk拉高情况下sda由高变低,表示起始 ; 结束信号sclk拉高情况下sda由低变高,表示结束 ; 字节由高位向低位依次发送 ; 第一个字节是地址和读写控制,第二个是存储地址,第三个是数据,每个数据结束器件都会发送 ack应答信号; ; I2C 总线协议 ;I2C 总线协议定义如下 ;1 只有在总线空闲时才允许启动数据传送 ;2 在数据传送过程中当时钟线为高电平时数据线必须保持稳定状态不允许有跳变时钟线 ;为高电平时数据线的任何电平变化将被看作总线的起始或停止信号 ;起始信号 ;时钟线保持高电平期间数据线电平从高到低的跳变作为I2C 总线的起始信号
[单片机]
Microchip推出第一款独立实时时钟/日历(RTCC)系列
Microchip Technology Inc.(美国微芯科技公司)宣布,推出其第一款独立IC实时时钟/日历(RTCC)系列。所有6个MCP794XX器件以低成本实现了高度集成,包括存储容量充足的片上EEPROM和SRAM。而且,EEPROM的用户可锁定部分可存储一个64位可编程惟一ID,即可以在出厂时就将一个MAC地址烧入其中。这些器件具备用于时钟校准的数字微调,以及在极低电压和电流条件下支持备用电源的电池切换功能。通过在一个器件中集成所有这些功能,MCP794XX系列不仅减少了元件数量,也降低了各种应用的成本。 上述器件的应用实例包括智能能源(如恒温器、电表和商用制冷),家用电器(如灶具、洗碗机和微波炉)
[嵌入式]
I2C配置及调试流程
一、I2C配置 1.根据原理图,查找相关的i2c引脚对应的GPIO值,以GPIO10作为I2C_SDA,GPIO11作为I2C_SCL为例。 2.根据MSM8937 DEVICE SPECIFICATION文档,查找GPIO10与GPIO11对应的BLSP,以及检查GPIO10与GPIO11是否可以作为I2C来使用。根据文档,GPIO10对应BLSP3_1,GPIO11对应BLSP3_0。 3.根据80-nu767-1_h_linux_bam_low-speed_peripherals_configuration_and_debug_guide文件,查找I2C部分BLSP3_0与BLSP3_1对应内容,包括其物理地址、re
[单片机]
基于51的IIC通讯原理及协议详解(I2C)
IIC 的一些特征: 两条总线:串行数据总线(SDA)和串行时钟总线(SCL) 真正的多主机总线 连接到相同总线的ic数量只受到总线的最大电容400pF限制。 串行8位双向数据在标准模式下可达100K bit/s 快速模式400K bit/s,高速模式下3.4Mbit/s. 数据有效性规定: IIC总线在进行数据传输时,SCL在高电平区间,SDA上的电平必须保持稳定 SDA的数据的高或者低电平状态只有在SCL线的时钟信号是低电平时才能改变。 起始和停止条件: 起始:SCL高电平时,SDA由高电平向低电平切换。 停止:SCL高电平时,SDA由低电平向高电平切换。 模拟时序如下: 起始与终止: 应答与非应答: 总线上进行一次数据传
[单片机]
基于I2C总线的键盘驱动的设计与实现
随着嵌入式系统的飞速发展,嵌入式PC在许多领域得到广泛应用。其中嵌入式键盘作为一种人机交互工具,有着非常重要的作用。通常的键盘设计采用阵列的设计方式,例如一个含有9个键值的键盘需要6个通用I/O口来实现通信。键盘的键值越多,需要的通用I/O口也越多。 I2C(Inter-Integrated Circuit)总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件上,因此I2C总线占用的空间非常小。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输
[单片机]
STM32F103利用模拟I2C驱动ADS1115
ADS1115通过模拟I2C驱动:(部分代码借鉴了网络上的几个,并且根据引脚进行了配置,都没有运行成功,今天调了一天,终于在晚上调了出来) 注意:本部分代码需要只是ADS1115的部分程序(一些用到的数组在此没有写),模拟II2C的各程序并未给出,大家根据需要进行裁剪,代码完全开源,希望能帮到大家,也希望大家乐于分享。 调试时需特别注意I2C的通信问题,特别是应答信号的使用需要特别关注,本人的程序之前出错全是因为从机的应答信号的未使用造成。 如有其它问题,欢迎指正批评,第一次写博客,感谢! 收获:对于I2C通信协议的理解更加深刻,对ADS1115也能进行单通道的使用。I2C的开始、发送/读写、应答、结束等一定要
[单片机]