跳转至

tcxo

TCXO (Temperature Compensated Crystal Oscillator) 提供基于温度补偿晶振的高精度计时功能,支持获取计数值、毫秒值、微秒值,以及毫秒级和微秒级阻塞延时。

头文件清单

#include "include/driver/tcxo.h"

接口清单

接口名称 功能简述
uapi_tcxo_init 初始化TCXO模块
uapi_tcxo_deinit 去初始化TCXO模块
uapi_tcxo_get_count 获取TCXO当前计数值
uapi_tcxo_get_ms 获取TCXO当前计数毫秒值
uapi_tcxo_get_us 获取TCXO当前计数微秒值
uapi_tcxo_delay_ms 设置延迟毫秒数
uapi_tcxo_delay_us 设置延迟微秒数
uapi_tcxo_suspend 挂起TCXO
uapi_tcxo_resume 恢复TCXO

Functions

uapi_tcxo_init

errcode_t uapi_tcxo_init(void)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 初始化TCXO驱动模块,完成硬件资源申请与配置
  • 使能TCXO计数器,开始计时
  • 重复调用返回 ERRCODE_SUCC,不会重复初始化

前置条件

  • 调用时序约束:当前接口在模块首次使用前调用
  • 依赖关系:TCXO硬件时钟源已正常供电并稳定运行

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 TCXO初始化成功
Other 其他错误码,参考errcode_t 初始化失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n

uapi_tcxo_deinit

errcode_t uapi_tcxo_deinit(void)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 去初始化TCXO驱动模块,释放硬件资源
  • 关闭TCXO计数器,停止计时
  • 未初始化状态下调用返回 ERRCODE_SUCC

前置条件

  • 调用时序约束:当前接口必须在 uapi_tcxo_init() 成功返回后调用
  • 依赖关系:TCXO模块已完成初始化

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 TCXO去初始化成功
Other 其他错误码,参考errcode_t 去初始化失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n

uapi_tcxo_get_count

uint64_t uapi_tcxo_get_count(void)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 获取TCXO当前原始计数值,单位为时钟tick
  • 未初始化状态下调用返回0
  • 支持低功耗模式下补偿休眠期间的计数

前置条件

  • 调用时序约束:当前接口必须在 uapi_tcxo_init() 成功返回后调用
  • 依赖关系:TCXO模块已完成初始化

返回值

  • 返回类型:uint64_t
返回值 文字含义 触发场景
uint64_t TCXO当前计数值 正常返回计数值
0 计数值为0 模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n
CONFIG_TCXO_SUPPORT_LPM 特性宏 支持低功耗模式下计数补偿特性 n

uapi_tcxo_get_ms

uint64_t uapi_tcxo_get_ms(void)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 获取TCXO当前计数毫秒值
  • 返回值由原始计数值换算得到
  • 未初始化状态下调用返回0

前置条件

  • 调用时序约束:当前接口必须在 uapi_tcxo_init() 成功返回后调用
  • 依赖关系:TCXO模块已完成初始化

返回值

  • 返回类型:uint64_t
返回值 文字含义 触发场景
uint64_t TCXO当前计数毫秒值 正常返回毫秒值
0 毫秒值为0 模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n

uapi_tcxo_get_us

uint64_t uapi_tcxo_get_us(void)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 获取TCXO当前计数微秒值
  • 返回值由原始计数值换算得到
  • 未初始化状态下调用返回0

前置条件

  • 调用时序约束:当前接口必须在 uapi_tcxo_init() 成功返回后调用
  • 依赖关系:TCXO模块已完成初始化

返回值

  • 返回类型:uint64_t
返回值 文字含义 触发场景
uint64_t TCXO当前计数微秒值 正常返回微秒值
0 微秒值为0 模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n
CONFIG_TCXO_UNUSED 特性宏 支持TCXO未使用特性 -

uapi_tcxo_delay_ms

