【AD9361 数字接口CMOS LVDSSPI】D 串行数据 SPI

2023-10-30 10:28

本文主要是介绍【AD9361 数字接口CMOS LVDSSPI】D 串行数据 SPI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【AD9361 数字接口CMOS &LVDS&SPI】D部分 接续
【AD9361 数字接口CMOS &LVDS&SPI】A 并行数据CMOS

串行外设接口(SPI)

SPI总线为AD9361的所有数字控制提供机制。每个SPI寄存器的宽度为8位,每个寄存器包含控制位、状态监视器或其他控制器件所有功能的设置。以下介绍此接口的细节。

SPI功能层

可以通过在SPI配置寄存器中设置位值来配置SPI总线。该寄存器是对称的;即 D6 等效于 D1,D5 等同于 D2(D4 和 D3 未使用)。该器件在上电时的默认模式为MSB优先寻址,但由于这种对称性,可以接受对SPI配置寄存器的LSB优先写入。对称位是或在一起的,因此设置一个位会在对中设置两个位。当 D5 和 D2 保持低电平时,位顺序为 MSB 优先,而当置高电平时,位顺序交换为 LSB 优先。正确配置后,所有后续寄存器写入都必须遵循所选格式。
默认情况下,总线配置为 4 线接口。如果 D6 和 D1置为高电平,则 SPI 总线配置为 3 线接口。
D7 和 D0 在置高时将所有寄存器异步复位为默认值,并且必须先清除这些位,然后才能更改其他寄存器。
以下将介绍每个SPI总线信号。

[1] SPI_ENB

SPI_ENB是从BBP驱动到AD9361的总线使能信号。SPI_ENB在第一个SPI_CLK上升沿之前被驱动为低电平,通常在最后一个SPI_CLK下降沿之后再次被驱动为高电平。AD9361在SPI_ENB为高电平时忽略时钟和数据信号。如果AD9361是SPI总线上唯一的器件,则可以SPI_ENB连接为低电平。
当该输入为高电平时,SPI_DO 和 SPI_DI 引脚转换至高阻抗状态。如果在任何通信周期内被驱动为高电平,则该周期将暂停,直到SPI_ENB重新激活为低电平。

[2] SPI_CLK

SPI_CLK是由BBP驱动到AD9361的接口参考时钟。它仅在SPI_ENB低时处于活动状态。最大SPI_CLK频率为 50 MHz。

[3] SPI_DI、SPI_DO和SPI_DIO

配置为4线式总线时,SPI利用两个数据信号:SPI_DI和SPI_DO。 SPI_DI是从BBP驱动到AD9361的数据输入线,SPI_DO是从AD9361到BBP的数据输出。
配置为 3 线总线时,SP_DI 用作接收和发送串行数据的双向数据信号。在3线配置中,该信号在本节中称为SP_DIO,以区分这两种配置。
数据信号在SPI_CLK的上升沿发射,并由BBP和AD9361在SPI_CLK的下降沿进行采样。SPI_DI(或SPI_DIO)在所有事务期间将控制字段从BBP传送到AD9361,并在写入事务期间将写入数据字段传送到AD9361。SPI_DO(或SPI_DIO)在读取事务期间将返回的读取数据字段从AD9361传送到BBP。
AD9361在这些引脚上不提供任何弱的上拉或下拉。当SPI_DO处于非活动状态时,它以高阻抗状态浮动。如果SPI_DO上始终需要有效的逻辑状态,则应在PCB上添加一个外部弱上拉/下拉。

SPI数据传输协议

AD9361 SPI是一款灵活的同步串行通信总线,可与许多工业标准微控制器和微处理器无缝接口。串行 I/O 与大多数同步传输格式兼容,包括摩托罗拉 SPI 和英特尔® SSR 协议。AD9361的控制场宽度限制为16位,允许多字节IO操作。AD9361不能用于控制总线上的其他器件,它只能作为从器件工作。
通讯周期分为两个阶段。阶段1是控制周期,即将控制字写入AD9361。控制字为AD9361串行端口控制器提供有关数据场传输周期的信息,即通信周期的第2阶段。阶段 1 控制字段定义即将进行的数据传输是读取还是写入。它还定义了正在访问的寄存器地址。

第 1 阶段指令格式
16 位控制字段包含以下信息:
**

W/Rb 指令字的第 15 位确定在指令字节写入之后是进行读取还是写入数据传输。逻辑高电平表示写入操作;逻辑零表示读取操作。


NB2、NB1、NB0 — 指令字的位 [14:12] 指定在 IO 操作的第 2 阶段期间传输的字节数。下表详细说明了每个 NB[2:0] 组合在第 2 阶段传输的字节数。
在这里插入图片描述


