串行外设接口事务可视化怎么操作?ADAML2000进阶学习走一波

winniewei 提交于 周五, 06/28/2019
串行外设接口事务可视化怎么操作?ADAML2000进阶学习走一波

同学,想必你已摸清了“魔电”中幅度调制和包络检波器那些事儿,也可能实战了有源滤波和频谱分析。但如何通过手里的口袋仪器ADALM2000 (M2K) 与Scopy的逻辑分析仪一起实现两个器件之间串行外设接口(SPI)事务的可视化,你应该还需要M2K进阶学习走一波。

使用溶解固体总量测量演示(TDS)项目作为示例。该项目使用 EVAL-CN0411-ARDZ扩展板,其安装在 EVAL-ADICUP360 微控制器板上。该扩展板包括两个SPI器件:一个16位电压输出DAC AD5683R和一个低噪声、低功耗、24位Σ-Δ型ADC AD7124-8。

1

TDS项目的功能包括DAC电压设置和通过ADC回读,提供了一个SPI事务处理分析的完整示例。(有关如何设置和使用软件的更多详细信息,请参阅上述TDS演示链接)。

串行外设接口(SPI)是微控制器和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。它是一种同步串行全双工主从接口,适用于短距离通信(通常在同一PC板上)。数据传输由时钟同步,可在时钟上升沿或下降沿读取数据(具体取决于工作模式)。数据从主器件传输到从器件,从从器件传输到主器件均使用独立的信号,从而使主器件和从器件可以同时传输数据。

2

图1.SPI主-从配置

SPI总线包含4个逻辑信号:

  • CS:片选或从器件选择(通常低电平有效,主器件输出)

  • SCLK:串行时钟(主器件输出)

  • MOSI:主器件输出从器件输入或主器件输出从器件输入(主器件输出数据)

  • MISO:主器件输入从器件输出或主器件输入从器件输出(从器件输出数据)

典型的全双工SPI接口使用所有这4个信号,称为“4线”接口。仅需要单向通信时,可采用3线接口。例如,无需任何配置的单通道ADC可能只有CS、SCLK和MISO信号。类似地,单通道DAC可能只有CS、SCLK和MOSI信号。本教程将重点介绍4线SPI接口。

来自主器件的片选(CS)信号用于选择单个从器件并使能其SPI接口。它通常是低电平有效信号;高电平将禁用从器件,从而使其忽略SPI总线上的任何活动,并使其MISO输出处于三态。当使用多个从器件时,每个从器件都需要独立的片选信号。只允许选定的从器件(其CS信号置位)驱动MISO。(主器件连续驱动SCK和MOSI信号,在事务间置于高电平或低电平空闲状态,具体取决于SPI模式。)

产生时钟信号(SCLK)的器件称为主器件。主器件和从器件之间传输的数据与主器件产生的时钟同步。SPI接口只能有一个主器件,但可以有一个或多个从器件。

MOSI和MISO是数据线。MOSI将数据从主器件发送到从器件,MISO将数据从从器件发送到主器件。(如CS信号描述中所述,一次只能有一个从器件驱动MISO。)要开始SPI通信,主器件必须通过置位从器件CS信号来选择该从器件。在SPI通信期间,同时进行数据发送(串行移出到MOSI总线上)和接收(采样或读取MISO总线上的数据)。有效串行时钟沿同步数据的移位和采样。

SPI接口可以使用由CPOL和CPHA两个参数定义的四种模式中的一种,这两个参数指定使用时钟的上升沿还是下降沿是否进行数据采样和/或移位,以及时钟在事务间是高电平还是低电平空闲状态。必须将主器件和从器件配置为相同的SPI模式——通常从器件的模式是固定的,而主器件模式可在运行时(通常是微控制器和微处理器的情况)或编译时(例如某些FPGA SPI IP内核的情况)进行配置。

3

图2.SPI模式

CPOL代表时钟极性(Clock POLarity),指定总线空闲时SCK信号的默认值(高电平/低电平)。CPHA代表时钟相位(Clock PHAse),用来确定进行数据采样的时钟沿(上升沿/下降沿)。从器件的数据手册将指定这些参数,以便对主器件进行相应的配置。图3显示了两种CPOL配置的SPI传输示例。从MSB开始发送8个数据位。

4

图3.SPI传输示例

硬件配置

图4显示M2K板与EVAL-ADICUP360 + EVAL-CN0411-ARDZ扩展板之间的硬件连接。

