ADRV9009 项目系统架构——手册介绍_Bronceyang131的博客-程序员秘密

技术标签: AD9361 & ADRV9009  ADRV9009  

一、9009介绍

ADRV9009 是一款双通道 RF 发送器和接收器,带有一个观察接收器。 工作频率范围为 75 MHz 至 6 GHz 。该器件在其发射器上支持高达 450 MHz 的合成带宽。该设备的接收器部分既可以作为支持高达 200 MHz 带宽的双通道接收器运行,也可以作为支持高达 450 MHz 带宽的单通道观测接收器运行。接收器部分在时分双工 (TDD) 操作中在单通道和双通道模式之间切换,在接收器时隙期间使用双通道接收器模式,在收发器时隙中使用单通道观测接收器。单通道观测接收器可以选择 ORX1_IN+/ORX1_IN− 或 ORX2_IN+/ORX2_IN− RF 输入之一。数据传输是通过 8 个 JESD204B 专用高速接口通道完成的。有四个接口通道,每个通道用于传输发射机数据和主接收机/观测接收机数据。

串行外设接口 (SPI) 在设备和基带处理器 (BBP) 之间传输和接收控制信息。 所有软件控制均通过 SPI 进行通信。 这些设备包括一个控制接口,该接口利用 GPIO 线为设备提供硬件控制。 这些 GPIO 可以配置为为不同的应用场景提供专用的功能集。 一些 GPIO 用于数字控制,而其他 GPIO 由 3.3 V 模拟电源供电以控制外部模拟组件。 这些器件还包括一组四个低速辅助 ADC,可用于监控与系统操作相关的外部电压。
AD9528 是系统的理想选择,可用于 Analog Devices, Inc. 的评估平台,因为 AD9528 提供具有多个输出的两级 PLL,以及用于多个设备同步的集成 JESD204B SYSREF 发生器。

 二、系统软件架构

通用的软件架构和ADI评估板的软件架构如下图所示。文档只提供软件的架构和API函数的大概使用方法,具体细节在Taise.chm中阅读。

 源码文件夹结构如下图所示,开发人员可以根据需要将 API 组织到自定义文件夹组织中,开发者不得修改 API 源代码的内容。

/src/app/example 文件 :包含简单的应用层的例子,headless.c是主函数,即main()函数。可作为进一步开发的初始化设备的案例。talise_config.c 文件包含 API 使用的初始化和运行时数据结构,可以由TTES软件进行配置生成。

/src/devices/talise 文件夹:包含用于构建最终用户软件系统的高级函数原型、数据类型、宏和源代码。 除了可以修改 /talise/talise_user.c 文件外,严禁用户修改 /talise 文件夹中包含的文件,因为该代码由 Analog Devices 维护。talise_user.c 文件包含接收器增益表和用户可选择的定义宏,例如,TALISE_VERBOSE 模式,它启用和禁用某些 API 消息到日志。

/src/devices/adi_hal 文件夹:为开发人员提供了插入自定义平台硬件驱动程序代码以与 API 进行系统集成的方法。 adi_hal.c 文件中的函数原型不要更改,这一点很重要。 开发人员负责在每个 adi_hal.c 函数中实现代码,以确保为平台硬件调用正确的硬件驱动程序。 在 adi_hal.c 文件中提供的示例代码中,函数是调用 Xilinx 硬件层函数、设备和资源的通用包装器Zynq-7000 SoC ZC706 平台。 ADI 公司的 API 实现尝试保持 adi_hal.c 实现的通用性,以允许简化平台交换。

 /src/doc文件夹:打开Talise.chm文件,进入函数介绍网页,查看函数的具体细节。

API 由多个 .c 和 .h 文件组成。 API 的功能分为模块化部分,以帮助组织 API 功能。因为 API 是用 C 编写的,所以没有语言修饰符来将函数标识为私有或公共函数,这在面向对象的语言中是常​​见的。公共 API 函数由带有 TALISE_functionName() 的函数名表示。应用层可以自由使用任何带有 TALISE_ 命名的 API 函数。私有辅助函数缺少 TALISE_ 前缀。私有辅助函数无意为应用层添加任何价值。 API 中的大多数函数都以 TALISE_ 为前缀,供公众使用。其中许多函数从未直接从应用程序层调用。为此,大部分初始化和其他辅助函数都与顶层 talise.c/talise.h 文件分开,以帮助开发人员专注于应用层程序最常用和最广泛使用的函数。

三、硬件抽象层(HAL)

HAL 接口是收发器 API 在 API 必须访问目标平台硬件时使用的函数库。 HAL 由 adi_hal.h 定义; 但是,此接口的实现取决于平台,并由最终用户在 adi_hal.c 文件中实现。 该架构如图 2 所示。
HAL 是 API、宏和定义的集合,旨在使上层(库和应用程序)尽可能独立于平台。 本参考手册描述了这些 HAL 组件。 Analog Devices 源代码在 /device 文件夹中的 /adi_hal 文件夹下有一个子文件夹。 adi_hal.h 头文件详细介绍了 HAL 接口和功能。 adi_hal.c 提供了 ADI 平台特定的 ADI HAL (ADIHAL) 接口实现的详细信息。 adi_hal.c 文件可作为最终用户在为自定义平台开发 HAL 函数实现时使用的示例。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_37728585/article/details/121087266

智能推荐

三大翻译牛站,在线翻译测试,又是google的最好_自由程序员的博客-程序员秘密

