ADF435x锁相环驱动调试

问题

最近在做ADF4351锁相环模块,调试过程中遇到了很多问题,因为锁相环本身就结构复杂,所以程序写的比较花费精力。然而,在多方查找参考资料的过程中,注意到了ADI官网提供了调试软件的免费下载。

ADF4351 Evaluation Software

初始界面

这是ADI官方提供的芯片评估板配套使用软件,可以拿来很方便的计算寄存器参数。可以利用这里生成的参数直接写入MCU并发送给ADF4351。

主要内容

首先在 Select Devices and Connection 选择芯片型号,随后进入 Main Control 进行参数的设置。

对于最基础的倍频功能,只需要修改如下几个圈起来的地方即可。

例如板载晶振为24M,且输出要求240M:

RF设置

这里的多数选项都不需要额外注意,芯片手册里写的很详细。需要注意的是总公式里的 Div 并不都在 Reg0Reg1 当中配置,而是在 Reg4 当中出现。

所以其实针对初始状态进行一次设置之后,只需要修改 Reg0 Reg1 Reg4 的内容即可实现步进倍频的功能。

其余的配置参数可以任意尝试,来帮助理解对应关系。结合手册和软件就能快速掌握芯片的基本用法。

以下是我的工程中的主体代码,仅供参考。方法实现过于简单,就不一一展示了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
namespace adf4351 {
constexpr auto REG_SIZE{6};
constexpr float MAX_OUT_FREQ{4400};
constexpr float MIN_OUT_FREQ{35};

class Pll {
public:
Pll();
~Pll() = default;

bool setInput(const float& freq);

bool setFreq(const float& freq);
bool setPhase(const uint16_t& phase);
[[nodiscard]] float getFreq() const;
[[nodiscard]] uint16_t getPhase() const;

private:
float input_freq_{24};
float output_freq_{240};
uint16_t output_phase_{0};
std::array<uint32_t, REG_SIZE> reg;

// ...
}
}

ADF435x锁相环驱动调试
https://marisa9961.github.io/2024/05/12/240512-adf435x-introduce/
作者
Marisa9961
发布于
2024年5月12日
许可协议