任务介绍
本次任务的核心目标是设计一款紧凑而功能全面的实时时钟模块,其尺寸被严格限定在小于40mm*以40mm的范围内。实时时钟模块一般具备基本的实时时钟功能,能够精确记录当前的时间信息,还需要集成了日历功能,在接口设计上,需要选择了I2C通信协议,这是一种广泛应用的串行通信标准,以其简单的硬件连接、高效的数据传输速度以及低功耗特性而著称。至于主要器件的选择,为了确保器件的可获得性和质量,我们特别指定所有关键组件必须在DigiKey这一全球知名的电子元器件分销商官网上有货且处于正常售卖状态。这款实时时钟模块板卡的设计将围绕小型化、高性能、易用性开展。
模块介绍
设计思路
本次设计实时时钟模块本着模块化的思想,设计一个紧凑的的而功能全面的实时时钟模块,本次任务的电路相对还是比较简单的,找到的器件是内置晶振的,这样的稳定性会更还一点,最后通过2.54的排针或者YH2.0的接口进行连接控制。
功能介绍
本次设计是实时时钟模块集成了一下功能:
实时时钟功能;
多种接口状态输出;
硬件介绍
本次主要的器件是RV-8263-C7-32.768KHZ-20PPM-TA-QC,性价比很高,重要的是内置了32.768kHz的晶振,这样的器件可靠性会更高。还具有低功耗和工作范围宽的特性,不过我们的单片机系统一般是3.3V,建议使用3.3V供电,IIC总线最高支持400Khz。最后通过两种接口方式进行控制和状态监控,板对板连接线选择的是HY2.0-4的座,主要是供电和IIC通信,还有通用的2.54接口用于杜邦插针的连接,主要进行其他引脚的状态输出。IIC接口通过上拉10K电阻进行状态初始化。
设计框图
本次设计的是实时时钟模块,我们通过统一的接口进行供电和控制,控制是基于IIC进行的,整体模块还是挺简单的,通过上拉电阻进行IIC的初始状态设定,本模块提供了两种接口进行连接,尽可能将多个引脚引出。
原理图和PCB介绍
原理图
PCB
可以看到整体的模块还是挺小的,HY的座基本上就占了一半的空间,不过本次的芯片还是非常小的,对外围电路的要求也不是很高,主要是直接可以焊接上,焊接后的实物图如下:
软件调试
本次设计的模块只能说是一个功能模块,用于实时时钟信息获取和设定的,我们需要使用一款主控单元,通过杜邦线与HY2.0接口的线根据以下模块引脚定义进行适当的连接,基本上连接CN1就可以控制:
管脚属性 | 管脚名 | 管脚编号 | 管脚名 | 管脚属性 | |
P | GND | CN1-1 | H1-1 | GND | P |
P | 3.3V | CN1-2 | H1-2 | CLKOE | I/O |
I/O | SDA | CN1-3 | H1-3 | CLKOUT | I/O |
I/O | SCL | CN1-4 | H1-4 | INT | I/O |
这里我们选择了一款arduino开发板作为本次测试验证的主控单元,根据功能需求连接如下:
我们使用arduinoIDE作为主要的开发工具,通过库管理工具搜索RV-8263,可以搜到如下的库:
下面我们就基于这个库进行模块的控制,这个库直接使用时不行的,通过测试发现其IIC地址不对,我们需要对库文件进行一下修改,同时发现寄存器的地址也不对,我们本次主要是进行硬件的验证,只要能够正常的输出秒级变化就认为这个模块是焊接成功,调试通了,还是通过修改库来进行,打开存储的库文件(cpp文件和h文件)进行修改,需要结合数据手册进行修改才行,目前我只修改了IIC地址和秒对应的寄存器地址(这个是时间地址的起始)。
我们简单实现如下功能功能:输出按照秒变化的时间。
主要代码介绍:
打开开发板的IIC接口和串口打印功能,每秒获取事假数据并打印:
#include <FC0005748911.h>
RV8263 rtc;
void setup()
{
Wire.begin();
Serial.begin(115200);
if (rtc.begin() == false)
{
Serial.println("Device not found. Please check wiring. Freezing.");
while(1);
}
Serial.println("RTC online!");
}
void loop()
{
if (rtc.updateTime() == true) //Updates the time variables from RTC
{
String currentTime = rtc.stringTime(); //Get the time
Serial.println(currentTime);
}
else
{
Serial.print("RTC read failed");
}
delay(1000);
}
模块调试效果图
心得体会
本次我们选择了一个实时时钟模块的设计,整体硬件电路设计还是挺简单的,软件验证选择了arduino,虽然支持这个实时时钟,不过还是有很多的不匹配的地方,大概率是厂家改了不过库没有对应升级,这里我们选择了最小变量修改库,如果想要全功能建议还是根据数据手册详细改一下,目前能满足基本的时间功能。