主题中讨论的其他器件:SysConfig
大家好!
软件:示例"project zero"项目。 香草、无修改。
硬件:cc26x2r launchpad。
在函数"project_zero_init ()"末尾修改以下代码可让 我的示波器看到32 kHz 晶体时钟信号重新路由到右上角的 GPIO 12。 整洁! 感谢 Clement。
IOCPortConfigureSet(12, IOC_PORT_AON_CLK32K, IOC_STD_OUTPUT); AONIOC32kHzOutputEnable();
该信号或多或少正常、但对于我们的用途而言、它不够准确。 我们希望根据器件调整它。 因此、就在 前一个代码之前、我们添加:
uint32_t subSecInc = 0x20000; HWREG( AUX_WUC_BASE + AUX_WUC_O_RTCSUBSECINC0 ) = (( subSecInc ) & AUX_WUC_RTCSUBSECINC0_INC15_0_M ); HWREG( AUX_WUC_BASE + AUX_WUC_O_RTCSUBSECINC1 ) = (( subSecInc >> 16 ) & AUX_WUC_RTCSUBSECINC1_INC23_16_M ); HWREG( AUX_WUC_BASE + AUX_WUC_O_RTCSUBSECINCCTL ) = AUX_WUC_RTCSUBSECINCCTL_UPD_REQ; while( ! ( HWREGBITW( AUX_WUC_BASE + AUX_WUC_O_RTCSUBSECINCCTL, AUX_WUC_RTCSUBSECINCCTL_UPD_ACK_BITN ))); HWREG( AUX_WUC_BASE + AUX_WUC_O_RTCSUBSECINCCTL ) = 0;
遗憾的是、此代码会卡在 while 循环中。 我怀疑 AUX_WUC_O_RTCSECINCCTL 的偏移量是错误的、因此从不满足 UPD_REQ、UPD_ACK 组合的要求。
我访问了一个类似的线程,但那里的答案没有让我走过去循环 . 为了方便其他人,我在此附上。
e2e.ti.com/.../cc1310-c1310-hang-on-change-rtc-sub-second-increment
我的目的是将值 subSecInc、例如修改为0x20004、以补偿晶体信号并获得更高的精度。 只能在代码开始执行此操作。 我们可以通过测试来获取该0x20004值或类似值、方法是每个器件使用频率计数器、然后加载它。
那么、我的问题有两个:
- Code Composer Studio 中的寄存器视图没有向我显示任何 AUX_WUC_O_RTCSUBSECINCCTL、我的偏移地址是否正确? 请查看此帖子末尾的#defines。
- 这是放置此校准代码的正确位置吗?
请告诉我您对这两个问题的看法。 接下来是#defines。
#include <driverlib/aon_ioc.h> #define AUX_WUC_BASE 0x400C6000 #define AUX_WUC_O_RTCSUBSECINC0 0x0000003C #define AUX_WUC_O_RTCSUBSECINC1 0x00000040 #define AUX_WUC_O_RTCSUBSECINCCTL 0x00000044 #define AUX_WUC_RTCSUBSECINC1_INC23_16_M 0x00FF0000 #define AUX_WUC_RTCSUBSECINC0_INC15_0_M 0x0000FFFF #define AUX_WUC_RTCSUBSECINCCTL_UPD_ACK_BITN 0x02 #define AUX_WUC_RTCSUBSECINCCTL_UPD_REQ 0x01
祝您度过美好的一天!