当前位置:   article > 正文

AD9361从入门到入土系列----AD9361数据传输串行外设接口(SPI)

ad9361

因最近公司需要,借此机会和大家一起学习AD9361

制作不易,记得三连哦,给我动力,持续更新!

工程文件下载:纯硬件SPI配置AD9361   提取码:g9jy

----------------------------------------------------------------------------------------

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

SPI功能层:

可通过设置SPI寄存器0x000中的位值来配置SPI总线。寄存器0x000是对称的;即D7等效于D0,D6等效于D1,D5等效于D2(D4和D3未使用)。器件在默认模式下上电(MSB优先寻址),但由于这种对称性,可以接受LSB优先写入0x000。对称的位被“或”运算在一起,因此设置一位将两位都设置在一对中。当D5和D2被清除时,位顺序是MSB-first,而当这些位被设置时,位顺序被交换为LSB-first。正确配置后,所有后续寄存器写入必须遵循所选格式。

总线默认配置为4线接口。如果位D6和D1置位,则SPI总线配置为3线接口。位D7和D0在置位时异步地将所有寄存器复位到它们的默认值,并且在其他寄存器可以改变之前必须清除这些位。寄存器0x000的默认状态为0x00。

SPI总线信号:

SPI_ENB

SPI_ENB是从BBP驱动到AD9361的总线使能信号。SPI_ENB在第一个SPI_CLK上升沿之前被驱动为低电平,在最后一个SPI_CLK下降沿之后通常再次被驱动为高电平。当SPI_ENB为高电平时,AD9361忽略时钟和数据信号。如果AD9361是SPI总线上唯一的器件,则SPI_ENB可以被连接为低电平。

当该输入为高电平时,SPI_DO和SPI_DI引脚转换为高阻抗状态。如果在任何通信周期期间驱动为高电平,则该周期暂停,直到SPI_ENB重新激活为低电平。

SPI_CLK

SPI_CLK是BBP驱动AD9361的接口基准时钟。它只有在SPI_ENB为低时才有效。最大值SPI_CLK频率为50MHz。(所以给SPI连接时钟的时候,一般不超过30M)

SPI_DI, SPI_DO and SPI_DIO

当配置为4线总线时,SPI利用两个数据信号 SPI_DI和SPI_DO。SPI_DI是从BBP驱动到AD9361的数据输入线,SPI_DO是在此配置中从AD9361到BBP的数据输出。当配置为3线总线时,SP_DI用作接收和发送串行数据的双向数据信号。在3线配置中,此信号在本文中称为SP_DIO,以区分两种配置。

SPI数据传输协议:

AD9361 SPI是一款同步传输灵活的同步串行通信总线,可实现与许多行业标准微控制器和微处理器的无缝接口。串行IO与大多数格式兼容,包括摩托罗拉SPI和英特尔SSR协议。AD9361的控制字段宽度仅限于16位,并且允许多字节IO操作。AD9361不能用于控制总线上的其他设备——它只能作为从设备运行。

一个通信周期有两个阶段。阶段1是控制周期,即向AD9361写入控制字。控制字为ad9361串口控制器提供有关数据传输周期的信息,即通信周期的第2阶段。阶段1控制字段定义即将进行的数据传输是读取还是写入。它还定义了正在访问的寄存器地址。

第一阶段指令格式

16位控制字段包含以下信息:

 W/Rb → 指令字的D15,确定在指令字节写入之后是否发生读取或写入数据传输。逻辑1表示写入操作;逻辑0表示读取操作。

NB2, NB1, NB0 → 指令字的D14-D12,指定在IO操作的第2阶段期间传输的字节数。下表详细说明了每个NB[2:0]组合在阶段2期间传输的字节数。

 D9:D0 → 指定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控制器执行四个字节的写入传输,起始字节地址为0x02A,第一个数据字节写入后,内部字节地址生成逻辑递减到0x029,这是第第二个字节写入后,内部字节地址生成逻辑递减到0x028,这是第三个字节的目的地。在第三个字节写入后
,内部字节地址生成逻辑递减到0x027,这是最后一个字节的目的地。写入第四个字节后,IO通信周期完成,SPI_CLK上的下一个16个下降时钟周期用于在下一个指令字中进行时钟。如果不需要进一步通信,则数据信号返回空闲状态,SPI_CLK变为低电平,SPI_ENB信号变为高电平以结束通信会话。

(LSB 传输的时候,则地址从0x2A开始递增即可,其余和MSB相同)

时序图:

单寄存器写操作(值0x55写入到寄存器0x15a)

 单寄存器读操作(读值寄存器0x15a的值)

下表列出了SPI总线的时序规格。这些参数之间的关系示于下图。该图显示了带有这些参数的3线SPI总线时序图。请注意,这是一个单读操作,因此数据从AD9361驱动后的总线就绪参数没有显示在图中

 

下期更新,AD9361滤波器,以及讲解!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/462852
推荐阅读
相关标签
  

闽ICP备14008679号