【FR801xH】富芮坤FR801xH之RTC

00. 目录

01. FR801xH概述

在这里插入图片描述

FR801xH 系列芯片是面向SOC(片上系统),易于快速开发的低功耗蓝牙芯片。基于 Freqchip 的蓝牙智能固件和协议栈的支持,完全兼容蓝牙 V5.3(LE 模式)协议。同时用户可以基于芯片内置的 ARM CorteM3 嵌入式 32 位高性能单片机开发各种应用程序。

蓝牙智能固件包括 L2CAP 服务层协议、安全管理器 (SM)、属性协议(ATT)、通用属性配置文件 (GATT)和通用访问配置文件(GAP)。此外,还 支持应用程序配置文件,例如接近度、健康温度计、 心率、血压、血糖、人机界面设备(HID)和 SDK (包括驱动程序、OS-API 等)。SDK 还集成了用于网络应用程序的 SIG Mesh 协议。

采用 Freqchip 的创新技术,将 PMU(锂电池充电 器+LDO)、带 XIP 模式的 QSPI FLASH ROM、 I2C、UART、GPIO、ADC、PWM 集成在一块芯片中,为客户提供:

  • 竞争力的功耗
  • 稳定的蓝牙连接
  • 极低的 BOM 成本

02. FR801xH功能框图

在这里插入图片描述

03. RTC相关类型

位于 components\driver\include\driver_rtc.h。

#define PMU_REG_RTC_SETTINGS        0x3d
#define PMU_RTC_EN                  CO_BIT(0)
#define PMU_RTC_UPDATE_EN           CO_BIT(1)
#define PMU_RTC_ALARM_A_EN          CO_BIT(2)
#define PMU_RTC_ALARM_B_EN          CO_BIT(3)
#define PMU_RTC_ALMA_INT_EN         CO_BIT(4)
#define PMU_RTC_ALMB_INT_EN         CO_BIT(5)
#define PMU_RTC_ALMA_PO_EN          CO_BIT(6)   //rtc alarm a power on
#define PMU_RTC_ALMB_PO_EN          CO_BIT(7)

#define PMU_REG_RTC_UPDATE_0        0x3e
#define PMU_REG_RTC_UPDATE_1        0x3f
#define PMU_REG_RTC_UPDATE_2        0x40
#define PMU_REG_RTC_UPDATE_3        0x41

#define PMU_REG_RTC_ALMA_VALUE_0    0x42
#define PMU_REG_RTC_ALMA_VALUE_1    0x43
#define PMU_REG_RTC_ALMA_VALUE_2    0x44
#define PMU_REG_RTC_ALMA_VALUE_3    0x45

#define PMU_REG_RTC_ALMB_VALUE_0    0x46
#define PMU_REG_RTC_ALMB_VALUE_1    0x47
#define PMU_REG_RTC_ALMB_VALUE_2    0x48
#define PMU_REG_RTC_ALMB_VALUE_3    0x49

#define PMU_REG_RTC_VALUE_0    0x72
#define PMU_REG_RTC_VALUE_1    0x73
#define PMU_REG_RTC_VALUE_2    0x74
#define PMU_REG_RTC_VALUE_3    0x75

enum rtc_idx_t
{
    RTC_A,
    RTC_B,
};

注意:

RTC 默认支持低功耗模式。

04. RTC相关API

4.1 rtc_init

/*********************************************************************
 * @fn      rtc_init
 *
 * @brief   Initialize rtc module.
 *
 * @param   None
 *
 * @return  None.
 */
void rtc_init(void);
功能:
	初始化 pmu_rtc。调用任何pmu_rtc函数前,需要首先调用该函数。
参数:
	None
返回值:
	None

4.2 rtc_alarm

/*********************************************************************
 * @fn      rtc_alarm
 *
 * @brief   start running a rtc.
 *
 * @param   rtc_idx     - RTC_A or RTC_B, @ref rtc_idx_t
 *          count_ms    - timer duration with ms as unit. range [1,4294967]
 *
 * @return  None.
 */
void rtc_alarm(enum rtc_idx_t rtc_idx, uint32_t count_ms);
功能:
	启动某个 rtc 定时器。
参数:
	rtc_idx  -  要启动的 pmu_rtc。@ref enum rtc_idx_t
	count_ms  -  要启动的 pmu_rtc 的定时时间。单位 ms。范围 1~4294967
返回值:
	None

4.3 rtc_disalarm

/*********************************************************************
 * @fn      rtc_disalarm
 *
 * @brief   stop a running rtc.
 *
 * @param   rtc_idx     - RTC_A or RTC_B, @ref rtc_idx_t
 *
 * @return  None.
 */
void rtc_disalarm(enum rtc_idx_t rtc_idx);
功能:
	停止某个 rtc 定时器。
参数:
	rtc_idx  要启动的 pmu_rtc。@ref enum rtc_idx_t
返回值:
	None

4.4 rtc_isr_ram

__attribute__((weak)) __attribute__((section("ram_code"))) void rtc_isr_ram(uint8_t rtc_idx)
功能:
	pmu_rtc 中断 weak 函数。用于需要重定义来获取中断的入口
参数:
	rtc_idx RTC 中断源。RTC_A,RTC_B 分别表示 2 个 RTC 的中断。
