1. 测试了外部高精度RTC(PCF85063)的驱动,时钟功能正常,测试通过
This commit is contained in:
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
### 本目录为各种外设驱动库,部分驱动库之间存在依赖关系,会在下面有所说明
|
### 本目录为各种外设驱动库,部分驱动库之间存在依赖关系,会在下面有所说明
|
||||||
|
|
||||||
#### 1.QMI8658依赖I2C_Driver
|
#### 1. QMI8658依赖I2C_Driver
|
||||||
|
#### 2. PCF85063依赖I2C_Driver
|
||||||
@@ -13,5 +13,6 @@ void app_main(void)
|
|||||||
|
|
||||||
// wireless_test();
|
// wireless_test();
|
||||||
|
|
||||||
sd_card_module_test();
|
// sd_card_module_test();
|
||||||
|
pcf85063_test();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ idf_component_register(SRCS "Bionic_sphere.c"
|
|||||||
"../Lib/BAT_Driver/BAT_Driver.c" # 电池adc驱动库
|
"../Lib/BAT_Driver/BAT_Driver.c" # 电池adc驱动库
|
||||||
"../Lib/Wireless/Wireless.c" # 无线通信驱动库
|
"../Lib/Wireless/Wireless.c" # 无线通信驱动库
|
||||||
"../Lib/SD_Card/SD_MMC.c" # SD卡驱动库
|
"../Lib/SD_Card/SD_MMC.c" # SD卡驱动库
|
||||||
|
"../Lib/PCF85063/PCF85063.c" # RTC驱动库
|
||||||
INCLUDE_DIRS "."
|
INCLUDE_DIRS "."
|
||||||
"../test/driver_test"
|
"../test/driver_test"
|
||||||
"../Lib/I2C_Driver"
|
"../Lib/I2C_Driver"
|
||||||
@@ -12,6 +13,7 @@ idf_component_register(SRCS "Bionic_sphere.c"
|
|||||||
"../Lib/BAT_Driver"
|
"../Lib/BAT_Driver"
|
||||||
"../Lib/Wireless"
|
"../Lib/Wireless"
|
||||||
"../Lib/SD_Card"
|
"../Lib/SD_Card"
|
||||||
|
"../Lib/PCF85063"
|
||||||
PRIV_REQUIRES # 私有依赖
|
PRIV_REQUIRES # 私有依赖
|
||||||
driver
|
driver
|
||||||
bt
|
bt
|
||||||
|
|||||||
@@ -134,3 +134,62 @@ void sd_card_module_test(void)
|
|||||||
|
|
||||||
printf("\n=== SD卡模块测试完成 ===\n");
|
printf("\n=== SD卡模块测试完成 ===\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#include "PCF85063.h"
|
||||||
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
static const char *TAG = "PCF85063_TEST";
|
||||||
|
void pcf85063_test(void)
|
||||||
|
{
|
||||||
|
/* 1. 初始化 I2C 与 PCF85063 */
|
||||||
|
I2C_Init(); // 初始化 ESP32 I2C 外设
|
||||||
|
PCF85063_Init(); // 配置 PCF85063 进入 24h 模式、RTC 启动
|
||||||
|
ESP_LOGI(TAG, "PCF85063 初始化完成");
|
||||||
|
|
||||||
|
/* 2. 设置当前系统时间(示例:2025-08-24 周日 14:30:00)*/
|
||||||
|
datetime_t set_time = {
|
||||||
|
.year = 2025,
|
||||||
|
.month = 8,
|
||||||
|
.day = 24,
|
||||||
|
.dotw = 0, // 0 表示星期日
|
||||||
|
.hour = 14,
|
||||||
|
.minute = 30,
|
||||||
|
.second = 0
|
||||||
|
};
|
||||||
|
PCF85063_Set_All(set_time);
|
||||||
|
ESP_LOGI(TAG, "已设置时间:2025-08-24 14:30:00");
|
||||||
|
|
||||||
|
/* 3. 设置闹钟(示例:14:31:15 触发一次)*/
|
||||||
|
datetime_t alarm_time = {
|
||||||
|
.hour = 14,
|
||||||
|
.minute = 31,
|
||||||
|
.second = 15,
|
||||||
|
/* 日/星期字段无需关心,已在 PCF85063_Set_Alarm 中屏蔽 */
|
||||||
|
};
|
||||||
|
PCF85063_Set_Alarm(alarm_time);
|
||||||
|
PCF85063_Enable_Alarm(); // 使能闹钟中断并清除 AF 标志
|
||||||
|
ESP_LOGI(TAG, "已设置闹钟:14:31:15");
|
||||||
|
|
||||||
|
/* 4. 周期性读取时间与检查闹钟标志位 */
|
||||||
|
char str_buf[64];
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
/* 4.1 读取当前时间 */
|
||||||
|
datetime_t now;
|
||||||
|
PCF85063_Read_Time(&now);
|
||||||
|
datetime_to_str(str_buf, now);
|
||||||
|
ESP_LOGI(TAG, "当前时间:%s", str_buf);
|
||||||
|
|
||||||
|
/* 4.2 检查闹钟标志位 */
|
||||||
|
uint8_t flag = PCF85063_Get_Alarm_Flag();
|
||||||
|
if (flag & RTC_CTRL_2_AF)
|
||||||
|
{
|
||||||
|
ESP_LOGI(TAG, "闹钟触发!AF=1");
|
||||||
|
/* 如需重复闹钟,可在此重新设置新时间或清除 AF 后再次使能 */
|
||||||
|
PCF85063_Enable_Alarm(); // 清除 AF 并重新使能
|
||||||
|
}
|
||||||
|
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(1000)); // 每秒读一次
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,5 +17,8 @@ void wireless_test(void);
|
|||||||
// SD卡测试
|
// SD卡测试
|
||||||
void sd_card_module_test(void);
|
void sd_card_module_test(void);
|
||||||
|
|
||||||
|
// RTC测试
|
||||||
|
void pcf85063_test(void);
|
||||||
|
|
||||||
|
|
||||||
#endif //BIONIC_SPHERE_DRIVERS_TEST_H
|
#endif //BIONIC_SPHERE_DRIVERS_TEST_H
|
||||||
Reference in New Issue
Block a user