问题:能否用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的规范MCU SPI衔接
SPI是一种同步、全双工、主从式接口。来自主机或从机的数据在时钟上升沿或下降沿同步。主机和从机能够一起传输数据。图2显现了典型的4线MCU SPI接口衔接。
图2.与ADC从机的规范MCU SPI衔接
要开端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码的处理方案:
u 处理方案1:MCU作为SPI从机,经过一条DOUT线与作为SPI主机的ADC接口。
u 处理方案2:MCU作为SPI从机,经过两条DOUT线与作为SPI主机的ADC接口。
u 处理方案3:MCU作为SPI从机,经过DMA与作为SPI主机的ADC接口。
u 处理方案4:MCU作为SPI主机和SPI从机,经过两条DOUT线读取数据。
图3.SPI数据时钟时序图示例
图4.AD7768 FORMATx = 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.8 kHz的最大输入带宽下完结了108 dB动态规模,具有±2 ppm INL、±50 µV偏置差错和±30 ppm增益差错的典型功能。AD7768/AD7768-4用户可在输入带宽、输出数据速率和功耗之间进行权衡,并挑选三种功耗形式之一以优化噪声方针和功耗。AD7768/AD7768-4的灵敏性使其成为合适低功耗直流和高功能沟通丈量模块的可重复运用渠道。惋惜的是,AD7768的串行接口不是典型SPI时序形式,而且AD7768充任串行接口主机。一般来说,用户有必要运用FPGA/CPLD作为其操控器,
例如,运用32F429IDISCOVERY和AD7768评价板。变通SPI线的衔接如图5所示。在这种设置下,AD7768的一切八通道数据仅经过DOUT0输出。
图5.AD7768经过DOUT0将数据输出到STM32F429 MCU SPI衔接
需求处理的问题:
u AD7768用作SPI主机,故有必要将STM32F429I SPI装备为SPI从机。
u 高电平脉冲只持续一个DCLK周期,这不是典型的。
u 完结一切通道数据位的输出之后,DCLK持续输出,为低电平。
处理方案1:MCU SPI作为从机,经过一条DOUT线与SPI主机ADC接口
u 将STM32F429的一个SPI端口(如SPI4)装备为从机,以DCLK速率接纳MOSI上的数据位。
u 将AD7768 衔接到STM32F429外部中止输入引脚EXTI0和NSS (SPI )引脚。的上升沿将触发EXTI0处理例程,以使SPI从机能够在变为低电平之后的第一个DCLK下降沿开端接纳数据位。时序规划在这里至关重要。
u 接纳到通道0至通道7的一切数据后,应禁用SPI以避免读取额定的无效数据,由于 会使SPI从机变为低电平,而且DCLK坚持切换。
图6.时序处理方案中的AD7768数据位读取
MCU固件开发注意事项
当软件处于中止形式时,DCLK运转速率能够高达4 MHz,完结8 kSPS的ODR。软件应进入中止处理程序,在一个半DCLK周期(375 ns)内发动SPI。为使软件更轻松地进入中止例程,MCU能够在DCLK上升沿读取数据,然后供给额定的半个DCLK周期时刻。可是,t5 DCLK上升到DOUTx无效最小值为–3 ns(IOVDD = 1.8 V时为–4 ns),因而DOUTx上的传达推迟(>|t5| + MCU坚持时刻)应经过PCB布线或缓冲添加。
图7.装备SPI4外设
处理方案2:MCU SPI作为从机,经过两条DOUT线与SPI主机ADC接口
在第一种处理方案中,仅运用DOUT0来输出一切8通道数据。因而,数据读取将ADC吞吐速率限制为8 kSPS。如图1所示,在DOUT0上输出通道0至通道3,在DOUT1上输出通道4至通道7,能够削减数据传输时刻。串行线的衔接如图7所示。经过这种改善,在DCLK为4 MHz时,ODR能够轻松到达16 kSPS。
图8.AD7768经过DOUT0和DOUT1将数据输出到STM32F429 MCU SPI衔接
固件能够不运用中止形式,而运用轮询形式,以削减从上升沿触发到使能SPI接纳数据的时刻推迟。这样能够在DCLK为8 MHz时完结32 kSPS的ODR。
处理方案3:MCU SPI作为从机,经过DMA与SPI主机ADC接口
直接存储器拜访(DMA)用于在外设与存储器之间以及存储器与存储器之间供给高速数据传输。DMA能够敏捷移动数据而不需求任何MCU操作,这样能够腾出MCU资源用于履行其他操作。下面是MCU SPI用作从机经过DMA接纳数据的规划说明。
处理方案4:MCU SPI作为主机和从机,经过两条DOUT线读取数据
高吞吐量或多通道精细ADC为SPI端口供给两条、四条乃至八条SDO线,以在串行形式下更快地读取代码。关于具有两个或更多个SPI端口的微操控器,这些SPI端口能够一起运转以加速代码的读取。
图9.EXTI0处于轮询形式,SPI4和SPI5经过DOUT0和DOUT1接纳AD7768数据位。
图10.EXTI0处于轮询形式,SPI4 DMA经过DOUT0接纳AD7768数据位。
在以下运用事例中,32F429IDISCOVERY运用SPI4作为SPI主机,SPI5作为SPI从机,经过DOUTA和DOUTB接纳EVAL-AD7606B-FMCZ数据,如图8所示。
AD7606B是一款16位同步采样模数转化数据收集体系(DAS),具有八个通道,每个通道均包括模仿输入箝位维护、可编程增益放大器(PGA)、低通滤波器和16位逐次迫临寄存器(SAR)型ADC。AD7606B还内置灵敏的数字滤波器、低漂移2.5 V精细基准电压源和基准电压缓冲器,可驱动ADC及灵敏的并行和串行接口。AD7606B选用5 V单电源供电,支撑±10 V、±5 V和±2.5 V真双极性输入规模,一切通道均能以800 kSPS的吞吐速率采样。
图11.在主从形式下运用MCU SPI经过DOUTA和DOUTB接纳数据
图12.SPI4装备为主机,SPI5装备为从机。
图13显现了AD7606B以240 kSPS运转时BUSY、SCLK、DOUTA和DOUB的数字接口截图。
图13.AD7606B BUSY、SCLK以及DOUTA和DOUTB上的数据的示波器截图
定论
本文评论了运用微操控器SPI拜访具有非规范SPI接口的ADC的办法。这些办法能够直接运用,也能够稍加调整即可操控ADC SPI;其可作为SPI主机运用,也能够与多条DOUT线合作运用以进步吞吐速率。
称谢
非常感谢运用工程师Mika Jiang和Yao Zhao,他们供给了有关STM32F429IDISCOVERY套件快速发动和固件调试作业的主张。
参考文献
Dhaker,Piyu。“SPI接口简介”。《模仿对话》,第52卷。2018年9月。
RM0090参考手册:STM32F405/415、STM32F407/417、STM32F427/437和STM32F429/439高档ARM 32位MCU。STMicroelectronics,2019年2月。
STM32F427xx数据手册。STMicroelectronics,2018年1月。
UM1670用户手册:带STM32F429ZI MCU的Discovery套件。STMicroelectronics,2017年9月。
Usach, Miguel。AN-1248运用笔记:SPI接口。ADI公司,2015年9月。
作者简介
Steven Xie于2011年3月参加ADI北京分公司,担任ADI我国规划中心的产品运用工程师。他担任我国市场SAR型ADC产品的技术支撑作业。在此之前,他曾在无线通讯基站范畴做过四年的硬件规划人员。2007年,Steven结业于北京航空航天大学,并取得通讯与信息体系硕士学位。