DrvBsp_I2C驱动_RTC_ IN1363(二)
一、原理图

ER14250是一款3.6V锂亚硫酰氯一次性圆柱电池,标称容量1200mAh,标称电压3.6V,放电截止电压2.0V。
电池电压3.6V > 系统电压3.3V,如D2、D3采用同一二极管,则主供电电源将是电池。因此D2采用SS14、D3则采用导通电压更高LL4148。
IN1363是IKSemicon生产的实时时钟芯片,其成本远低于RX8025T,本文以IN1363为例介绍RTC芯片的使用。
IN1363是一款集成日历、闹钟、计时器功能的完整BCD码数字手表,并具有低功耗特性。其核心功能与特性如下:(BCD码是一种以二进制形式表示十进制数的编码,所以BCD码亦称为二-十进制码)
- 地址与数据通过I2C总线以串行方式传输。
- 该芯片用于实时计时(时、分、秒),并可计数星期、日期、月份及年份。
- 对于少于 31 天的月份,芯片会自动调整月末日期,包括闰年修正功能。
- 芯片采用 24 小时制工作模式。
该芯片的特性与PCF8563近似,本文参考PCF8563的规格介绍IN1363的特性。
二、管脚定义
|----------|----------|---------------------------------------------------------------------------------|
| 管脚序号 | 管脚符号 | 描述 |
| 01 | OSCI | 32.768kHz石英晶振 |
| 02 | OSCO | 32.768kHz石英晶振 |
| 03 | INT | 中断管脚输出;中断条件由当前时间与闹钟设置匹配(电平信号)或定时器倒计时归零触发(电平或脉冲信号)。 |
| 04 | VSS | 地 |
| 05 | SDA | I2C总线接口 |
| 06 | SCL | I2C总线接口 |
| 07 | CLKOUT | 分频时钟输出;FE 位置1使能CLKOUT。CLKOUT 引脚生成四种不同频率(1Hz、32Hz、1kHz、32kHz)信号。CLKOUT 本质为开漏极输出, |
| 08 | VDD | 电源3.3V |
三、寄存器介绍
3.1 控制寄存器1(00H)
|--------|-------|---|------|---|-------|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | TEST1 | 0 | STOP | 0 | TESTC | 0 | 0 | 0 |
属于测试用寄存器,应用时无需使用
3.2 控制寄存器2(01H)
|--------|---|---|---|-------|----|----|-----|-----|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | 0 | 0 | 0 | TI/TP | AF | TF | AIE | TIE |
- TI/TP(INT引脚脉冲中断信号生成)---"0"表示INT引脚为低电平持续中断信号;"1"表示INT引脚为脉冲中断信号
- AF(闹钟标志位)---"1"时,表明闹钟触发中断。仅可通过软件复位。
- TF(定时器标志位)---"1"时,表明定时器触发中断。仅可通过软件复位。
- AIE(闹钟使能位)---"1",用于启动闹钟功能。
- TIE(定时器使能位)--- "1",用于启动定时器功能。4
当INT引脚输出为脉冲时,其脉冲宽度如下:
|---------|--------|--------|
| 定时器输入频率 | INT脉冲宽度 ||
| 定时器输入频率 | N=1 | N>1 |
| 4096Hz | 1/8192 | 1/4096 |
| 64Hz | 1/128 | 1/64 |
| 1Hz | 1/64 | 1/64 |
| 1/60Hz | 1/64 | 1/64 |
N值即是定时器寄存器的值,
个人理解:当N=1时,脉冲宽度太宽,则与定时器中断发生周期可能会有重叠;
3.3 控制寄存器CLKOUT(0DH)
|--------|----|---|---|---|---|---|-----|-----|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | FE | х | х | х | х | х | FD1 | FD0 |
FE(CLKOUT 输出使能位)--- "1"用于使能 CLKOUT 输出。输出信号的频率由FD0位和FD1位决定。定时器的时钟源也通过"定时器控制寄存器"选择。
|---------|---------|----------------------|
| FD1 | FD0 | Frequency CLKOUT |
| 0 | 0 | 32,768 kHz |
| 0 | 1 | 8,192 kHz |
| 1 | 0 | 4,096 kHz |
| 1 | 1 | 1 Hz |
3.4 定时器寄存器(0FH)
定时器寄存器是一个8位倒计数定时器,它是由定时器控制寄存器中TE位决定是否有效。
定时器的时钟也是由"定时器控制寄存器"选择,其他功能,如中断产生等则由"控制寄存器2"决定。位了能精确读回倒计数的数值,I2C总线时钟SCL的频率应至少位所选定定时器时钟频率的2倍。
3.5 定时器控制寄存器(0EH)
|--------|----|---|---|---|---|---|-----|-----|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | TE | х | х | х | х | х | TD1 | TD0 |
- TE(定时器使能位)---"1",用于启动定时器功能。
- TD0/TD1 --- 定时器的输入时钟频率
|-----|-----|---------|
| TD1 | TD0 | 定时器输入频率 |
| 0 | 0 | 4096Hz |
| 0 | 1 | 64Hz |
| 1 | 0 | 1Hz |
| 1 | 1 | 1/60Hz |
3.6 秒分时寄存器(02H、03H、04H)
02H:秒寄存器
|--------|----|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | VL | 秒 |||||||
03H:分寄存器
|--------|---|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | x | 分 |||||||
04H:时寄存器
|--------|---|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | x | x | 时 ||||||
时分秒寄存器均为BCD码。VL=0保证有准确的时钟日历;VL=1不保证有准确的时钟日历。
当供电电压低于预定值时,位VL置1,用于指明可能产生不准确的时钟日历。
3.7 日周月年寄存器(05H、06H、07H、08H)
05H:日寄存器
|--------|---|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | x | x | 日 ||||||
06H:周寄存器
|--------|---|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | x | x | x | x | X | 周 |||
07H:月寄存器
|--------|---|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | C | x | x | 月 |||||
C=0,表示年份为20XX年;否则表示年份为19XX年
08H:年寄存器
|--------|---|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | 年 ||||||||
3.8 告警寄存器(09H、0AH、0BH、0CH)
09H:日告警寄存器
|--------|----|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | AE | 分钟告警(0-59) |||||||
AE=0代表该寄存器使能
0AH:时告警寄存器
|--------|----|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | AE | x | 时钟告警(0-23) ||||||
AE=0代表该寄存器使能
0BH:日告警寄存器
|--------|----|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | AE | x | 日告警(1-31) ||||||
AE=0代表该寄存器使能
0CH:周告警寄存器
|--------|----|---|---|---|---|---|---|---|
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Symbol | AE | x | x | x | x | 周告警(0-6) |||
AE=0代表该寄存器使能
四、蔡勒公式
蔡勒(Zeller)公式:是一个计算星期的公式。随便给一个日期,就能用这个公式推算出是星期几。
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
公式中的符号含义如下:
W:星期; W对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
C:世纪-1(前两位数)
y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
\]代表取整,即只要整数部分。 以2025年1月1日为例 W = \[20/4\] -2\*20 + 24 + \[24/4\] + \[13\*(13+1)/5\] + 1-1 = 5-40+24+6+36+1-1 = 31 31/7 = 4 ... 3 ,星期三