5

图4.SPI调试硬件设置

CN0411扩展板的SPI引脚可用于端口DIGI1监控。由于有2个从器件(ADC和DAC)连接到主器件,因此提供2个引脚用于每个从器件的片选。

EVAL-CN011-ARDZ SPI引脚配置:端口DIGI1

  • Pin2 - CS ADC

  • Pin3 - CS DAC

  • Pin4 - MOSI

  • Pin5 - MISO

  • Pin6 - SCLK

端口POWER1:Pin6 - DGND

M2K SPI引脚配置:

  • DIO0 - SCLK

  • DIO1 - MISO

  • DIO2 - MOSI

  • DIO3 - CS

  • GND - DGND

将M2K引脚连接到CN0411,如下所示:

  • Pin2 (ADC)或Pin3 (DAC) - DIO3

  • Pin4 - DIO2

  • Pin5 - DIO1

  • Pin6 - SCLK

Scopy逻辑分析仪配置

为了正确配置Scopy,需要确定几个SPI配置参数  对于CN0411项目,这些参数配置如下:

  • SPI时钟速率 - 1MHz

  • CPOL - 高电平(1)时用于ADC和DAC

  • CPHA - 高电平(1)时用于ADC,低电平(0)时用于DAC

  • 每次传输的位数(字大小):8

  • CS极性 - 当线路为低电平有效时启用传输

  • 首先传输最高有效位(MSB)

6

图5.Scopy SPI调试设置

用户界面概述如图5所示。打开逻辑分析仪,选择DIO0-DIO3线路,然后按下“Group with selected”(选定分组)按钮。

7

图6.逻辑分析仪组通道

选择构成的通道组并应用SPI解码器。选择组后,按下用户界面右上角的1按钮打开设置菜单。将出现SPI解码器设置面板,可以进行信号通道配置和参数设置。将上述参数应用于这个组,注意ADC和DAC具有不同的时钟相位设置。

8

图7.组设置

必须对逻辑分析仪进行设置,才能在逻辑分析仪曲线上“捕获”SPI传输。因此我们需要进行触发配置。当片选信号置位低电平时开始SPI传输,因此可以使用CS通道的下降沿作为触发信号。

9

图8.触发设置

SPI发送

此示例验证,对于给定的软件命令,是否能够将正确的配置位和输出代码发送到DAC。请确保将正确的DAC CS引脚连接到M2K数字引脚(请参阅硬件配置步骤)。

要将DAC输出设置为1.0V,可使用DAC电压至数值公式来计算需要写入的值:

1

将逻辑分析仪的时基设置为10us,触发位置设为35us,并运行单次扫描。

1

图9.通用设置

逻辑分析仪将等待CS信号的下降沿被触发。运行“setdac 1.0”命令。这将启动SPI传输。结果如图10所示。

2

图10.SPI写序列

分析该曲线,从MSB开始,在MOSI线路上发送3个字节(24位)。前4位对应于命令位0x3,即“写入DAC并输入寄存器”命令。接下来的16位代表之前计算得到的DAC输出代码(0x6666)。最后4位是“无关位”,在软件中设置为0(尽管它们并非必须为0。)

SPI接收

现在对ADC输出代码进行分析,以确认它对应于1.0V。(如有需要,也可以使用电压表再次检查DAC输出端的电压。)

首先,将M2K DIO3引脚连接到ADC CS引脚(DIGI1引脚2)。由于SPI配置与DAC配置略有不同(请参阅SPI参数列表),请修改组设置菜单,将时钟相位(CPHA)设置为1。

在逻辑分析仪上再次运行单次扫描并执行“readdac”命令。这将读取与DAC输出对应的ADC通道。结果如图11所示。

3

图11.SPI读序列

接收寄存器值时,MOSI线路上的数据对应于ADC的寄存器地址(0x42),然后是3个虚拟字节(0x00)。

在发送虚拟字节时,ADC同时发送存储在MISO线路(0x665DBF)上请求寄存器中的24位值。

然后可以使用以下公式将ADC代码转换为电压:

1

如预期的一样,DAC电压非常接近之前设置的DAC电压。因此,我们可以得出结论,SPI通信的写入和读取都能正常工作。

结论

除SPI外,该应用还包括一组解码器,涵盖大量通信协议,如I2C、I2S、UART、JTAG等,从而使ADALM2000成为一款功能强大的数字信号分析和调试工具。

来源:ADI校园计划

相关文章

Digi-Key