This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS8168:读取 REG_ACCESS 寄存器失败

Guru**** 2378640 points
Other Parts Discussed in Thread: ADS8168
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1494759/ads8168-failed-to-read-reg_access-register

器件型号:ADS8168

工具/软件:

您好、

我想验证定制电路板上 MCU 和 ADS8168之间的通信。

因此、将0x0080AA 写入 REG_ASSECC、并预计读取0xAAXXXX。

但是、它似乎正在接收垃圾数据。

-Write 0x0800AA  

-写入0x100000并读取0x03E000

Ch1:时钟

CH2:MOSI (ADS8168 SDI)

CH3:MISO (ADS8168 SDO-0)、 SDO-1悬空

Ch4:Cs.

有什么想法这里的问题可能是什么?

此致、

Han

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Han、

    感谢您在 TI E2E 论坛上发帖!  

    只是为了确认、您正在写入和读取"REG_ACESS"寄存器?  

    根据表6-8和第7.1.1节、写入 "REG_ACESS"(地址0x00)应该为0x0800AA、读取0x100000、然后是第二个帧来读取寄存器内容。

     您的问题  

    Unknown 说:
    将0x0080AA 写入 REG_ASSECC

    然后更接近您分享的示波器屏幕截图:

    [报价 userid="648568" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1494759/ads8168-failed-to-read-reg_access-register ]-Write 0x0800AA  

     后者是正确的,但从查看您的第一次示波器拍摄,似乎0x0080AA 实际上正在发送到设备。 您能否请确认发送了0x0800AA 命令、然后确认返回数据是什么?  

    此致、  

    Yolanda

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Yolanda。

    我会采纳您的建议并查看它。

    感谢您的回复


    此致、
    Han

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Yolanda。

    如您所述、我使用了错误的命令和地址字段。

    现在、我可以自由读取和写入寄存器。

    此外、我还对在自动模式下读取数据的过程有疑问。

    我尝试按如下方式启动自动模式:

    1、RESET (RST 引脚低电平/高电平)

    2.启用寄存器写入(REG_ACCESS: 0xAA)

    3. 除 ref/2缓冲器之外的所有上电(PD_CNTL:0x10)

    设置数据 TYPE_DATA + AIN ID + STATE (DATA_CNTL:0x20)

    5.设置 Vref_4V096 (OFST_CAL:0x02)

    6.设置自动模式(DEVICE_CFG : 0x02)

    7、设置自动模式 CONFIGURATION_AUTO REPEAT 并使用所有 AIN (AUTO_SEQ_CFG1:0xFF、 AUTO_SEQ_CFG2:0x01)

    8.启动自动模式序列(SEQ_START:0x01)

    但是、我似乎只从 Channel_ID 寄存器和接收到的数据字段中的 AIN0接收数据。

    如何从 AIN0到 AIN7接收所有数据?

    此致、  

    Yolanda

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Han、  

    我很高兴听到寄存器的读取/写入现在起作用!  感谢您详细的步骤,你的程序,这是非常有帮助的!  

    您配置自动模式的总体步骤是正确的、我只是对器件的其他配置有一些问题:

    1. 切换 RST 引脚是一种很好的做法、我只想确认是否 满足复位和上电/使能时序要求 (最小100ns 的低电平脉冲、RST 至就绪上升延迟就足够了)
      1.   
      2. 对于 PD 延迟、可能并不需要所有延迟、因为默认情况下、这些延迟都是0b。 异步复位将是我要确保有足够时间或此延迟不会导致错过某些配置的那个延迟。  
    2. 是否正在使用内部基准、或者为此器件提供外部基准?
      1. 在第3步中、启用除 ref/2外的所有选项、这意味着启用 ADC、内部基准和基准缓冲器。 如果您打算使用内部基准而不是 ref/2、所有这些都很好。 但在步骤5中、可以 通过写入 OFST_CAL 寄存器来设置外部基准的偏移校准。  
      2. 如果您使用的是内部基准、请跳过步骤5并告诉我这样是否解决了问题、或者如果您提供了外部基准、请调整步骤3以使内部基准断电。  
    3. 您能告诉我 RST、REFP、REFM 和 REFIO 引脚的状态吗?
    4. 另一点我想确认、假设器件的唯一配置是共享的配置:
      1. 所有 SDO 配置都是默认配置? SPI-00、SDO-1是 Hi-Z、单个数据速率、左对齐数据帧、没有固定数据输出长度?
      2. 在步骤4中、您将数据输出格式配置为 ADC_DATA (16位)+ Ch ID (4位)+ Device Status (4位)+ Ch Config (2位)、从而使总数据输出帧长度= 26位。  
        1. 读取数据时、是否有足够的时钟来读取完整的26位帧?  
        2. 此处要检查的另一个事项是满足器件的时序要求、尤其是 THT_CKCS  
      3. 确认所有的时序规格并确保有足够的时钟是这里的第一步、另一个选项(如果当前数据帧为24位)是尝试将 DATA_OUT_FORMAT (DATA_CNTL[5:4])设置为0xb、然后查看是否修复了问题。 或者配置数据帧以允许26位帧。  
      4. 您能否分享所使用的时钟速度和 SPI 配置以及数据帧宽度? 或者、您在步骤8之后看到的数据的屏幕截图?

    此致、  

    Yolanda

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Yolanda。

    跳过步骤3和5后、自动模式已激活、并且成功接收到通道信息。

    `ll 有其他问题、我会打开一个新主题。

    感谢您发送编修。

    此致、  

    Han