0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

操纵MCU SPI接口以访问非标准SPI ADC

星星科技指导员 来源:ADI 作者:Steven Xie 2023-02-15 12:31 次阅读

Steven Xie

目前许多精密模数转换器ADC) 具有串行外设接口 (SPI) 或一些串行接口,用于与微控制器单元 (MCU)、DSPFPGA控制器通信。控制器写入或读取ADC内部寄存器并读取转换代码。SPI因其简单的印刷电路板(PCB)布线和与并行接口相比更快的时钟速率而变得越来越流行。而且,使用标准SPI可以轻松地将ADC连接到控制器。

一些新型ADC具有SPI,但其他ADC具有非标准的3线或4线SPI作为节点,因为它们希望实现更快的吞吐速率。例如,AD7616、AD7606和AD7606B系列具有两条或四条SDO线路,可在串行模式下实现更快的吞吐速率。 AD7768、AD7779和AD7134系列具有多条SDO线路,用作SPI电源。 用户在设计用于ADC配置和代码读取的微控制器SPI时往往会遇到困难。

图1.AD7768作为串行主电源,具有两个数据输出引脚(14001-193)。

与 ADC 的标准 MCU SPI 连接

SPI 是一个同步、全双工、基于主/节点的接口。来自主节点或节点的数据在时钟上升沿或下降沿同步。主节点和节点可以同时传输数据。图2显示了一个典型的4线MCU SPI接口连接。

图2.与 ADC 节点的标准 MCU SPI 连接。

要开始SPI通信,控制器必须发送时钟信号,并通过使能CS信号(通常是低电平有效信号)来选择ADC。由于SPI是全双工接口,控制器和ADC可以分别通过MOSI/DIN和MISO/DOUT线路同时输出数据。控制器SPI接口使用户能够灵活地选择时钟的上升沿或下降沿来采样和/或转换数据。为了实现主节点之间的可靠通信,用户必须遵循微控制器和ADC芯片的数字接口时序规范。

图3.SPI数据时钟时序图示例。

如果微控制器SPI和ADC串行接口具有标准的SPI定时模式,则用户设计PCB布线和开发驱动固件不是问题。但也有一些新的ADC具有串行接口端口,这不是典型的SPI时序模式。MCU或DSP似乎不可能通过AD7768串行端口(非标准时序SPI端口)读取数据,如图4所示。

图4.AD7768 格式x = 1×时序图输出,仅采用DOUT0。

本文将介绍操作标准微控制器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线路上的数据。

AD7768 使用STM32F429微控制器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,每通道具有Σ-Δ调制器和数字滤波器,可实现交流和直流信号的同步采样。它们在 108.110 kHz 的最大输入带宽下实现了 8 dB 的动态范围,并具有 ±2 ppm INL、±50 μV 失调误差和 ±30 ppm 增益误差的典型性能。AD7768/AD7768-4用户可以权衡输入带宽、输出数据速率和功耗,并从三种功耗模式中选择一种来优化噪声目标和功耗。AD7768/AD7768-4的灵活性使其成为低功耗直流和高性能交流测量模块的可重复使用平台。遗憾的是,AD7768的串行接口不是典型的SPI时序模式,AD7768用作串行接口主接口。通常,用户必须使用FPGA/CPLD作为其控制器。

例如,使用32F429IDISCOVERY和AD7768评估板。解决方法SPI导线的连接如图5所示。在此设置中,所有7768个AD0通道数据输出仅由DOUT<>供电

图5.AD7768将DOUT0上的数据输出到STM32F429 MCU SPI连接。

需要解决的问题:

AD7768用作SPI主器件,因此STM32F429I SPI必须配置为SPI节点。

DRDY高脉冲只是DCLK持续时间的一个周期,不是典型的CS。

DCLK连续输出,当所有通道数据位输出完成后,DRDY为低电平。

pYYBAGPsYDeAAlPpAAB6NffL1Fg056.png?h=270&hash=1E4B9BD0559F2A5109EC44B8A45119C79743B3FE&la=en&imgver=1