返回值:
	None    
    

05. RTC程序示例

程序示例

#include "driver_rtc.h"
#include "time_rtc.h"

__attribute__((section("ram_code"))) void rtc_isr_ram(uint8_t rtc_idx)
{
    if (rtc_idx == RTC_A)
    {
        co_printf("RTC_A\r\n");
    }
    if (rtc_idx == RTC_B)
    {
        co_printf("RTC_B\r\n");
    }
}

void peripheral_demo(void)
{
    co_printf("rtc demo\r\n");
    rtc_init();
    rtc_alarm(RTC_A, 1);
    rtc_alarm(RTC_B, 1000);
}

运行结果


[16-17-12-138]收←◆freqchip
[16-17-12-201]收←◆user_entry_after_ble_init

[16-17-12-217]收←◆rtc demo
RTC_A

[16-17-13-199]收←◆RTC_B

06. 附录

内容概要:论文提出了一种基于空间调制的能量高效分子通信方案(SM-MC),将传输符号分为空间符号和浓度符号。空间符号通过激活单个发射纳米机器人的索引来传输信息,浓度符号则采用传统的浓度移位键控(CSK)调制。相比现有的MIMO分子通信方案,SM-MC避免了链路间干扰,降低了检测复杂度并提高了性能。论文分析了SM-MC及其特例SSK-MC的符号错误率(SER),并通过仿真验证了其性能优于传统的MIMO-MC和SISO-MC方案。此外,论文还探讨了分子通信领域的挑战、优势及相关研究工作,强调了空间维度作为新的信息自由度的重要性,并提出了未来的研究方向和技术挑战。 适合人群:具备一定通信理论基础,特别是对纳米通信和分子通信感兴趣的科研人员、研究生和工程师。 使用场景及目标:①理解分子通信中空间调制的工作原理及其优势;②掌握SM-MC系统的具体实现细节,包括发射、接收、检测算法及性能分析;③对比不同分子通信方案(如MIMO-MC、SISO-MC、SSK-MC)的性能差异;④探索分子通信在纳米网络中的应用前景。 其他说明:论文不仅提供了详细的理论分析和仿真验证,还给出了具体的代码实现,帮助读者更好地理解和复现实验结果。此外,论文还讨论了分子通信领域的标准化进展,以及未来可能的研究方向,如混合调制方案、自适应调制技术和纳米机器协作协议等。
RTC热敏电阻是一种特殊类型的热敏电阻,其阻值随温度的变化而变化。在提供的引用中,RTC被归类为热敏电阻的一种[^1]。根据热敏电阻的特性,RTC可能表示一种正温度系数(PTC)或负温度系数(NTC)的热敏电阻。然而,具体到型号如XH1和XH2,引用中并未直接提及这些型号的具体信息。 ### 热敏电阻的基本特性 热敏电阻可以分为两大类:正温度系数(PTC)和负温度系数(NTC)。 - **NTC热敏电阻**:随着温度升高,电阻值降低。 - **PTC热敏电阻**:随着温度升高,电阻值增加。 对于RTC热敏电阻,通常会涉及以下参数: - **额定电阻值**:在特定温度下的标称电阻值。 - **温度系数**:描述电阻值随温度变化的程度。 - **工作温度范围**:热敏电阻能够正常工作的温度区间。 - **响应时间**:热敏电阻对温度变化的反应速度。 ### XH1 和 XH2 的可能定义 尽管引用中未明确提及XH1和XH2的具体定义,但可以根据热敏电阻的一般特性推测: - **XH1** 和 **XH2** 可能是特定制造商生产的RTC热敏电阻型号,具有不同的电阻值、温度系数或工作温度范围。 - 这些型号的具体参数通常会在制造商提供的数据手册中详细列出,包括但不限于: - 额定电阻值及其公差。 - 温度范围。 - 稳定性与可靠性指标。 - 尺寸与封装形式。 如果需要获取XH1和XH2的精确规格书或数据手册,建议参考以下方法: 1. 查找相关制造商的产品目录或官方网站。 2. 使用专业数据库或文献检索工具(如IEEE Xplore、Google Scholar)查找相关的技术文档。 3. 联系供应商或分销商以获取详细的规格信息。 ### 示例代码:模拟RTC热敏电阻阻值计算 以下是一个简单的Python代码示例,用于计算NTC热敏电阻的阻值变化,假设使用Steinhart-Hart方程[^1]: ```python import math def calculate_resistance(T, R0, T0, B): """ 计算NTC热敏电阻的阻值 :param T: 当前温度 (单位: 摄氏度) :param R0: 参考温度下的阻值 (单位: 欧姆) :param T0: 参考温度 (单位: 摄氏度) :param B: 热敏电阻的B值 :return: 当前温度下的阻值 (单位: 欧姆) """ T += 273.15 # 转换为开尔文 T0 += 273.15 # 转换为开尔文 return R0 * math.exp(B * (1 / T - 1 / T0)) # 示例参数 R0 = 10000 # 初始阻值 10kΩ T0 = 25 # 参考温度 25°C B = 3950 # B值 T = 50 # 当前温度 50°C resistance = calculate_resistance(T, R0, T0, B) print(f"在 {T}°C 下的阻值为 {resistance:.2f} Ω") ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沧海一笑-dj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值