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.

[参考译文] ADS8675:在寄存器中读取和写入时出现问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/924697/ads8675-problem-in-reading-and-writing-in-registers

器件型号:ADS8675
主题中讨论的其他器件: ADS8689

您好!  

我叫 Rameez、我要尝试使用 HAL lib 写入和读取 ADS8675到 STM32的寄存器。  

HAL_GPIO_WritePin (GPIOA、CS_Pin、GPIO_PIN_SET);////// 关闭 CS HAL_DELAY
(10);

HAL_GPIO_WritePin (GPIOA、CS_Pin、GPIO_PIN_RESET);//// 打开 spiData[0]
= 0xD0;
spiData[1]=0x04;
spiData[2]=0x00;
spiData[3]=0x10;
HAL_SPI_transmit (&hspi1、spiData、4、50);
HAL_GPIO_WritePin (GPIOA、CS_Pin、GPIO_PIN_SET);////// 关闭 CS HAL_GPIO_WritePin

(GPIOA、CS_Pin、GPIO_PIN_RESET);//// 在
spiData2[0]=0x48;
spiData2[1]=0x04;
spiData[2]=0x00;
spiData[3]=0x00;
HAL_SPI_transmit (&spiData1、spiData2、4、50)上打开 CS;
HAL_DELAY (1000);
HAL_SPI_Receive (&hspi1、Rx_buff、4、50);
HAL_GPIO_WritePin (GPIOA、CS_Pin、GPIO_PIN_SET); ////////// 关闭 CS 

我使用上述代码写入和读取寄存器、但无法读取寄存器的写入值。

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

    您好、Rameez、

    您对 ADC 的命令不正确、请参阅 E2E 论坛上另一篇文章中的答案:

    ADS8689:了解 SPI 命令

    ADS8675和 ADS8689都属于同一 ADC 系列、并且具有相同的命令。

    此致、

    戴尔

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

    尊敬的 Dale LI:

    感谢您的回答。

    我尝试将32位数据发送到4个字节中,这是我错误的。 在上面的代码中、我尝试通过 向 RST_PWRCTL_REG 寄存器(地址= 04h)写入0xD0040010来禁用报警功能。

    我再次尝试通过写入0x48040000来读取同一个寄存器。

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

    您好、Rameez、

    抱歉让您感到困惑。

    1.您是否能够在不对内部寄存器进行编程的情况下从 ADC 获取正确的数据? 这可以确保您的 SPI 时序正确。

    2.能否提供用示波器捕获的时序图、包括/CS、SCLK、SDI 和 SDO?两个帧的时序将很好、因为数据将在下一帧中更新或返回。

    此致、

    戴尔

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

    您好 Dale、

    我现在可以从 ADC 读取寄存器数据。 现在、我将面临另一个如何读取 ADC 的模拟值的问题、我需要读取这些值以获取 ADC 输出。

    此致、

    Rameez

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

    您好 Dale、

    我尝试将范围 SEL reg (14h)和范围配置为3xVref。 我将提供地址0xD0140008。 在读取相同的寄存器时、有时我会正确读取寄存器值0x00000008、但有时该值会变为0x00000004。 请帮我解决这个问题。

    此致

    Rameez

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

    [引用用户="Rameez Mulla"]

    您好 Dale、

    我尝试将范围 SEL reg (14h)和范围配置为3xVref。 我将提供地址0xD0140008。 在读取相同的寄存器时、有时我会正确读取寄存器值0x00000008、但有时该值会变为0x00000004。 请帮我解决这个问题。

    此致

    Rameez

    [/报价]

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

    您好、Rameez、

    感谢您提供更多信息。

    无需寄存器即可读取该 ADC 上的转换代码、请参阅图5和6中的时序。 确保您获得了正确的数据、然后您可以尝试更改内部寄存器值并读回它。 我需要使用包括/CS、SCLK、SDI 和 SDO 在内的示波器捕获您的时序图、以检查您的寄存器写入和读取是否正确。

    此致、

    戴尔