DW1000芯片的RF测试与校准(五):发射功率校准
说明
在前面的博客中,已经介绍过发射功率的测量和设置了,其实发射功率的校准基本上也没什么可说了。基本就是和晶振校准流程类似,通过设置芯片寄存,调整测出一个合适的功率值,能保证发射机发射功率不超过标准要求的41.3dBm/Mhz。
校准基本流程
和晶振校准类似,发射功率校准流程如下,:
由于芯片发射功率有手动和Smart两种设置模式,所以校准流程也对应有两套。而关于发射功率寄存器配置和设置芯片进入调制波发射模式进行测量的方法在之前的博客已经介绍过,这里不再赘述,有不懂得可以回去再看下之前的博客。
手动模式的校准
- 复位
校准开始前,应先复位芯片,使其处于已知状态
- 配置芯片发射信道、速率、默认发射功率等参数
-
根据要测试的信道,将对应值写到 Sub-Register 0x28:0C– RF_TXCTRL,例如信道2写入0x045CA0
-
写入合适的值到Register file: 0x1E – Transmit Power Control的TX_POWER,例如信道2、16MhzPRF写入 0x75757575
-
根据要测试的信道,将对应值写到Sub-Register 0x2B:07 – FS_PLLCFG,例如信道2写入0x08400508
-
根据要测试的信道,将对应值写到Sub-Register 0x2B:0B – FS_PLLTUNE,例如信道2写入0x26
-
根据要测试的信道,将对应值写到Sub-Register 0x2A:0B –TC_PGDELAY,例如信道2写入0xc2
-
Sub-Register 0x28:00 – RF_CONF写入 0x05FFF00
-
根据要测试的信道,将对应值写到Register file: 0x1F – Channel Control,例如信道2、16MhzPRF、前导码3写入0x18C40022
-
往发送缓存寄存器Register file: 0x09 – Transmit Data Buffer中写入发送数据,例如0x000000000000000000000000C2DEC1DE
-
写入合适的值到Register file: 0x08 – Transmit Frame Control,例如16byte帧长、850kbps、16MhzPRF、256个符号前导码写入 0x25A010
- 设置芯片进行重复帧发射
为了方便查看频谱,需要芯片一直重复无间断的发送信号。
-
通过设置 Sub-Register 0x2F:24 – Digital Diagnostics Test Mode Control的 TX_PSTM,使芯片出于连续发射模式
-
通过设置 Sub-Register 0x2F:24 – Digital Diagnostics Test Mode Control的 DX_TIME设置发送帧间隔,例如1ms间隔写入 0x0001E780
- 启动调制波发射
设置完成后,控制Register file: 0x0D – System Control Register启动发射
- 频谱仪设置
参考另一篇测量调制波的博客说明,这里不再赘述
- 调制发射功率
发射功率以手册中Register file: 0x1E – Transmit Power Control寄存器推荐参数为默认值,在此基础上进行微调。调整发射功率直到低于相关法规要求(通常是41.3dBm/Mhz),寄存器每一位的作用和如何调大调小在之前的博客中已说明过,这里不再赘述。
- 保存参数到OTP
校准成功后,相关参数保存到OTP中,用于后续芯片掉电后重新上电时重新加载到配置寄存器。相关寄存器休眠后会自动保存到AON域,唤醒后自动加载回来。
相关操作不方法在之前的博客中已说明过,这里不再赘述。
- 总结
上述流程要操作到的寄存器如下表:
该过程非常繁琐,在API库中有实现好的API接口和使用例程,调用几个API即可实现上述功能,相关介绍参考之前的调制波测量方法的博客。这里的步骤只做介绍,不建议跟着一起做,如果有信道参数和上述不一致的,再根据每个寄存器说明写入合适的值。
Smart 模式下校准
该模式下的校准和手动模式基本一致,区别只在于重复帧发射这里
- 重复帧设置
重复帧不再设置为连续不动的帧,而是每一毫秒只发一帧。
配置Sub-Register 0x2F:24 – Digital Diagnostics Test Mode Control的 TX_PSTM和 DX_TIME
例如每毫秒发送一帧,DX_TIME寄存器应写入0x0001E780
- 调整发射功率
根据 7.2.31.2 – Smart Transmit Power Control寄存器说明,应该根据帧的长度来调整发射功率直到符合要求。
随后和手动模式一样,记录校准参数并保存到OTP中。
其他调制参数
其实对于大多数应用或者设计,发射功率其实可以不调整也没关系。由于实际电路带来的各自插损,对信号的衰减使得其很少会超过41.3dBm/Mhz。但对于调制波的带宽宽度和平坦度,可以通过如下寄存器进行调制。
- TXMTUNE field of Sub-Register 0x28:0C– RF_TXCTRL,用于调制发射混频器
- TXMQ field of Sub-Register 0x28:0C– RF_TXCTRL,用于调整发射混频器的Q因子
- Sub-Register 0x2A:0B – TC_PGDELAY,用于调整脉冲宽度和增强频谱带宽
用户需仔细参考相关寄存器说明,以默认参数为起点,对参数进行微调,直到满足要求。
参考资料
上述过程其实看着还是相对简单,对于发射功率的校准和带宽的补偿,在原厂提供的应用手册中有两篇文档
- 《APS023_Part-1_Transmit_Power_Calibration__Management》
- 《APS023_Part_2_TX_Bandwidth_and_Power_Compensation》
进行了更细致复杂的说明,本篇文章更多起到一个入门的作用,能让读者可以简单的校准下发射功率。但对于要求更高更复杂的系统,或者想对校准原理更进一步了解的,建议还是仔细阅读这两份文档。
在这两份文档中,主要针对如下内容进行了更进一步说明:
- 如何在测量调制波时更精确的把帧的各部分功率测量出来
- 手动和Smart模式校准流程在不同帧长下更细致的调整流程
- 针对温度因素对发射功率和带宽的影响和补偿方案
事实上,我个人认为相关校准流程要求还是有点复杂的,同时付出的成本和收益也不是很成正比。普通用户很少能看到有人会真的能把这套流程机制搞懂(包括我),更别谈付之实践。当然也有可能是我见识短浅,接触不到这些高水平应用。如果有相关校准需求经历的,欢迎一起交流学习。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现