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.

[参考译文] ADS7066:为什么写入后的第一次读取寄存器(操作码=\x08)无法正常工作(操作码=\x10)、为什么它从第二次读取开始就无法正常工作(操作码=\x10)?

Guru**** 2463330 points
Other Parts Discussed in Thread: ADS7066

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1378045/ads7066-why-the-first-read-register-opcode-x08-after-write-opcode-x10-is-not-functioning-why-is-it-functioning-from-the-second-read-opcode-x10

器件型号:ADS7066

工具与软件:

您好!
我在单模式下将 ADS7066用作 SPI 从器件。 假设我执行以下步骤、您可以帮助解答以下问题吗?
>>通过 SDI 发送字节
>>从 SDO 获取输出
步骤:
1.我发送了\x08\x04\x04 (3字节)来将 OP_MODE_CFG 寄存器设置为值4。
2.然后、我发送\x10\x04\x00来读取寄存器、我得到随机的3个字节、 (首次读取)=\x00\x0E\x00
3、现在、如果我发送\x10\x04\x00、我将获得显示为\x04\x00\x00的读取数据  (意味着设置)(二次读取)
问题:
为什么写入后的第一次读取寄存器无法正常工作、为什么从第二次读取开始可以正常工作?
//片段
WRITE_TO_SPI_DEVICE(): WRITE_COMMAND :[ 、 、 ]、READ_RESULT_VALUES:{0:2、1:0、2:0} =\x02\x00\x00
Read_from_spi_device ():read_command:[ 、 、 ]、READ_RESULT_VALUES:{0:0、1:14、2:0}=\x00\x0E\x00
Read_from_spi_device ():read_command:[ 、 、 ]、READ_RESULT_VALUES:{0:4、1:0、2:0}=\x04\x00\x00
注意:我使用 Ni8452作为单模式下的 SPI 主设备、并按照以下配置连接至 SPI 从设备
// NI845x 从设备连接配置
    ni845x_spi.set_ni845x_spi_configurations (
      chip_select = dev_types.ni845x_types.ChipSelect.chip_select_0、            #为 SPI 从设备选择的芯片选择
      SCLK_RATE = dev_types.ni845x_types.clockrate.clk_10000、                # deafult = 10MHz
      SCLK_RATE_POLARITY = DEV_TYPES.ni845x_TYPES.Cpol.kNi845xSpiClockPolarityIdleLow、  #默认值=低电平
      SCLK_PHASE = dev_types.ni845x_types.Cpha.kNi845xSpiClockPhaseFirstEdge、        # default =第一个边沿
      Bits_per_sample = 8、                                  # ADS7066样本大小= 8位
      端口= 0                                         #端口0到7因为8个设备可以在单一标准模式下连接
      )
设置为8的样本大小与 ADS7066的此行为是否有任何关系?
此致
Sai Satwik Vaddi.
开发人员
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好  Sai Satwik Vaddi

     

    ADS7066需要2个 SPI 帧才能从寄存器读回。 第一个 SPI 帧启用回读、然后第二个帧输出实际寄存器值。 这就是为什么你在"第二次阅读"之前没有得到这个值的原因。 请参阅第7.3.10.3.2节"寄存器读取"(如下)、了解更多信息和示意图。  

     

    此致、  

    Yolanda