DW1000芯片的RF测试与校准(四):晶振校准
DW1000芯片的RF测试与校准:晶振校准
说明
在之前的那篇频偏校准的博客中,我已经介绍过一次如何校准晶振了。那篇博客中的晶振校准使用API进行操作,方法简单方便,实用性高。本篇仅作做补充,将寄存器设置具体步骤做下说明,本质上和用API库的方法一样。
校准原理
校准原理比较简单,芯片晶振部分电路内置了两个可以软件调整大小的电容。通过软件设置相关修调寄存器值,便可轻松调整38M晶振电路参数,使其频偏最小。
频偏观察方法
38.4 MHz晶体的振荡频率不能直接观测到,因为直接使用仪器探头探测XTAL1和XTAL2会引入干扰。因此合适的方法是通过使用频谱分析仪或频率计数器观察发射器的输出来推断晶体振荡频率。具体为设置发射机发射载波信号,通过观察载波信号的频谱来对晶振的频谱做修调。相关方法在前面博客中已经介绍过多次,不再赘述
载波信号建议配置为信道5(即6489.6MHz)频率越高,就越容易观察到输出中的阶跃变化。
具体流程
-
复位
校准前应先复位芯片,保证状态清空 -
发射机配置流程:
按照以下步骤配置发射器,然后在频谱分析仪或频率计数器上监控射频输出。
-
Sub-Register 0x28:00 – RF_CONF
-
写 0x00000000 到Sub-Register 0x36:04 – PMSC_CTRL1
-
根据选择的信道写对应的值到Sub-Register 0x28:0C– RF_TXCTRL,例如信道五写 0x1E3FE0
-
同样根据所选信道写合适的值到Register file: 0x1E – Transmit Power Control
-
也是根据所选信道写合适的值到 Sub-Register 0x2B:07 – FS_PLLCFG,例如信道五写0x0800041D
-
还是根据所选信道写合适的值到Sub-Register 0x2B:0B – FS_PLLTUNE,例如信道五写 0xBE
-
将0x22写入PMSC_CTRL0以启用适当的时钟源
-
写入0x000000000到预留寄存器 Sub-Register 0x36:26 – PMSC_TXFSEQ
-
Sub-Register 0x28:00 – RF_CONF
有设置不清楚的,可以在看看文档中对应寄存器的说明。事实上这套流程作用只是让芯片发载波,在API库中有写好的例程,调用几个API接口即可实现,这里不推荐用户一个个去手动配置寄存器
- 使能载波模式
设置Sub-Register 0x2A:0C – TC_PGTEST 为0x13来使能载波模式
- 将修剪寄存器设置为中间值,例如0x0F。同时寄存器其他与校准晶振无关的设置为保持不变,具体请参考Sub-Register 0x2B:0E – FS_XTALT在文档中的说明
即设置寄存器为0x6f
- 调整校准值
在仪器上观察频偏,随后调整寄存器值,直到获取所需的频率。一般来讲,修调制和频偏为线性关系(如下图)
trim code 为修调寄存器值十进制形式,一般初始频偏偏高,则需要将寄存器值调高。反正亦然
- 保存修调值
在得到合适的修调值后,可以将其保存到OTP区域中,操作方法参考另外一篇博客。另外用户每次上电后都应该从OTP读出修调值并加载到修调寄存器,保证收发机每次工作都处于最佳状态。另外修调寄存器的值每次休眠时都会保存到AON域中,唤醒后重新加载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现