AD9361寄存器配置方法,SPI配置&PS配置(AD射频随笔02)

AD9361配置
一、FPGA纯逻辑SPI配置寄存器
通过AD936x评估软件进行寄存器配置,其中主要包括输入输出接口配置,RF PLL和BB PLL配置,时钟配置,数据接口和通道带宽配置,TX和RX滤波器设置,双工模式和增益配置等。

(1)射频输入输出接口配置如下:
在这里插入图片描述
(2)参考时钟和RF & BB PLL配置:
在这里插入图片描述
(3)数据接口和通道带宽配置
设置接口速率,RX&TX通道带宽以及3个HB滤波器的抽取和内插系数的设置,软件会根据设置自动得出ADC CLK和DAC CLK。

(4)RX端&TX端的滤波器参数设置
在这里插入图片描述在这里插入图片描述

曲线表示的是RX和TX端的模拟滤波器响应,数字滤波器响应和级联响应。
软件在设置TX和RX滤波器之后,还包括了数字接口设置(CMOS&LVDS),TDD&FDD设置,边沿采样模式设置和AGC&MGC增益设置。配置完成后保存并Create Init Script,在随后弹出的小窗口选择Low Level Scripting(文件保存类型选择为.txt)可以生成对应当前配置的完整配置参数文本。

生成文本也就是我们所需的SPI接口对AD9361寄存器的初始化配置。
在这里插入图片描述
在这里插入图片描述
二、PS端对AD9361配置

在VIVADO工程界面,如果AD9361的HDL工程已经建立好,接下来就是添加软件驱动端的C文件,我们生成bit流文件然后launch SDK,启动SDK创建空白工程,将我们工程所需的C文件复制到新建工程目录下面的src文件夹下。实现AD9361各个参数配置,对PL中的一些寄存器进行读写,控制发送数据源,通过DMA控制器对发送和接收的数据进行传输,从而实现AD9361对数据的接收、处理和发送,整个程序是使用C语言来完成的。
进入SRC下我们可以看到很多源文件和头文件,dac_core.h、dac_core.c是模数转换模块控制文件,包括模块的初始化和数据传输等;Platform.c、platform.h是Xilinx平台一些驱动文件;AD9361.c,AD9361.h,AD9361的驱动文件,common.h 通用驱动文件;包含时钟结构体和通用宏定义;
AD9361_api.c,AD9361_api.h,AD9361应用编程接口驱动文件,如AD9361的初始化函数。

整个软件的函数配置流程如图所示:
在这里插入图片描述

其中按照流程配置函数有:

console_get_command(received_cmd);
gpio_init(GPIO_DEVICE_ID);
gpio_direction(default_init_param.gpio_resetb, 1);
spi_init(SPI_DEVICE_ID, 1, 0);
ad9361_init(&ad9361_phy, &default_init_param);
ad9361_set_tx_fir_config(ad9361_phy, tx_fir_config);
ad9361_set_rx_fir_config(ad9361_phy, rx_fir_config);
dac_init(ad9361_phy, DATA_SEL_DMA, 1);
adc_capture(16384, ADC_DDR_BASEADDR);
Xil_DCacheInvalidateRange(ADC_DDR_BASEADDR, 16384);
console_get_command(received_cmd);

其中RX和TX端的FIR配置函数ad9361_set_tx_fir_config和ad9361_set_rx_fir_config可按照官方给的案例文件参数配置即可,我们需要修改通道,通路增益,收发通道时钟频率,RF中心频率以及基带频率等只需要用AD9361_InitParam定义出一个新的结构体变量,然后将这个新的结构体变量在gpio_direction()以及ad9361_init()中进行调用即可。

DAC的初始化函数的参数包括指向AD9361初始化结构体的指针,发送数据源选择以及DMA的配置。数据源可选择DDS生成的信号,通过DMA发送DDR中的信号数据,发送全0信号,发送随机数信号,发送从ADC中接收到的数据信号,发送选定设备的信号和用户数据。

