/******************************************************************************
* 名称: D3231.c
* 描述: D3231模块驱动的实现文件
* 编写:
* 日期: 2010.07.23
******************************************************************************/
/*****************************************************************************
** DS3231的寄存器说明
时间寄存器组 0x00 时间:秒
0x01 时间:分
0x02 时间:小时
0x03 时间:星期
0x04 时间:日
0x05 时间:月
0x06 时间:年
闹钟1寄存器组 0x07 闹钟1:秒
0x08 闹钟1:分
0x09 闹钟1:时
0x0A 闹钟1:星期/日期
闹钟2寄存器组 0x0B 闹钟2:分
0x0C 闹钟2:时
0x0D 闹钟2:星期/日期
控制寄存器组 0x0E 控制寄存器
0x0F 控制/状态寄存器
0x10 偏移寄存器
温度寄存器组 0x11 温度MSB
0x12 温度LSB
说明: 时间和日历寄存器中的数据是BCD格式存储的
******************************************************************************/
/*****************************************************************************
** 预编译包含
******************************************************************************/
#include "D3231.h"
/******************************************************************************
* 功能: 初始化DS3231芯片
******************************************************************************/
void DS3231Init(void)
{
I2CInit(0,0,400); //初始化I2C总线,400K速率
}
/******************************************************************************
* 功能: 从DS3231读取时间
* 输出: pTime 保存从DS3231读取到的时间的指针
说明: 时间寄存器组7个字节定长
******************************************************************************/
void DS3231ReadTime(DS3231_TIMEtag *pTime)
{
//设置起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_REG_BEGIN_ADDR,
&(pTime->cSecond),
0x00);
//读取时间寄存器
I2CRecvStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_0,
DS3231_TIME_BEGIN_ADDR,
&(pTime->cSecond),
0x07); //7个字节定长
//恢复起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_REG_BEGIN_ADDR,
&(pTime->cSecond),
0x00);
}
/******************************************************************************
* 功能: 设置DS3231的时间寄存器
* 输入: pTime 待设置的时间内容的指针
说明: 时间寄存器组7个字节定长
******************************************************************************/
void DS3231SetTime(DS3231_TIMEtag *pTime)
{
//设置当前的时间
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_0,
DS3231_TIME_BEGIN_ADDR,
&(pTime->cSecond),
0x07);
//恢复起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_REG_BEGIN_ADDR,
&(pTime->cSecond),
0x00);
}
/******************************************************************************
* 功能: 读取DS3231的闹钟1的设置
* 输出: pAlarm1 保存从DS3231读取到的闹钟1数据的指针
说明: 闹钟1寄存器组4个字节定长
******************************************************************************/
void DS3231ReadAlarm1(DS3231_ALARM1tag *pAlarm1)
{
//设置起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_ALARM1_BEGIN_ADDR,
&(pAlarm1->cSecond),
0x00);
//读取闹钟1时间寄存器
I2CRecvStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_0,
DS3231_ALARM1_BEGIN_ADDR,
&(pAlarm1->cSecond),
0x04); //4个字节定长
//恢复起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_REG_BEGIN_ADDR,
&(pAlarm1->cSecond),
0x00);
}
/******************************************************************************
* 功能: 设置DS3231的闹钟1寄存器的值
* 输入: pAlarm1 待设置的闹钟时间内容指针
说明: 闹钟1寄存器组4个字节定长
******************************************************************************/
void DS3231SetAlarm1(DS3231_ALARM1tag *pAlarm1)
{
//设置闹钟1的时间
//4个字节定长
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_0,
DS3231_ALARM1_BEGIN_ADDR,
&(pAlarm1->cSecond),
0x04);
//恢复起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_REG_BEGIN_ADDR,
&(pAlarm1->cSecond),
0x00);
}
/******************************************************************************
* 功能: 读取闹钟2的设置
* 输出: pAlarm2 保存从DS3231读取到的闹钟2的指针
说明: 闹钟2寄存器组3个字节定长
******************************************************************************/
void DS3231ReadAlarm2(DS3231_ALARM2tag *pAlarm2)
{
//设置起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_ALARM2_BEGIN_ADDR,
&(pAlarm2->cMinute),
0x00);
//读取闹钟2时间寄存器
//3个字节定长
I2CRecvStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_0,
DS3231_ALARM2_BEGIN_ADDR,
&(pAlarm2->cMinute),
0x03);
//恢复起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_REG_BEGIN_ADDR,
&(pAlarm2->cMinute),
0x00);
}
/******************************************************************************
* 功能: 设置闹钟2
* 输入: pAlarm2 设置闹钟2寄存器内容的指针
说明: 闹钟2寄存器组3个字节定长
******************************************************************************/
void DS3231SetAlarm2(DS3231_ALARM2tag *pAlarm2)
{
//设置闹钟2的时间
//3个字节定长
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_0,
DS3231_ALARM2_BEGIN_ADDR,
&(pAlarm2->cMinute),
0x03);
//恢复起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_2,
DS3231_REG_BEGIN_ADDR,
&(pAlarm2->cMinute),
0x00);
}
/******************************************************************************
* 功能: 读取DS3231的控制寄存器
******************************************************************************/
void DS3231ReadCtlReg(BYTE *pCtrlReg)
{
//设置起始地址
I2CSendStr( I2C_PORT_0,
DS3231_SLAVE_ADDR,
DS3231_SUBA_EN_
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
DS3231.rar (2个子文件)
DS3231驱动
DS3231.h 4KB
DS3231.C 14KB
共 2 条
- 1
躺着的树懒
- 粉丝: 30
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页