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.

[参考译文] ADC34RF52:CAL_STATUS 寄存器

Guru**** 2416110 points
Other Parts Discussed in Thread: ADC34RF52, ADC32RF55

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1446778/adc34rf52-cal_status-register

器件型号:ADC34RF52
主题中讨论的其他器件: ADC32RF55

工具与软件:

嗨、团队:


我的客户正在使用 ADC34RF52评估此电路板、但校准尚未正确完成、而且模数转换数据未正确输出。

CAL_STATUS 寄存器(校准页面上的地址0x298)的说明表明0xE 表示校准成功、但当前读取值为0x1E 或0x6A。 您能告诉我这些值表示什么吗?

如上一线程所述、通过直接复制该值来设置灰色的寄存器值。
如果它是跨界页面(如数据表中的表8-11)、是否可以在左列、中间列和右列中设置寄存器设置顺序(忽略跨界页面)?

此致、
伊藤和树

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

    Kazuki

    该表必须写在左列(跨界页)、中间列(跨界页)和右列(跨界页)中。

    值0xE 表示校准成功、因为0x298寄存器的4LSB 表示校准成功、因此回读0x1E 是正常的、实际上是最常见的回读值。 我不确定0x6A 值意味着什么。 我必须要求设计人员查看他们是否可以提供任何指示。

    谢谢、Chase

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

    尊敬的 Chase-San:

    感谢您的答复。 由于校准已经成功、我想在寄存器(数字页地址0x34)中捕获并检查 ADC 内核输出的数据。 对于寄存器中的位6 (数字页上的地址0x34)、字段列显示"MEM_STROBE"、但说明列包含快速断电模式的说明、因此内容似乎不正确。 是否应该在位[5:4]设置后将位6设置为1以捕获 ADC 数据? 捕获数据以什么格式存储? 它是由寄存器(数字页地址0x33)中的位3 (格式)设置的格式吗?

    此致、
    伊藤和树

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

    尊敬的 Chase-San:

    我还有一个与 ADC 数据采集相关的问题。

    捕获的数据被存储在地址0x800至0x87F、但是存储的顺序是什么?  

    此致、

    伊藤和树

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

    Kazuki

    我正在检查这个、一旦我发现、我将返回信息。 这将需要2-3天。

    谢谢、Chase

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

    尊敬的 Kazuki:

    1.读取校准成功字段仅适用于前台校准模式、如果要使用后台校准模式、则不会成功读取。 使用后台校准模式时、ADC 始终处于已校准状态、因此没有用于指示状态的字段、而是假定始终已校准。 根据这些表、下面提供了触发单个前台校准和后台校准的方法。

    前台校准:

    ADC32RF55.WRITE (0x046、0x02)
    ADC32RF55.WRITE (0x045、0x8A)
    ADC32RF55.WRITE (0x045、0x0A)
    等待(1.3*3e9/fs)秒
    ADC32RF55.READ (0x298)= 0x1E

    后台校准:

    ADC32RF55.WRITE (0x046、0x02)
    ADC32RF55.WRITE (0x046、0x03)
    ADC32RF55.WRITE (0x045、0x0A)

    没有需要读回的寄存器来确认校准已完成。 内部 ADC 内核每13.5ms 与最近校准的内核交换一次。

    2/3. 数据表中缺少一些用于执行此功能的寄存器。 请查找 ADC34RF52所需的以下序列。 (仅在对完整启动序列进行编程并执行以下步骤后、我才获得良好的结果)

    EVM.ADC.SPI.WRITE (0x05、0x04)
    EVM.ADC.SPI.WRITE (0xA0、0x00)
    EVM.ADC.SPI.WRITE (0xA2、0x00)
    EVM.ADC.SPI.WRITE (0x05、0x00)
    EVM.ADC.SPI.WRITE (0x04、0x01)
    EVM.ADC.SPI.WRITE (0x20、0x04)
    EVM.ADC.SPI.WRITE (0xAF、0x90)
    EVM.ADC.SPI.WRITE (0x04、0x01)
    EVM.ADC.SPI.WRITE (0x20、0x00)
    EVM.ADC.SPI.WRITE (0x04、0x00)
    EVM.ADC.SPI.WRITE (0x05、0x02)
    EVM.ADC.SPI.write (0x34、channel) ###通道选项:0x00 = INA、0x10 INB、0x20:INC、0x30:IND
    EVM.ADC.SPI.WRITE (0x34、通道 + 0x40) ###通过向通道值添加0x40使位6生效。 这将触发捕获以启动缓冲区。

    由于寄存器大小、生成的存储数据采用8位格式、因此顺序寄存器必须组合为单个16位样本。 这些样本的数据结构如下:

    S0[15:8]、S1[7:0]、S1[15:8]、S1[7:0]、... S63[15:8]、S63[7:0]

    以下是我在 python 中用于读取数据并将其解析为64个16位样本的逻辑。

    READ_BACK_DATA =[]
    对于 I IN 范围(0x800、0x87F+1):
      READ_BACK_DATA.append (EVM.ADC.SPI.Read (I))

    INTERNAL_BUFFER =[]
    #一次对数据的两个元素进行迭代
    对于范围(0、len (READ_BACK_DATA)、2)中的 I:
      #获取高位和低位字节
      high_byte = READ_BACK_DATA[i]
      low_byte = READ_BACK_DATA[i + 1]
      
      #将高字节和低字节组合成一个16位整数
      combined_value =(high_byte << 8)+ low_byte
      
      将#转换为二进制补码格式
      如果 combined_value >= 0x8000: #检查是否设置了符号位
        Combusted_Value ->= 0x10000 #减2^16即可获得负值
        
      #将带符号的16位整数附加到列表中
      internal_buffer.append (combined_value)
    谢谢、Chase