其中包括了DMA传输部分,对DMAC寄存器配置,实现DDR与AD9361之间的数据传输和直接访问功能,DAC中DMA初始化配置是利用dac_dma_write()函数向dma特定地址中写入参数值,其中包括:

dac_dma_write(AXI_DMAC_REG_CTRL, 0);//初始化DMA
dac_dma_write(AXI_DMAC_REG_CTRL, AXI_DMAC_CTRL_ENABLE);//DMA通道使能
dac_dma_write(AXI_DMAC_REG_SRC_ADDRESS, DAC_DDR_BASEADDR);//设置DMA的传输源地址为DDR的基地址
dac_dma_write(AXI_DMAC_REG_SRC_STRIDE, 0x0);//设置传输行字节数
dac_dma_write(AXI_DMAC_REG_X_LENGTH, length - 1);//传输总字节数
dac_dma_write(AXI_DMAC_REG_Y_LENGTH, 0x0);//传输字节行数
dac_dma_write(AXI_DMAC_REG_START_TRANSFER, 0x1);//传输开始请求

在ADC初始化和输入捕获设置时,adc_init(struct ad9361_rf_phy *phy),adc_capture(uint32_t size, uint32_t start_address),首先初始化时包括了指向AD9361的射频设备结构体的指针,对ADC的捕获设置时,需设置捕获的数据量以及存储捕获数据的目的地址。同时同DAC一样进行ADC的DMA初始化配置,利用adc_dma_write()和adc_dma_read()函数进行dma特定地址的读出和写入参数操作。其中ADC的DMA的使能,初始化,传输地址和字节设置与DAC相似,但是有两个中断状态的读取和写入操作如下:

adc_dma_read(AXI_DMAC_REG_IRQ_PENDING, &reg_val);  //读取中断状态
adc_dma_write(AXI_DMAC_REG_IRQ_PENDING, reg_val);  //写入中断状态寄存器,使中断寄存器初始化
  • 13
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
ad9361是一款由Analog Devices开发的高性能射频收发器芯片。它广泛应用于无线通信系统中,可以实现无线电频段的收发功能。在使用ad9361之前,需要对其内部的寄存器进行配置,以适应特定的应用需求。 ad9361寄存器配置顺序的具体过程如下: 1. 初始化SPI接口:ad9361通过SPI接口进行寄存器配置和通信,首先需要初始化SPI接口,包括设置SPI的时钟频率、SPI模式、数据位宽等。 2. 主控寄存器配置:通过SPI接口将特定的值写入主控寄存器,包括设置操作模式(如收发模式或全双工模式)、时钟源选择、增益控制、功率放大器控制等。 3. RF接口配置:通过SPI接口将特定的值写入RF接口相关寄存器,包括设置射频输入输出接口(如天线端口或接收器输入)、射频增益控制、射频带宽设置等。 4. 时钟和采样率配置:通过SPI接口将特定的值写入时钟和采样率配置寄存器,包括设置时钟频率、数据采样率等。 5. LO(Local Oscillator)配置:通过SPI接口将特定的值写入LO相关寄存器,包括设置LO频率、LO分频等。 6. 数字接口配置:通过SPI接口将特定的值写入数字接口相关寄存器,包括设置数据接收发送模式(如I2S或SDR模式)、数据格式(如数据位宽、同步模式等)。 7. 附加功能配置:通过SPI接口将特定的值写入附加功能相关寄存器,包括RF衰减器控制、电源管理、温度传感器控制等。 8. 完成配置:所有寄存器配置完成后,将配置写入ad9361,使其按照配置开始正常工作。 总之,ad9361寄存器配置顺序主要包括初始化SPI接口、主控寄存器配置、RF接口配置、时钟和采样率配置、LO配置、数字接口配置、附加功能配置和完成配置等步骤。根据具体的应用需求,可以根据这个顺序对ad9361进行寄存器配置
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值