您好!
我当前正在尝试动态更改 AFE8000EVM 的 NCO。
(我使用 zcu102电路板、并使用我的固件而不是 EVM 软件来启动 AFE)。
它不需要快速改变频率。
因此、我决定在一个通道中仅使用一个 NCO。
我首先尝试通过在 AFE80xxPG1_TRM 手册中的2.14 RX DIG 寄存器映射中的寄存器110h ~ 113h 写入频率值来更改 NCO 值。
所需的频率值为2100MHz 和2200MHz。
但是、它不起作用。
下面是我的第一次尝试。
U8 wrVal;
u16 startAddr = 0x110;
//选择 rxDig 页面,请参见 AFE80xxPG1_TRM_SBAU354_4th_March_2021.pdf 的第120页 AFE80xx 全局寄存器映射
//选择所有 RX dig A、B、~、G、H
wrVal = 0xFF;
AFE_SPI_WRITE (0x14、wrVal);
//将 FCW_UPDATE 字设置为零
wrVal = 0x0;
AFE_SPI_WRITE (0x14C、wrVal);
//频带0 NCO 设置
wrVal =频率& 0xFF;// LSB 字节
AFE_SPI_WRITE (startAddr、wrVal);
wrVal =(频率>> 8)和0xFF;
AFE_SPI_WRITE (startAddr+1、wrVal);
wrVal =(频率>> 16)& 0xFF;// LSB 字节
AFE_SPI_WRITE (startAddr+2、wrVal);
wrVal =(频率>> 24)和0xFF;
AFE_SPI_WRITE (startAddr+3、wrVal);
//将 FCW_UPDATE 字设置为1以应用更改
wrVal = 0x1;
AFE_SPI_WRITE (0x14C、wrVal);
//取消选择 RX dig 页
wrVal = 0x0;
AFE_SPI_WRITE (0x14、wrVal);
第二、我使用了宏命令。
我测试了 TRM 中给出的宏代码0x38。
下面是我的程序。 执行宏0x38后、TUNE 系统宏已被执行。
当然,这也是失败的。
我想知道我如何从固件动态地更改 NCO 值。
谢谢你。
U8 wrVal;
INT I = 0;
//页面选择
wrVal = 0x20;
AFE_SPI_WRITE (0x18、wrVal);
//选择所有 RX dig A、B、~、G、H
wrVal = 0xFF;
AFE_SPI_WRITE (0xA0、wrVal);
// NCO 和频带选择
wrVal = 0x0;
AFE_SPI_WRITE (0xA1、wrVal);
//设置频率字
wrVal =频率& 0xFF;
AFE_SPI_WRITE (0xA2、wrVal);
//设置频率字
wrVal =(频率>> 8)和0xFF;
AFE_SPI_WRITE (0xA3、wrVal);
//设置频率字
wrVal =(频率>> 16)和0xFF;
AFE_SPI_WRITE (0xA4、wrVal);
//设置频率字
wrVal =(频率>> 24)和0xFF;
AFE_SPI_WRITE (0xA5、wrVal);
wrVal = 0x3;
AFE_SPI_WRITE (0xA6、wrVal);
//宏执行
wrVal = 0x38;
AFE_SPI_WRITE (0x193、wrVal);
while (I++< 10000);
//执行调谐系统宏
wrVal = 0x0;
AFE_SPI_WRITE (0xA0、wrVal);
wrVal = 0x0;
AFE_SPI_WRITE (0xA1、wrVal);
wrVal = 0x0;
AFE_SPI_WRITE (0xA2、wrVal);
wrVal = 0x0;
AFE_SPI_WRITE (0xA3、wrVal);
wrVal = 0x0;
AFE_SPI_WRITE (0xA4、wrVal);
wrVal = 0x0;
AFE_SPI_WRITE (0xA5、wrVal);
//宏执行
wrVal = 0x36;
AFE_SPI_WRITE (0x193、wrVal);
//页面取消选择
wrVal = 0x20;
AFE_SPI_WRITE (0x18、wrVal);