图6.AD7768数据位在时序解决方案中读取。

解决方案1:MCU SPI作为通过一条DOUT线与SPI主ADC接口的节点

配置其中一个STM32F429是SPI端口(如SPI4)作为节点,以在DCLK的MOSI上接收数据位。

将AD7768 DRDY连接到STM32F429外部中断输入引脚EXTI0和NSS (SPI CS)引脚。DRDY 的上升沿将触发 EXTI0 处理程序例程,以使 SPI 节点能够在 DRDY 变为低电平后开始从第一个 DCLK 下降沿接收数据位。时序设计在这里至关重要。

收到从通道0到通道7的所有数据后,应禁用SPI,以防止读取额外的无效数据,因为DRDY使SPI节点CS为低电平,DCLK不断切换。

MCU 固件开发说明

poYBAGPsYDmAX2gAAAGWL3jGCtM472.png?h=270&hash=EAC79A80214AA7DAD864CA7FA317AEC3C6E23887&la=en&imgver=1

图7.配置 SPI4 外设。

当软件处于中断模式时,DCLK 可以运行高达 4 MHz,并实现 ODR 8 kSPS。软件应进入中断处理程序,在一个半DCLK周期(375 ns)内启动SPI。为了更容易地使软件进入中断例程,MCU可以在DCLK上升沿读取数据,这可以额外提供半个DCLK周期时间。但是,由于5DCLK 上升到 DOUTx 无效的最小值为 –3 ns(IOVDD = 4.1 V 时为 –8 ns),传播延迟 (>|t5|+ MCU 保持时间)在 DOUTx 上应通过 PCB 布线或缓冲区添加。

解决方案2:MCU SPI作为通过两条DOUT线与SPI主ADC接口的节点

在第一个解决方案中,仅使用DOUT0输出所有8通道数据。因此,数据读取将ADC吞吐速率限制为8 kSPS。如图1所示,DOUT0上的通道3至通道0输出和DOUT4上的通道7至通道1输出可以缩短数据传输时间。串行线的连接如图7所示。通过这样的改进,ODR 在 DCLK 16 MHz 时可以轻松达到 4 kSPS。

poYBAGPsYDqAZPEHAABKVKk_qTA407.png?h=270&hash=59878E34D121527DD8ADC4A094F1E3E6E78768F3&la=en&imgver=2

图8.AD7768将DOUT0和DOUT1上的数据输出到STM32F429 MCU SPI连接。

固件可以使用轮询模式而不是中断模式来减少DRDY上升沿触发的时间延迟,从而使SPI能够接收数据。这可以在DCLK 32 MHz下实现ODR 8 kSPS。

pYYBAGPsYDuAWoUtAACngoa6Ekk818.png?h=270&hash=0A8EA9FC3DBA9F8576CD33E422006B8CEDB244F3&la=en&imgver=2

图9.轮询模式下的EXTI0以及DOUT4和DOUT5上的SPI7768和SPI0接收AD1数据位。

解决方案3:MCU SPI作为通过DMA与SPI主ADC接口的节点接口

直接内存访问 (DMA) 用于在外设和内存之间以及内存和内存之间提供高速数据传输。DMA 可以快速移动数据,无需任何 MCU 操作。这使 MCU 资源可用于其他操作。以下是MCU SPI作为节点通过DMA接收数据的设计说明。

poYBAGPsYD2APs8EAADADLQI7ew097.png?h=270&hash=8BC0220BA9FBB04EC31862590E99A4D66B001943&la=en&imgver=1

图 10.轮询模式下的EXTI0和DOUT4上的SPI7768 DMA接收AD0数据位。

解决方案4:MCU SPI作为主节点和节点,在两条DOUT线路上读取数据

高吞吐量或多通道精密ADC为SPI端口提供2条、4条甚至8条SDO线,可在串行模式下缩短代码读取时间。对于具有两个或更多SPI端口的微控制器,它们可以同时运行SPI端口,以加快代码读取速度。

