问题:能否用MCU采访非标准SPI模块?答案:可以,但有可能必须做到一些额外的希望。概述当前许多仪器模数转换器(ADC)具备串行外设模块(SPI)或某种串行接口,借以与还包括微控制器单元(MCU)、DSP和FPGA在内的控制器展开通信。控制器载入或加载ADC内部寄存器并加载切换码。SPI的印刷电路板(PCB)布线非常简单,并且有比并行接口更慢的时钟速率,因而更加热门。
而且,用于标准SPI很更容易将ADC相连到控制器。一些新型ADC具备SPI,但有些ADC具备非标准的3线或4线SPI作为从机,因为它们期望构建更慢的陡然速率。例如,AD7616、AD7606和AD7606B系列有两条或四条SDO线,在串行模式下可获取更慢的陡然速率。AD7768、AD7779和AD7134系列有多条SDO线,用于SPI主机。
用户在设计微控制器SPI以配备ADC和加载代码时往往不会遇到困难。图1.AD7768用于串行主机,具备两个数据输入插槽(14001-193)。
与ADC的标准MCUSPI相连SPI是一种实时、全双工、主从式模块。来自主机或从机的数据在时钟下降沿或上升沿实时。主机和从机可以同时传输数据。
图2表明了典型的4线MCUSPI模块相连。图2.与ADC从机的标准MCUSPI相连要开始SPI通信,控制器必需发送到时钟信号,并通过使能信号(一般来说是低电平有效地信号)来自由选择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线读取数据。
图3.SPI数据时钟时序图示例图4.AD7768FORMATx=1×时序图,仅有通过DOUT0输入。STM32F429微控制器SPI通过一条DOUT线加载AD7768代码如图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动态范围,不具备±2ppmINL、±50?V偏置误差和±30ppm增益误差的典型性能。AD7768/AD7768-4用户可在输出比特率、输入数据速率和功耗之间展开权衡,并自由选择三种功耗模式之一以优化噪声目标和功耗。
AD7768/AD7768-4的灵活性使其沦为合适低功耗直流和高性能交流测量模块的可重复使用平台。失望的是,AD7768的串行接口不是典型SPI时序模式,而且AD7768当作串行接口主机。一般而言,用户必需用于FPGA/CPLD作为其控制器,例如,用于32F429IDISCOVERY和AD7768评估板。
变通SPI线的相连如图5右图。在这种设置下,AD7768的所有八地下通道数据仅有通过DOUT0输入。
图5.AD7768通过DOUT0将数据输入到STM32F429MCUSPI相连必须解决问题的问题:AD7768用于SPI主机,故必需将STM32F429ISPI配备为SPI从机。高电平脉冲只持续一个DCLK周期,这不是典型的。
已完成所有地下通道数据位的输入之后,DCLK之后输入,为低电平。解决方案1:MCUSPI作为从机,通过一条DOUT线与SPI主机ADC模块将STM32F429的一个SPI端口(如SPI4)配备为从机,以DCLK速率接管MOSI上的数据位。
将AD7768相连到STM32F429外部中断输出插槽EXTI0和NSS(SPI)插槽。的下降沿将启动时EXTI0处置例程,以使SPI从机需要在变成低电平之后的第一个DCLK上升沿开始接收数据位。时序设计在这里至关重要。
接管到地下通道0至地下通道7的所有数据后,不应停止使用SPI以避免加载额外的违宪数据,因为不会使SPI从机变为低电平,并且DCLK维持转换。图6.时序解决方案中的AD7768数据位加载MCU固件研发注意事项当软件正处于中断模式时,DCLK运营速率可以高达4MHz,构建8kSPS的ODR。软件不应转入中断处理程序,在一个半DCLK周期(375ns)内启动SPI。
为使软件更加精彩地转入中断例程,MCU可以在DCLK下降沿读取数据,从而获取额外的半个DCLK周期时间。但是,t5DCLK下降到DOUTx违宪最小值为–3ns(IOVDD=1.8V时为–4ns),因此DOUTx上的传播延后(>|t5|+MCU维持时间)不应通过PCB布线或缓冲器减少。图7.配备SPI4外设解决方案2:MCUSPI作为从机,通过两条DOUT线与SPI主机ADC模块在第一种解决方案中,仅有用于DOUT0来输入所有8地下通道数据。
因此,数据加载将ADC陡然速率容许为8kSPS。如图1右图,在DOUT0上输入地下通道0至地下通道3,在DOUT1上输入地下通道4至地下通道7,可以增加数据传输时间。串行线的相连如图7右图。
通过这种改良,在DCLK为4MHz时,ODR可以精彩超过16kSPS。图8.AD7768通过DOUT0和DOUT1将数据输入到STM32F429MCUSPI相连固件可以不用于中断模式,而用于轮询模式,以增加从下降沿启动时到使能SPI接收数据的时间延迟。
这样可以在DCLK为8MHz时构建32kSPS的ODR。解决方案3:MCUSPI作为从机,通过DMA与SPI主机ADC模块必要存储器采访(DMA)用作在外设与存储器之间以及存储器与存储器之间获取高速数据传输。DMA可以很快移动数据而不必须任何MCU操作者,这样可以留出MCU资源用作继续执行其他操作者。
下面是MCUSPI用于从机通过DMA接收数据的设计说明。解决方案4:MCUSPI作为主机和从机,通过两条DOUT线读取数据低吞吐量或多通道仪器ADC为SPI端口获取两条、四条甚至八条SDO线,以在串行模式下更慢地加载代码。
对于具备两个或更加多个SPI端口的微控制器,这些SPI端口可以同时运营以减缓代码的加载。图9.EXTI0正处于轮询模式,SPI4和SPI5通过DOUT0和DOUT1接管AD7768数据位。
图10.EXTI0正处于轮询模式,SPI4DMA通过DOUT0接管AD7768数据位。在以下用于案例中,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真双极性输出范围,所有地下通道皆能以800kSPS的陡然速率取样。
本文来源:k1体育-www.xjbazar.net
扫一扫关注我们