[D11:D10] - 指令字的位 [11:10] 未使用。


[D9:D0] — Bits[9:0] 指定 IO 操作第 2 阶段期间数据传输的起始字节地址。


所有字节地址(包括起始地址和内部生成的地址)都假定为有效。也就是说,如果访问了无效地址(未定义的寄存器),IO 操作将继续进行,就好像地址空间有效一样。对于写入操作,写入的位被丢弃,读取操作会导致输出端的逻辑为零。

单字节数据传输

当 NB2、NB1 和 NB0 均为零时,选择单字节数据传输。在这种情况下,地址位后面的8位包含向AD9361寄存器写入或读取的数据。一旦传输了最后一个位,数据信号将返回到其空闲状态,SPI_ENB信号变为高电平以结束通信会话。

多字节数据传输

当 NB2、NB1 和 NB0 均为非零时,选择多字节数据传输。在此模式下传输的数据的格式和顺序取决于器件是配置为 LSB 优先还是 MSB 优先数据传输。
对于LSB模式下的多字节数据传输,用户写入一个指令字节,其中包含最低有效字节的寄存器地址。SPI内部字节地址生成器针对多字节通信周期中所需的每个字节递增。数据按从最低到最有效的顺序写入,因为字节地址也是按从最低到最有效的顺序生成的。

对于 MSB 模式下的多字节数据传输,用户编写一个指令字,其中包含最高有效字节的寄存器地址。串行端口内部字节地址生成器针对多字节通信周期所需的每个字节递减。数据按最高到最低有效顺序写入,因为字节地址是按最高到最低有效顺序生成的。

示例:MSB-First 多字节传输

要完成 4 字节写入,从 MSB 第一格式的寄存器0x02A开始,应用指令字 1_011_000000101010(二进制)。该指令指示AD9361 SPI控制器执行4字节的写传输,起始字节地址为0x02A。写入第一个数据字节后,内部字节地址生成逻辑递减为0x029,即第二个字节的目的。写入第二个字节后,内部字节地址生成逻辑递减为 0x028,即第三个字节的目的地。

写入第三个字节后,内部字节地址生成逻辑递减为 0x027,这是最后一个字节的目标。写入第四个字节后,IO 通信周期完成,SPI_CLK上接下来的 16 个下降时钟周期用于为下一个指令字提供时钟。如果不需要进一步的通信,则数据信号返回到其空闲状态,SPI_CLK变为低电平,SPI_ENB信号变为高电平以结束通信会话。

示例:LSB 优先多字节传输

要完成 4 字节写入,从寄存器0x02A开始,采用 LSB first 格式,应用 010101000000_110_1(二进制)指令字。该指令指示AD9361 SPI控制器执行4字节的写传输,起始字节地址为0x02A。写入第一个数据字节后,内部字节地址生成逻辑递增到 0x02B,这是第二个字节的目标。写入第二个字节后,内部字节地址生成逻辑递增为 0x02C,这是第三个字节的目标。
写入第三个字节后,内部字节地址生成逻辑递增为 0x02D,这是最后一个字节的目标。写入第四个字节后,IO 通信周期完成,SPI_CLK上接下来的 16 个下降时钟周期用于为下一个指令字提供时钟。如果不需要进一步的通信,则数据信号返回到其空闲状态,SPI_CLK变为低电平,SPI_ENB信号变为高电平以结束通信会话。

时序图

下图分别详细说明了单寄存器写操作和单寄存器读操作的SPI总线波形。在第一张图中,值 0x55 写入寄存器0x15A。在第二个值中,读取寄存器0x15A,并0x55设备返回的值。如果使用 3 线总线执行相同的操作,则A图中的 SPI_DO 线将被消除,B图 中的 SPI_DI 和 SPI_DO 线将合并在 SPI_DI 线上。
在这里插入图片描述
A图 写时序
在这里插入图片描述
B图 读时序

下表列出了SPI总线的时序规格。这些参数之间的关系如C图 所示。这张图
显示了标记了这些参数的 3 线 SPI 总线时序图。请注意,这是一个单次读取操作,因此总线就绪
从AD9361驱动数据后的参数未显示在图中。
在这里插入图片描述
在这里插入图片描述C图 3线SPISPI读时序

参考源文件 :《UG-570 AD9361 Reference Manual 》
参考源文件 :《UG-671 AD9361 Register Map Reference Manual》

这篇关于【AD9361 数字接口CMOS LVDSSPI】D 串行数据 SPI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/307266

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4