更多请访问 http://www.123de6.cngoogle_ad_client = "pub-6924533005275861";google_ad_slot = "4211741364";google_ad_width = 336;google_ad_height = 280;<script type="text/javascript"src="http://p

Impala之DDL、DML_墨卿风竹的博客-程序员秘密

第5章DDL数据定义5.1 创建数据库CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path];注:Impala不支持WITH DBPROPERTIE…语法[hadoop103:21000] &gt; create database db_hive &gt; WITH DBPROPERTIES('name' = 'ttt');

创新微MinewSemi带你了解物联网低功耗uwb模块_MinewSemi创新微的博客-程序员秘密

随着社会经济的发展,人们对生活质量的要求越来越高,美好的生活既需要物质保障更需要精神食粮,只有物质已经不能满足人们的需要。然而在物质生活之前还有更为基础和重要的条件,那就是安全。所以现在室内监控很流行,大家都愿意在屋里安上监控,随时查看家中情况,避免危险发生,保障自己安全。市面上盛行的监控一个重要媒介就是uwb,uwb能够精准定位,感应移动物体位置,及时检测危险因素,便捷放心。但uwb模块最重要的是编写,好的uwb模块需要强大的技术支持,创新微品牌在这方面是专业。

awk 处理字符串文本_awk处理字符串_rockstics的博客-程序员秘密

awkawk是行处理器:相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程:依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file[-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value’ ’ 引用代码块BEGIN 初始化代码块,在对每一行进行处理之前,初始化

Android 300行代码实现经典小游戏贪吃蛇_android写一个小游戏_coderghl的博客-程序员秘密

前言贪吃蛇算是一个非常经典的小游戏了,本人00后,初次游玩是在小时候用诺基亚手机进行游玩的。这次算是复刻一下经典hhh,贪吃蛇算是一个制作起来非常简单的小游戏,本文使用Kotlin语言进行开发,用Java的小伙伴可以自己对照代码转化一下,不过2021年了写Android还是有必要学学Kotlin的。后面我也会出一些Kotlin知识点文章。制作思路地图地图的创建可以使用一个二维数组,或者一维数组,这里使用二维数组,到时候操作就通过xy进行操作。蛇头蛇身和食物蛇头可以通过一个Point类进行标识,食

UBNT UVC G3与网桥共线安装及连接海康威视NVR_海康网桥安装图_robur的博客-程序员秘密

最近在做一个工程时发生了一点小意外,因为事先考察的不够周全,导致给网桥预留的点位不太合适。为了让网桥获得更好的收发信号,我们决定将一个室外摄像机的位置让给网桥。但室外摄像机也不能省略,所以只好研究一下网桥和摄像机共站、共线的安装方案。没错,UBNT的NanoStation M2网桥(不是LOCO M2),自带两个百兆以太网口,软硬件上均支持PoE Passthrough功能。也

随便推点

简单的博弈问题_Rauchy的博客-程序员秘密

前言  最近在准备机考题,之前也做过一些与博弈有关的题目,所以在这里总结几类常见的博弈问题.巴什博弈  假设有n个石子,有两个玩家first(先取)和second(后取),玩家每次可以交替取1-m个石子,取到最后一个石子的玩家获胜。现在给定m,n,问那个玩家可以胜利。  判定的条件为n%(m+1)==0,分析如下:n%(m+1)==0 second赢假设玩家first先取k个石子,...

解决window10+python3.6 unable to find vcvarsall.bat_woha1yo的博客-程序员秘密

1. 安装wheel:pip install wheel2.下载对应的Lxml文件http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 3. 执行命令完成安装pip install lxml‑4.2.0‑cp35‑cp35m‑win_amd64.whl或者1.安装vs20152.配置环境变量3.修改ms...

C语言如何判断一个字符是否为大写字母_c语言判断大小写的函数_小果沐雨的博客-程序员秘密

当输入一个字符串中是否含有大写字母时,也即 A~Z。我们可以使用C语言中的isupper() 函数用来判断。该函数需要引用ctype.h文件语法:int isupper(char c);参数 c 表示要检测的字符。例:输出一个字符串中所含有的全部大写字母代码:#include &lt;stdio.h&gt;#include&lt;string.h&gt;#include &lt;ctype.h&gt;int main(){ char str[50] = { 0 }; int i, l

有限元方法入门:有限元方法简单的二维算例(三角形剖分)_有限元三角形单元例题讲解_陆嵩的博客-程序员秘密

有限元方法简单的二维算例(三角形剖分)算例描述我们对下述椭圆边值问题 \label{eq1}{−Δu=fu|∂Ω=0{−Δu=fu|∂Ω=0\left \{\begin{aligned} &amp; -\Delta u = f\\&amp; u|_{\partial \Omega} = 0 &amp;\end{aligned}\right. 其中,Ω=(0,1)2Ω=(0,1)2\Omega = (...

redis存储与配置文件_不在人间见白头的博客-程序员秘密

redis存储redis使用了两种文件格式:全量数据和增量请求全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载增量请求文件是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,序列化的操作包括SET、RPUSH、SADD、ZADDredis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置:save、seconds、updates:save配置,多长时间内,有多少次更新操作,就将数据同步到数据文件redis.conf配置文件..

Jpa框架的分页查询和条件查询实现_jpa分页查询实现_Janson666的博客-程序员秘密

在JavaWeb项目开发中,我们常用的持久层框架就是mybatis-plus和mubatis,但是前几年的项目,很多都采用jpa框架进行数据库的增删改查操作,总结一下如何用jpa矿建实现条件查询和分页查询功能。

推荐文章

热门文章

相关标签