📄 ds3231.h
字号:
#ifndef __D3231_H__
#define __D3231_H__
/*****************************************************************************
** 宏定义
******************************************************************************/
#define DS3231_SLAVE_ADDR 0xD0
//DS3231的寄存器(开始)地址
#define DS3231_REG_BEGIN_ADDR 0x00
#define DS3231_TIME_BEGIN_ADDR 0x00
#define DS3231_ALARM1_BEGIN_ADDR 0x07
#define DS3231_ALARM2_BEGIN_ADDR 0x0B
#define DS3231_CTRL_ADDR 0x0E
#define DS3231_CTRL_STATUS_ADDR 0x0F
#define DS3231_OFFSET_ADDR 0x10
#define DS3231_TEMP_BEGIN_ADDR 0x11
#define DS3231_SUBA_EN_0 0x00
#define DS3231_SUBA_EN_1 0x01
#define DS3231_SUBA_EN_2 0x02
#define I2C_PORT_0 0x00
#define I2C_PORT_1 0x01
#define I2C_PORT_2 0x02
/*****************************************************************************
** 结构定义
******************************************************************************/
/*****************************************************************************
DS3231BUFtag结构中的各个变量的位置不可更改
因为位置是与DS3231中的寄存器顺序一一对应的
******************************************************************************/
typedef struct{
BYTE cTimeSecond; //[00]
BYTE cTimeMinute; //[01]
BYTE cTimeHour; //[02]
BYTE cTimeDay; //[03]
BYTE cTimeDate; //[04]
BYTE cTimeMonth; //[05]
BYTE cTimeYear; //[06]
BYTE cAlarm1Second; //[07]
BYTE cAlarm1Minute; //[08]
BYTE cAlarm1Hour; //[09]
BYTE cAlarm1DayDate; //[0A]
BYTE cAlarm2Minute; //[0B]
BYTE cAlarm2Hour; //[0C]
BYTE cAlarm2DayDate; //[0D]
BYTE cCtlReg; //[0E]
BYTE cCtlStatusReg; //[0F]
BYTE cOffsetReg; //[10]
BYTE cMSBofTemp; //[11]
BYTE cLSBofTemp; //[12]
BYTE cFlag1; //reserved
BYTE cFlag2; //reserved
}DS3231BUFtag;
typedef struct{
BYTE cSecond; //[00]
BYTE cMinute; //[01]
BYTE cHour; //[02]
BYTE cDay; //[03]
BYTE cDate; //[04]
BYTE cMonth; //[05]
BYTE cYear; //[06]
}DS3231_TIMEtag;
typedef struct{
BYTE cSecond; //[07]
BYTE cMinute; //[08]
BYTE cHour; //[09]
BYTE cDayDate; //[0A]
}DS3231_ALARM1tag;
typedef struct{
BYTE cMinute; //[0B]
BYTE cHour; //[0C]
BYTE cDayDate; //[0D]
}DS3231_ALARM2tag;
typedef struct{
BYTE cTempMSB; //[11]
BYTE cTempLSB; //[12]
}DS3231_TEMPtag;
/******************************************************************************
* 功能: 经过I2C接口发送1串字节的数据
* 输入: cPort 端口号
cSlaAddr 从机地址
cSuba 子地址
pData 数据源指针
cNum 数据个数
* 输出:
TRUE 发送成功
FALSE 发送失败
******************************************************************************/
BOOL I2CSendStr(BYTE cPort, BYTE cSlaAddr, BYTE cSubaEn, BYTE cSuba, BYTE *pData, BYTE cNum);
/******************************************************************************
* 功能: 向无地址器件读取1字节的数据
* 输入: cPort 端口号
cSlaAddr 从机地址
cSuba 子地址
pData 数据源指针
cNum 数据个数
* 输出:
TRUE 发送成功
FALSE 发送失败
******************************************************************************/
BOOL I2CRecvByte(BYTE cPort, BYTE cSlaAddr, BYTE CSubaEn, BYTE cSuba, BYTE* pData);
#endif
/*****************************************************************************
** 文件结束
******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -