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
    +关注

    关注

    97

    文章

    6314

    浏览量

    542603
  • 控制模块
    +关注

    关注

    2

    文章

    127

    浏览量

    18752
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1672

    浏览量

    90812

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

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

收藏 人收藏

    评论

    相关推荐

    请问esp32-s3支持3线spi吗?

    esp32-s3支持3线spi吗?有的话,可以提供相关的3线
    发表于 06-19 08:12

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

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

    请问esp32-s3如何进行3线spi通信?

    想通过esp32-s3驱动3线spi的屏,但是一直初始化不成功。所以来求助一下esp32的3线
    发表于 06-14 08:00

    ESP32三线SPI双向通信的话需要怎么配置呢?

    寻求帮助: ESP32三线SPI双向通信的话需要怎么配置呢?
    发表于 06-06 06:45

    FPGA设计中SPI的参数化结构设计方法

    为了避免每次SPI驱动重写,直接参数化,尽量一劳永逸。SPI master有啥用呢,你发现各种外围芯片的配置一般都是通过SPI配置的,只不过
    发表于 04-02 10:01 596次阅读
    FPGA设计中<b class='flag-5'>SPI</b>的参数化结构设计方法

    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 718次阅读
    能否用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 1988次阅读
    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 1533次阅读
    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>分析

    AD9523-1没有信号输出,SPI线线读写不成功的原因?

    8路时钟用于产生JESD204B接口使用的时钟,寄存器配置参考了AD9523-1开发板软件,调试了好久没有输出,spi寄存器配置的时候使用了三点式和四线式,三点式的时候SDIO一直为低
    发表于 12-06 07:48

    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

    单片机spi接口的使用方法有哪些(spi接口和串口的区别)

    如果单片机没有硬件SPI模块,或者需要额外的IO引脚来实现多个SPI设备的通信,可以使用软件SPI模拟。软件SPI通常使用GPIO口模拟SPI
    的头像 发表于 11-10 16:38 3104次阅读