errcode_t uapi_tcxo_delay_ms(uint32_t m_delay)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 基于TCXO计数器实现毫秒级阻塞延时
  • 延时期间占用当前执行上下文,不释放CPU
  • 延时精度取决于TCXO时钟源频率

前置条件

  • 调用时序约束:当前接口必须在 uapi_tcxo_init() 成功返回后调用
  • 调用上下文约束:当前接口为阻塞延时,禁止在中断上下文调用

入参

名称 参数类型 详细说明 约束取值范围
m_delay uint32_t 延迟毫秒数 0 ~ 0xFFFFFFFF

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 延时完成
Other 其他错误码,参考errcode_t 模块未初始化

参考案例

  • application/samples/gnss/gnss_at_samples/gnss_common_proc.c
  • bootloader/flashboot_3322/main.c

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n

uapi_tcxo_delay_us

errcode_t uapi_tcxo_delay_us(uint32_t u_delay)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 基于TCXO计数器实现微秒级阻塞延时
  • 延时期间占用当前执行上下文,不释放CPU
  • 延时精度取决于TCXO时钟源频率

前置条件

  • 调用时序约束:当前接口必须在 uapi_tcxo_init() 成功返回后调用
  • 调用上下文约束:当前接口为阻塞延时,禁止在中断上下文调用

入参

名称 参数类型 详细说明 约束取值范围
u_delay uint32_t 延迟微秒数 0 ~ 0xFFFFFFFF

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 延时完成
Other 其他错误码,参考errcode_t 模块未初始化

参考案例

  • bootloader/provision_3322/drivers/porting/fmc/fmc_porting.c
  • bootloader/provision_3322/boot/usb_load/usb_load.c

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n
CONFIG_TCXO_UNUSED 特性宏 支持TCXO未使用特性 -

uapi_tcxo_suspend

errcode_t uapi_tcxo_suspend(uintptr_t arg)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 挂起TCXO,保存当前计数值用于低功耗模式恢复后的补偿
  • 可通过入参返回挂起时的当前计数值
  • 用于系统进入低功耗模式前保存TCXO状态

前置条件

  • 调用时序约束:当前接口必须在 uapi_tcxo_init() 成功返回后调用
  • 依赖关系:CONFIG_TCXO_SUPPORT_LPM 宏已开启

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 挂起参数,指向 uint64_t 类型变量的指针,用于接收当前计数值;为NULL时不输出 NULL 或有效的 uint64_t* 指针

出参

名称 数据类型 输出说明
arg(非NULL时) uint64_t* 挂起时刻的TCXO当前计数值

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 挂起成功

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n
CONFIG_TCXO_SUPPORT_LPM 功能宏 支持TCXO低功耗挂起与恢复功能 n

uapi_tcxo_resume

errcode_t uapi_tcxo_resume(uintptr_t arg)

头文件清单

#include "include/driver/tcxo.h"

功能说明

  • 恢复TCXO,根据休眠时长补偿计数器值,确保时间连续性
  • 重新初始化TCXO计数器
  • 用于系统从低功耗模式唤醒后恢复TCXO状态

前置条件

  • 调用时序约束:当前接口必须在 uapi_tcxo_init() 成功返回后调用,且已调用 uapi_tcxo_suspend() 保存挂起状态
  • 依赖关系:CONFIG_TCXO_SUPPORT_LPM 宏已开启

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 恢复参数,指向 uint64_t 类型变量的指针,存储休眠期间的微秒补偿值 非 NULL 的有效 uint64_t* 指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 恢复成功
Other 其他错误码,参考errcode_t 重新初始化失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_TCXO 编译参与宏 控制tcxo.c参与编译 n
CONFIG_TCXO_SUPPORT_LPM 功能宏 支持TCXO低功耗挂起与恢复功能 n

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明

作为 uapi_tcxo_init、uapi_tcxo_deinit、uapi_tcxo_delay_ms、uapi_tcxo_delay_us、uapi_tcxo_suspend、uapi_tcxo_resume 接口的返回值类型。[SDK公共基础类型]