在以下用例中,32F429IDISCOVERY使用SPI4作为SPI主节点,SPI5作为SPI节点,以接收DOUTA和DOUTB上的EVAL-AD7606B-FMCZ数据,如图8所示。

AD7606B是一款16位同步采样模数数据采集系统(DAS),具有16个通道,每个通道包含模拟输入箝位保护、可编程增益放大器(PGA)、低通滤波器和7606位逐次逼近寄存器(SAR)ADC。AD2B还内置一个灵活的数字滤波器、低漂移、5.7606 V精密基准电压源和基准电压缓冲器,用于驱动ADC,以及灵活的并行和串行接口。AD5B采用10 V单电源供电,所有通道均以5 kSPS吞吐速率采样时,支持±2 V、±5 V和±800.<> V真双极性输入范围。

图 11.在主模式和节点模式下使用的MCU SPI,用于接收DOUTA和DOUTB上的数据。

pYYBAGPsYD6ATC8eAAE-zAMpPYc469.png?h=270&hash=8B1AFAF00D0C4FDFA2BC1F2D43F7ACD9C3EEA0A5&la=en&imgver=1

图 12.将 SPI4 配置为主节点,将 SPI5 配置为节点。

图13显示了AD7606B以240 kSPS运行的BUSY、SCLK、DOUTA和DOUB的数字接口捕获。

poYBAGPsYECAZ7YBAAILdOKsju8530.jpg?h=270&hash=86F8B7596EFC89E4970A59FDDF9405242B2F5E43&la=en&imgver=1

图 13.AD7606B忙、SCLK的示波器捕获以及DOUTA和DOUTB上的数据。

结论

本文讨论了使用微控制器SPI访问具有非标准SPI接口的ADC的方法。这些方法可以直接使用,也可以稍作调整来控制ADC SPI,ADC SPI可用作SPI主电源或多条DOUT线路,以实现更快的吞吐速率。

审核编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7482

    浏览量

    151007
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16977

    浏览量

    350206
  • 接口
    +关注

    关注

    33

    文章

    8486

    浏览量

    150803
  • adc
    adc
    +关注

    关注

    98

    文章

    6429

    浏览量

    544033
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1700

    浏览量

    91289
