IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> AD9361寄存器配置方法,SPI配置&PS配置(AD射频随笔02) -> 正文阅读

[嵌入式]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);  //写入中断状态寄存器,使中断寄存器初始化
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:27:52  更:2021-09-29 10:29:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:22:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码