使用MCU SPI访问具有非标准SPI接口ADC的方法
关注、星标公众号,不错过精彩内容
整理:黄工
来源:亚德诺半导体
图1. AD7768用作串行主机,具有两个数据输出引脚
一、与ADC的标准MCU SPI连接
SPI是一种同步、全双工、主从式接口。来自主机或从机的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。图2显示了典型的4线MCU SPI接口连接。
要开始SPI通信,控制器必须发送时钟信号,并通过使能CS信号(通常是低电平有效信号)来选择ADC。SPI是全双工接口,因此控制器和ADC可以分别通过MOSI/DIN和MISO/DOUT线同时输出数据。控制器SPI接口允许用户灵活选择时钟的上升沿或下降沿来采样和/或移位数据。为了在主机和从机之间进行可靠的通信,用户必须遵守微控制器和ADC芯片的数字接口时序规范。
如果微控制器SPI和ADC串行接口具有标准SPI时序模式,那么用户设计PCB布线和开发驱动器固件不成问题。但是,有些新型ADC的串行接口端口不是典型的SPI时序模式。MCU或DSP似乎不可能通过AD7768串行端口(一种非标准时序SPI端口)读取数据,如图4所示。
本文将介绍操纵标准微控制器SPI以便与具有非标准SPI端口的ADC接口的方法。
本文会给出四种通过串行接口读取ADC码的解决方案:
解决方案1:MCU作为SPI从机,通过一条DOUT线与作为SPI主机的ADC接口。
解决方案2:MCU作为SPI从机,通过两条DOUT线与作为SPI主机的ADC接口。
解决方案3:MCU作为SPI从机,通过DMA与作为SPI主机的ADC接口。
解决方案4:MCU作为SPI主机和SPI从机,通过两条DOUT线读取数据。
如图4所示,当FORMATx=11或10时,通道0至通道7仅通过DOUT0输出 数据。在标准工作模式下,AD7768/AD7768-4为主机工作,数据流入MCU、DSP或FPGA。AD7768/AD7768-4向从机提供数据、数据时钟(DCLK)和下降沿帧使能信号(DRDY)。
STM32Fxxx系列微控制器广泛用于很多不同的应用中。该MCU有多个SPI端口,可以使用典型的SPI时序模式将其配置为SPI主机或从机。下文中介绍的方法也可应用于其他具有8位、16位或32位帧的微控制器。
AD7768/AD7768-4分别为8通道和4通道同步采样∑-∆型ADC,每通道均有∑-∆型调制器和数字滤波器,支持交流和直流信号的同步采样。这些器件在110.8kHz的最大输入带宽下实现了108dB动态范围,具备±2ppm INL、±50µV偏置误差和±30ppm增益误差的典型性能。AD7768/AD7768-4用户可在输入带宽、输出数据速率和功耗之间进行权衡,并选择三种功耗模式之一以优化噪声目标和功耗。AD7768/AD7768-4的灵活性使其 成为适合低功耗直流和高性能交流测量模块的可重复使用平台。遗憾的是,AD7768的串行接口不是典型SPI时序模式,而且AD7768充当串行接口主机。一般而言,用户必须使用FPGA/CPLD作为其控制器,
例如,使用32F429IDISCOVERY和AD7768评估板。变通SPI线的连接如图5所示。在这种设置下,AD7768的所有八通道数据仅通过DOUT0输出。
需要解决的问题:
AD7768用作SPI主机,故必须将STM32F429I SPI配置为SPI从机。 DRDY 高电平脉冲只持续一个DCLK周期,这不是典型的CS。 完成所有通道数据位的输出之后,DCLK继续输出,DRDY为低电平。
图6. 时序解决方案中的AD7768数据位读取
将STM32F429的一个SPI端口(如SPI4)配置为从机,以DCLK速率接收MOSI上的数据位。 将AD7768DRDY 连接到STM32F429外部中断输入引脚EXTI0和NSS (SPI CS) 引脚。DRDY 的上升沿将触发EXTI0处理例程,以使SPI从机能够在DRDY 变为低电平之后的第一个DCLK下降沿开始接收数据位。时序设计在这里至关重要。 接收到通道0至通道7的所有数据后,应禁用SPI以防止读取额外的无效数据,因为 DRDY 会使SPI从机 CS 变为低电平,并且DCLK保持切换。
在第一种解决方案中,仅使用DOUT0来输出所有8通道数据。因此,数据读取将ADC吞吐速率限制为8 kSPS。如图1所示,在DOUT0上输出通道0至通道3,在DOUT1上输出通道4至通道7,可以减少数据传输时间。串行线的连接如图7所示。通过这种改进,在DCLK为4 MHz时,ODR可以轻松达到16 kSPS。
固件可以不使用中断模式,而使用轮询模式,以减少从DRDY上升沿触发到使能SPI接收数据的时间延迟。这样可以在DCLK为8MHz时实现32kSPS的ODR。
图9. EXTI0处于轮询模式,SPI4和SPI5通过DOUT0和DOUT1接收AD7768数据位
直接存储器访问(DMA)用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。DMA可以迅速移动数据而不需要任何MCU操作,这样可以腾出MCU资源用于执行其他操作。下面是MCU SPI用作从机通过DMA接收数据的设计说明。
高吞吐量或多通道精密ADC为SPI端口提供两条、四条甚至八条SDO线,以在串行模式下更快地读取代码。对于具有两个或更多个SPI端口的微控制器,这些SPI端口可以同时运行以加快代码的读取。
在以下使用案例中,32F429IDISCOVERY使用SPI4作为SPI主机,SPI5作为SPI 从机,通过DOUTA和DOUTB接收EVAL-AD7606B-FMCZ数据,如图8所示。
AD7606B是一款16位同步采样模数转换数据采集系统(DAS),具有八个通道,每个通道均包含模拟输入箝位保护、可编程增益放大器(PGA)、低通滤波器和16位逐次逼近寄存器(SAR)型ADC。
AD7606B还内置灵活的数字滤波器、低漂移2.5V精密基准电压源和基准电压缓冲器,可驱动ADC及灵活的并行和串行接口。AD7606B采用5V单电源供电,支持±10V、±5V和±2.5V真双极性输入范围,所有通道均能以800 kSPS的吞吐速率采样。
图12. SPI4配置为主机,SPI5配置为从
图13. AD7606B BUSY、SCLK以及DOUTA和DOUTB上的数据的示波器截图
三、总结
本文讨论了使用微控制器SPI访问具有非标准SPI接口的ADC的方法。这些方法可以直接使用,也可以稍加调整即可控制ADC SPI;其可作为SPI主机使用,也可以与多条DOUT线配合使用以提高吞吐速率。
免责声明:本文来源亚德诺半导体,仅传达原作者观点,版权归原作者所有。如涉及作品版权问题,请与我联系删除。
长按前往图中包含的公众号关注