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

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

3天内不再提示

ADC的3线SPI配置时序

FPGA之家 来源:FPGA之家 2020-09-07 17:12 次阅读

上篇以德州仪器(TI)的高速ADC芯片——ads52j90为例,介绍完了4线SPI配置时序。本篇将以Analog Device(ADI)的多通道高速ADC芯片AD9249为例,介绍3线SPI读写配置时序。另外,大家如果想详细了解Analog Device(ADI)公司的关于SPI的所有内容,推荐大家在其官网阅读AN-877。

AD9249的SPI控制模块包含4根信号线,即CSB1、CSB2、SDIO以及SCLK。但CSB1、CSB2可以一起由CSB来控制,实际上就是3线SPI。由于3线SPI数据的读、写操作在同一根信号线SDIO上实现,因此其配置方式与4线的配置稍微有些不一样。下面我们将详细介绍读写操作:

CSB:SPI控制读写使能信号;

SDIO:SPI的数据、地址读写端口

SCLK:FPGA提供给ADC的SPI接口时钟

如下图1所示为该ADC的SPI读、写配置时序图。其中CSB和SCLK的操作和上篇介绍的4线SPI配置相同,图上的时序参数在其datasheet上也有明确的说明,这里就不介绍了。

3线SPI与4线SPI配置的主要不同之处在传输的数据格式以及I/O转换上。其读写数据格式由控制命令+地址+数据组成,而上篇提到的4线配置只有地址+数据。

图1:SPI读、写时序图

其中R/~W为高电平时,表示读操作,低电平表示写操作。W1,W0表示要读写的数据字节数,一般都设为0,代表每次读写一个寄存器地址的数据。A12~A0表示13bit的寄存器地址。D7~D0表示要读写的8bit寄存器数据。

因此我们在SPI写操作时,只需写入1bit 1+ 2bit 0 +13bit地址+ 8bit数据即可。其配置的方法和上篇的4线SPI写操作相同。但当我们在执行SPI读操作时,就需要注意了:

首先需写入1bit 0+ 2bit 0 +13bit地址,当最后1bit的地址A0在SCLK的上升沿写入SDIO后,SDIO会由输入口变为输出口,然后在接下来的8个SCLK下降沿,SDIO会输出寄存器的8bit数据。因此,在ADC的SDIO由输入变为输出口时,FPGA端的SDIO必须同步由输出口变为输入口,并在SCLK上升沿接收这8bit数据最稳定,FPGA端口的这种I/O转换可以通过其内置的三态门来实现。

如图2所示为SDIO由输入口变为输出口的时序控制图,tEN_SDIO为转换时间,其最小时间为10ns,参考零点为SCLK下降沿。

图2:SDIO输入转换为输出的时序图

如图3所示为SDIO由输出口变为输入口的时序控制图,tDIS_SDIO为转换时间,其最小时间也为10ns,参考零点为SCLK上升沿。

图3:SDIO输出转换为输入的时序图

3线SPI的读写时序分析就介绍到这里了,同样强调几个关键点:

关键点1:CSB在读写操作时,必须拉低。读写完成之后,必须拉高。

关键点2:SDIO作为输入口时,数据每次必须在SCLK的上升沿写入SPI。

关键点3:SDIO作为输出口时,寄存器数据每次在SCLK的下降沿输出SPI,FPGA端在SCLK的上升沿处捕获数据最稳定。

关键点4:一定要满足datasheet给出的SPI的时序参数,并在代码实现时要留有适当的时序裕量。

关键点5:注意FPGA端的SDIO口的三态控制逻辑,以便正确读写ADC寄存器。

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

    关注

    98

    文章

    6429

    浏览量

    544035
  • 控制模块
    +关注

    关注

    2

    文章

    129

    浏览量

    18822
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1700

    浏览量

    91294

