MCU SPI读取非标准SPI端口的ADC接口数据
eetrendMcu 2023-03-16

当前许多精密模数转换器(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)。

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

与ADC的标准MCU SPI连接

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

图2. 与ADC从机的标准MCU SPI连接。

图2. 与ADC从机的标准MCU SPI连接。

要开始SPI通信,控制器必须发送时钟信号,并通过使能 CS 信号(通常是低电平有效信号)来选择ADC。SPI是全双工接口,因此控制器和ADC可以分别通过MOSI/DIN和MISO/DOUT线同时输出数据。控制器SPI接口允许用户灵活选择时钟的上升沿或下降沿来采样和/或移位数据。为了在主机和从机之间进行可靠的通信,用户必须遵守微控制器和ADC芯片的数字接口时序规范。

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

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

如果微控制器SPI和ADC串行接口具有标准SPI时序模式,那么用户设计PCB布线和开发驱动器固件不成问题。

但是,有些新型ADC的串行接口端口不是典型的SPI时序模式。MCU或DSP似乎不可能通过AD7768串行端口(一种非标准时序SPI端口)读取数据,如图4所示。

图4. AD7768 FORMATx = 1×时序图,仅通过DOUT0输出。

图4. AD7768 FORMATx = 1×时序图,仅通过DOUT0输出。

与STM32F429 SPI连接

如何操纵标准微控制器SPI以便与具有非标准SPI端口的ADC接口读取数据呢?以STM32F429微控制器读取AD7768数据为例。如图4所示,当FORMATx = 11或10时,通道0至通道7仅通过DOUT0输出 数据。在标准工作模式下, AD7768/AD7768-4 作为主机工作,数据流入MCU、DSP或FPGA。AD7768/AD7768-4向从机提供数据、数据时钟(DCLK)和下降沿帧使能信号(DRDY)。

STM32Fxxx系列微控制器广泛用于很多不同的应用中。该MCU有多个SPI端口,可以使用典型的SPI时序模式将其配置为SPI主机或从机。

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连接。

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

需要解决的问题:

  • AD7768用作SPI主机,故必须将STM32F429I SPI配置为SPI从机。

  • DRDY 高电平脉冲只持续一个DCLK周期,这不是典型的CS。

  • 完成所有通道数据位的输出之后,DCLK继续输出,DRDY为低电平。

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

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

解决方案:MCU SPI作为从机,通过一条DOUT线与SPI主机ADC接口。

  • 将STM32F429的一个SPI端口(如SPI4)配置为从机,以DCLK速率接收MOSI上的数据位。

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

  • 接收到通道0至通道7的所有数据后,应禁用SPI以防止读取额外的无效数据,因为 DRDY 会使SPI从机 CS 变为低电平,并且DCLK保持切换。

MCU固件开发注意事项

图7. 配SPI4外设。

图7. 配SPI4外设。

当软件处于中断模式时,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布线或缓冲增加。 

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 【立即预约】Keysight直播:搞懂介电常数那些事儿


  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 基于C51单片机实现汽车座椅自动控制系统的软硬件设计

    引言 随着人们生活水平的提高,对汽车座椅的舒适性要求也越来越高,要求对汽车座椅地调节能够更加简单、方便、快捷。目前,汽车座椅位置的调节多采用基于手动调节方式的机械和电动控制两种方式。汽车座椅位置的调节...

    2小时前
  • MCS51单片机程序设计时堆栈的计算方法解析

    用C语言进行MCS51系列单片机程序设计是单片机开发和应用的必然趋势。Keil公司的C51编译器支持经典8051和8051派生产品的版本,通称为Cx51。应该说,Cx51是C语言在MCS51单片机上的扩展,既有C语言的共性,又有它自己...

    2小时前
  • 51单片机定时器工作原理及用法

    TMOD : 控制定时器的工作方式。8个bit,高四位 bit 控制 T1,、低四位 bit 控制 T0。因为定时器有4种工作方式;TMOD = 0x00(工作方式0),TMOD = 0x01(工作方式0),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。...

    2小时前
  • 51单片机学习单片机之路总结

    学习单片机有一学期了,现在也由51转到STM32了。一直想对51的学习做一个总结。也希望对别人有一些启发。也给后学者提供一些建议。当然本文是我对自己学习过程的总结,若有不对的地方,还请高手指出。 我想,再看本...

    2小时前
  • hot51增强型单片机开发板原理图

    功能要求: 一):绿灯25s倒计时,绿灯过度红灯有5s黄灯时间,红灯25s后直接跳绿灯。 二):按键按下模拟闯红灯输入,产生5s蜂鸣器鸣叫。 开发环境: 软件:Keil uVision4 硬件:HOT51增强型单片机开发板 程序代码:...

    昨天
  • 51单片机的延时子程序

    延时程序在单片机编程中使用非常广泛,但一些读者在学习中不知道延时程序怎么编程,不知道机器周期和指令周期的区别,不知道延时程序指令的用法, ,本文就此问题从延时程序的基本概念、机器周期和指令周期的区别和联系...

    昨天
  • 什么是Flash盘?Flash盘的结构是什么样的?

    Flash是大家常使用的存储之一,对于Flash,大家或多或少有所了解。上篇文章中,小编对Flash闪存的类型有所介绍。为继续增进大家对Flash的认识,本文将对Flash盘、Flash盘结构以及Flash读写操作予以介绍。如果你对本...

    昨天
  • 深谈嵌入式系统,嵌入式系统是如何组成的?

    嵌入式系统在生活中有诸多应用,大家对于嵌入式系统或多或少有所耳闻。在前两篇文章中,小编对嵌入式系统进行过详细介绍。为继续增进大家对嵌入式系统的认识,本文将对嵌入式系统的组成加以说明。如果你对嵌入式系...

    06-27
  • 嵌入式系统秘籍共享,最全嵌入式系统解析

    嵌入式系统的应用十分广泛,因此越来越多的人学习嵌入式系统。由此,在学习嵌入式系统之前,我们应当对嵌入式系统具备一些认识。所以在本文余下部分,小编将对嵌入式系统进行全面解析。如果你对嵌入式系统具有兴趣...

    06-27
  • 51单片机超声波测距程序详解

    51单片机超声波测距程序详解 超声波四通道测距:超声波测距实现分为三大块: 其一是12864带字库的液晶驱动程序: 代码如下: /////////////////12864驱动程序/////////////////////////// //1写数据 void WriteDat...

    06-25
  • 51系列单片机的引脚图

    51系列单片机的引脚图 端子介绍 l P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。 l P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。 l P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。 l P3.0~P3.7 P2口8...

    06-25
  • 51单片机串口通信需要加超时中断吗?

    接收数据时,超过一定时间就算出错. 这个超时的时间是单片机自己算出的吗?超时的时间是由编程序的人定的,他定多长就多长从一段程序开始 实现电脑向 单片机发送一些数据,单片机返回Iget +数据 #include #define u...

    06-25
下载排行榜
更多
评测报告
更多
EE直播间
更多
广告