收藏 人收藏

    评论

    相关推荐

    操纵MCU SPI接口访问非标准SPI ADC

    当前许多精密模数转换器(ADC)具有串行外设接口SPI)或某种串行接口,用以与包括微控制器单元(MCU)、DSP和FPGA在内的控制器进行
    发表于 01-02 11:46 3312次阅读

    使用微控制器SPI访问具有非标准SPI接口ADC的方法

    本文讨论了使用微控制器SPI访问具有非标准SPI接口ADC的方法。这些方法可以直接使用,也可以
    发表于 01-07 06:20

    MCU SPI访问具有非标准SPI接口ADC的方法,错过绝对后悔

    关注、星标公众号,不错过精彩内容整理:黄工来源:亚德诺半导体提问:能否用MCU访问非标准SPI接口?答案:可以,但可能需要做一些额外的努力。
    发表于 11-01 06:45

    能否用MCU访问非标准SPI接口

    好文章当然要分享啦~如果您喜欢这篇文章,请联系后台添加白名单,欢迎转载哟~问题能否用MCU访问非标准SPI接口?答案可以,但可能需要做一些额
    发表于 11-04 06:13

    MCU SPI接口如何访问非标准SPI ADC

    的印刷电路板(PCB)布线简单,并且有比并行接口更快的时钟速率,因而越来越受欢迎。而且,使用标准SPI很容易将ADC连接到控制器。一些新型ADC
    发表于 11-04 07:49

    操纵MCU SPI接口访问非标准SPI ADC

    ADI公司 Steven Xie,产品应用工程师 问题:能否用MCU访问非标准SPI接口? 答案:可以,但可能需要做一些额外的努力。 简介
    的头像 发表于 01-17 16:34 4976次阅读

    如何使用MCU访问非标准SPI接口

    能否用 MCU 访问非标准 SPI 接口?答案可以,但可能需要做一些额外的努力。当前许多精密模数转换器(
    发表于 12-22 12:49 13次下载
    如何使用<b class='flag-5'>MCU</b><b class='flag-5'>访问</b><b class='flag-5'>非标准</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>

    使用MCU SPI访问具有非标准SPI接口ADC的方法

    关注、星标公众号,不错过精彩内容整理:黄工来源:亚德诺半导体提问:能否用MCU访问非标准SPI接口?答案:可以,但可能需要做一些额外的努力。
    发表于 10-25 16:51 14次下载
    使用<b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>访问</b>具有<b class='flag-5'>非标准</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>ADC</b>的方法

    MCU SPI接口访问非标准SPI ADC的方法!

    当前许多精密模数转换器(ADC)具有串行外设接口(SPI)或某种串行接口,用以与包括微控制器单元(MCU)、DSP和FPGA在内的控制器进行
    发表于 10-28 21:06 10次下载
    <b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>访问</b><b class='flag-5'>非标准</b><b class='flag-5'>SPI</b> <b class='flag-5'>ADC</b>的方法!

    非标准语法;请使用 _一文读懂使用MCU SPI访问具有非标准SPI接口ADC的方法

    好文章当然要分享啦~如果您喜欢这篇文章,请联系后台添加白名单,欢迎转载哟~问题能否用MCU访问非标准SPI接口?答案可以,但可能需要做一些额
    发表于 10-29 09:51 8次下载
    <b class='flag-5'>非标准</b>语法;请使用 _一文读懂使用<b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>访问</b>具有<b class='flag-5'>非标准</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>ADC</b>的方法

    非标准语法;请使用 _MCU SPI接口访问非标准SPI ADC的方法!

    的印刷电路板(PCB)布线简单,并且有比并行接口更快的时钟速率,因而越来越受欢迎。而且,使用标准SPI很容易将ADC连接到控制器。一些新型ADC
    发表于 10-29 09:51 8次下载
    <b class='flag-5'>非标准</b>语法;请使用 _<b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>访问</b><b class='flag-5'>非标准</b><b class='flag-5'>SPI</b> <b class='flag-5'>ADC</b>的方法!

    MCU SPI接口访问非标准SPI ADC的方法

    当前许多精密模数转换器(ADC)具有串行外设接口(SPI)或某种串行接口,用以与包括微控制器单元(MCU)、DSP和FPGA在内的控制器进行
    发表于 02-09 11:28 5次下载
    <b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>访问</b><b class='flag-5'>非标准</b><b class='flag-5'>SPI</b> <b class='flag-5'>ADC</b>的方法

    能否用MCU访问非标准SPI接口?当然,方法交给你~

    能否用MCU访问非标准SPI接口?当然,方法交给你~
    的头像 发表于 10-17 14:37 540次阅读
    能否用<b class='flag-5'>MCU</b><b class='flag-5'>访问</b><b class='flag-5'>非标准</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>?当然,方法交给你~

    能否用MCU访问非标准SPI接口

    的印刷电路板(PCB)布线简单,并且有比并行接口更快的时钟速率,因而越来越受欢迎。而且,使用标准SPI很容易将ADC连接到控制器 。 一些新型ADC
    的头像 发表于 12-23 12:25 802次阅读
    能否用<b class='flag-5'>MCU</b><b class='flag-5'>访问</b><b class='flag-5'>非标准</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>?

    能否用MCU访问非标准SPI接口

    当前许多精密模数转换器(ADC)具有串行外设接口(SPI)或某种串行接口,用以与包括微控制器单元(MCU)、DSP和FPGA在内的控制器进行
    的头像 发表于 01-09 08:23 541次阅读
    能否用<b class='flag-5'>MCU</b><b class='flag-5'>访问</b><b class='flag-5'>非标准</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>?