原文标题:FPGA通过SPI对ADC配置简介(三)---3线SPI配置时序分析

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问ADS8671读写时序是怎么样的?

    ;_00000000_00000000,然后再发送16bit的sclk来读取寄存器数据,但是读取到的数据是adc的转换数据,并且写入也没成功,看过spi时序是对的,想请问这个期间的读写时序
    发表于 11-21 08:23

    ADC3663的SPI配置管脚连接至FPGA时遇到IO电平不匹配怎么解决?

    ADC3663的SPI配置管脚连接至FPGA时遇到IO电平不匹配问题。FPGA的IO是2.5V CMOS电平,ADC3663是1.8V CMOS电平,但是3663的
    发表于 11-14 08:08

    ADS127L11配置ADC使用外部时钟以及FILTER[4:0]都不成功,为什么?

    配置ADC使用外部时钟以及FILTER[4:0]都不成功,spi时序都是正常的,使用的是4线spi
    发表于 11-13 08:03

    ADS127L11使用4线spi不管怎么配置寄存器,示波器看到ADC的drdy脉冲周期始终是400K,怎么回事?

    我使用4线spi不管怎么配置寄存器,示波器看到ADC的drdy脉冲周期始终是400K,不知道怎么回事?我检查时序也都是符合要求的正常操作。
    发表于 11-13 06:36

    TPS65910x时序配置

    电子发烧友网站提供《TPS65910x时序配置.pdf》资料免费下载
    发表于 10-25 09:57 0次下载
    TPS65910x<b class='flag-5'>时序</b><b class='flag-5'>配置</b>

    瀚海微SD NAND之SD 协议(42)SPI总线时序

    -卡已准备好 下面的时序图描述了基本的命令响应(无数据)SPI事务。 主机命令到卡响应卡忙 下面的时序图描述了R1b响应的命令响应事务(例如SET_WRITE_PROT和ERASE)。 当卡信号繁忙时,主机可以在任何时候取消选择
    的头像 发表于 10-21 10:19 206次阅读
    瀚海微SD NAND之SD 协议(42)<b class='flag-5'>SPI</b>总线<b class='flag-5'>时序</b>

    esp32-s3 spi初始化如何配置SPI_DEVICE_3WIRE?

    再来求助一下,spi初始化配置中有SPI_DEVICE_3WIRE,是否说明支持3线spi,支持
    发表于 06-19 06:23

    STM32H7的Octo-SPI或者Quad-SPI能否支持读取ADC的数据?

    ADC使用的AD7380.2通道4M的同步ADCSPI接口需要使用2个数据接收引脚 和一个数据输出引脚。等于是三根数据线。 普通的SPI
    发表于 04-01 06:10

    STM32F407 3线SPI如何配置

    现在需要3线SPI进行通信,也就是从机的MOSI和MISO为一根线。 我在参考手册看到,STM32F407可以满足双向数据线 请问ST官方
    发表于 03-26 07:16

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

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

    FPGA通过SPIADC配置简介(三)3线SPI配置时序分析

    AD9249的SPI控制模块包含4根信号线,即CSB1、CSB2、SDIO以及SCLK。但CSB1、CSB2可以一起由CSB来控制,实际上就是3线S
    的头像 发表于 12-12 10:47 2363次阅读
    FPGA通过<b class='flag-5'>SPI</b>对<b class='flag-5'>ADC</b><b class='flag-5'>配置</b>简介(三)<b class='flag-5'>3</b><b class='flag-5'>线</b><b class='flag-5'>SPI</b><b class='flag-5'>配置</b><b class='flag-5'>时序</b>分析

    FPGA通过SPIADC配置简介(二)-4线SPI配置时序分析

    本篇将以德州仪器(TI)的高速ADC芯片—ads52j90为例,进行ADC的4线SPI配置时序
    的头像 发表于 12-11 09:05 1765次阅读
    FPGA通过<b class='flag-5'>SPI</b>对<b class='flag-5'>ADC</b><b class='flag-5'>配置</b>简介(二)-4<b class='flag-5'>线</b><b class='flag-5'>SPI</b><b class='flag-5'>配置</b><b class='flag-5'>时序</b>分析

    FPGA驱动AD4001 ,3线Turbo模式,时序要求已经满足,但是输出不正常的原因?

    问题描述: 1、FPGA驱动AD4001 ,3线Turbo模式,时序要求已经满足,但是输出不正常。 2、已经按照spec中的说明,将spi_clk 设置为100Mhz(spec要求
    发表于 12-06 06:30

    根据AD7916时序配置3线无繁忙提示读不到信号是为什么?

    根据AD7916时序配置3线无繁忙提示读不到信号 无效的 AD_ read( 撤销) { 8 吨 = 0; adc_nss(1);
    发表于 12-01 16:07

    AD5412非标的三线SPI如何与标准的四线SPI通信?

    AD5412非标的三线SPI如何与标准的四线SPI通信,芯片手册中的时序不是标准的SPI
    发表于 12-01 06:31