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.

[参考译文] ADS1256:ADS1256寄存器读写问题。

Guru**** 2535750 points
Other Parts Discussed in Thread: ADS1256

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/794587/ads1256-ads1256-register-read-write-issue

器件型号:ADS1256

  您好!

我有 ADS1256 ADC 模块、它与 STM32F746相连、

根据数据表、I 与读取寄存器进行了量程、默认值是可以的、但当我向任何寄存器写入任何值时、MSB 等于 I 位7在读取时始终为"1"、

例如、

DRATE:A/D 数据速率(地址03h)

如果我写入一个0x33、即00110011--15SPS

读取时、我始终得到一个 b3、即10110011、

同样、对于所有寄存器读取、位7始终为"1"  

请找到所附的逻辑分析仪屏幕截图

谢谢你。

 

 

  

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

    对于 ADS1256、某些命令必须在命令输入和数据检索之间插入延迟。 RREG 命令是其中之一-请参阅第36页和图34上的 RREG 说明。 从上面的屏幕截图中(顺便说一下、感谢您的参与!) 在发送第二个0x00之前、我无法判断您是否满足了 T6延迟。 T6延迟在数据表第6页的时序特性表中定义。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tom、

    T6延迟似乎不正确  

    从数据表中、

    T6
    从 DIN 的最后一个 SCLK 边沿到 DOUT 的第一个 SCLK 上升边沿的延迟:RDATA、RDATAC、
    RREG 命令


    τCLKIN μ A

    主时钟周期为0.625us * 50 = 31.25us -- T6延迟

    在执行0x00第二次命令读取寄存器后、我应用32us 的延迟、现在读取寄存器看起来正常、我检查了可重复性、看起来正常、

    正确的 T6延迟、我无法使用 T6获取正确的数据、请更正。

    谢谢、

    Vikas。

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

    让我看看我是否理解、当你在 RREG 命令之后添加延迟时、你会获得适当的寄存器详细信息数据、对吗? 但是、由于该延迟、您无法获得正确的转换数据? 是这样吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Vikas、

    当您说主时钟周期为"0.625us"时、这是否意味着您要向 CLKIN 引脚应用1.6MHz 外部时钟源? 您的主时钟频率是多少?

    7.68MHz 是该器件的标称主时钟频率。 此外,SCLK 频率不得超过4*μ τCLKIN。

    因此、如果 fCLKIN 为7.86MHz、那么 SCLK 不应超过1.92MHz。 如果是1.6MHz 主时钟、SCLK 不应超过400kHz、这似乎违反了我从逻辑分析仪屏幕截图中估算出的~800kHz SCLK 频率。 请告诉我您的时钟频率是否正确...

    如果您可以使用 Read data (RDATA) SPI 命令共享另一个屏幕截图、这将很有帮助。 此外、让我们知道您的输入电压和基准电压是多少。 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chris:

    读取和写入寄存器是可以的

    在单次模式0x01中读取正确的数据时遇到问题。  

    频率为830kHz

    在读取数据时、我每次都获取随机值、一段时间后、我会说在30-50秒后、连续读取停止、输出始终为16777215 -0xFFFF

    我计划读取单端 CH1-ain0  

    ADC 配置为-状态为0xf0、其中上半字节为 xxxx

    寄存器多路复用器位于0x0F

    reg adcon 位于0x20

    reg draate 为0x03 --目前最低的数据速率

    编程 SPI 配置
    
    hspi2.instance = SPI2;
    hspi2.Init.Mode = SPI_MODE_MASTER;
    hspi2.Init.DIRECTION = SPI_DIRECT_2LINES;
    hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
    hspi2.Init.CLKPolarity = SPI_POLIT_LOW;
    hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
    hspi2.Init.NSS = SPI_NSS_Soft;
    hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;//------ 844kbits/sec
    hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
    hspi2.Init.TIMode = SPI_TIMDE_DISABLE;
    hspi2.Init.CRCCalctration= SPI_CRCALLATION_DISABLE;
    hspi2.Init.CRCPolomial = SPI_CLCI_INCE_LENGTH
    ;hspi_CRC7 = SPI_CLCI_CI_INCE_INZATION;HCIZIZE = SPIZE = SPIZE
    hspi2.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; 



    我不理解"1.6MHz 主时钟、那么 SCLK 不应超过400kHz"  

    如果我降低时钟频率、因为在屏幕截图中、当读取和写入时钟看起来是830kHz

    请改正。

    谢谢你。  

     

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

    大家好、Vikas、

    当问及主时钟频率(fCLKIN)时、我想知道您连接到 XTAL1/CLKIN 和 XTAL2引脚的是什么。 您是使用晶体为 ADS1256计时、还是使用连接到 XTAL1/CLKIN 引脚的外部时钟源? 该时钟的频率是多少?

    SCLK 信号是用于串行通信的独立信号;然而、最大 SCLK 频率被限制在 ADC 主时钟频率的四分之一。

    感谢您提供额外的屏幕截图。 我注意到的一点是、在计时输出 hte 数据时、您似乎是向 ADC 发送随机命令。 我建议在 RDATA 命令(0x03)之后、在计时输出数据时仅发送 WAKEUP (0x00)命令(这些命令等效于 NOP):