tcxo
TCXO (Temperature Compensated Crystal Oscillator) 提供基于温度补偿晶振的高精度计时功能,支持获取计数值、毫秒值、微秒值,以及毫秒级和微秒级阻塞延时。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| 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
头文件清单
功能说明
- 初始化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
头文件清单
功能说明
- 去初始化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
头文件清单
功能说明
- 获取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
头文件清单
功能说明
- 获取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
头文件清单
功能说明
- 获取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
头文件清单
功能说明
- 基于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.cbootloader/flashboot_3322/main.c
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_DRIVER_SUPPORT_TCXO | 编译参与宏 | 控制tcxo.c参与编译 | n |
uapi_tcxo_delay_us
头文件清单
功能说明
- 基于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.cbootloader/provision_3322/boot/usb_load/usb_load.c
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_DRIVER_SUPPORT_TCXO | 编译参与宏 | 控制tcxo.c参与编译 | n |
| CONFIG_TCXO_UNUSED | 特性宏 | 支持TCXO未使用特性 | - |
uapi_tcxo_suspend
头文件清单
功能说明
- 挂起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
头文件清单
功能说明
- 恢复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
使用说明
作为 uapi_tcxo_init、uapi_tcxo_deinit、uapi_tcxo_delay_ms、uapi_tcxo_delay_us、uapi_tcxo_suspend、uapi_tcxo_resume 接口的返回值类型。[SDK公共基础类型]