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.

[参考译文] ADS1292R:正确数据采集出现问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1409608/ads1292r-problem-with-correct-data-acquisition

器件型号:ADS1292R
主题中讨论的其他器件: ADS1292

工具与软件:

您好、 Fellows、
我认为有一个新问题、我认为这是 SPI 中的时钟通信问题。

或许、可以帮我解决这个问题、下面我分享了使用数字分析仪观察过程中拍摄的一些图片。

通信似乎不同步、因此这些值未正确显示。 为了实现通信、我使用 SMCLK 和12MHz、该 SMCLK 源自时钟系统、频率为24MHz 的 MCLK。 通过这种方式 、SPI 时钟为500kHz。

有人可以帮我吗?

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

    您好 Armando:

    感谢您发帖。

    请查看  E2E 上的生物电势常见问题解答页面、了解有关 ADS1292R 的一些有用调试技巧。 500kHz SCLK 不是问题。 很难理解根据提供的图像在每帧中传达的内容。 我建议仅捕获一个或两个帧(即在寄存器读取或写入期间)并检查分析仪输出。

    此致、

    Ryan

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

    您好、Ryan、  

    感谢您的快速响应、我与您分享 一帧的捕获。  

    我阅读了所有常见问题解答、对我来说、代码中似乎存在 加电或  通信计时问题。 此外 、我共享用于与 AFE 进行通信的代码、该器件应在 AVDD = 3V 且 DVDD = 1.8V 的条件下工作

    main.c

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <msp432.h>
    #include <stdio.h>
    #include <stdbool.h>
    #include "cs.h"
    #include "uart.h"
    #include "spi.h"
    #include "delay.h"
    #include "ads1292r.h"
    #define LOW 0x00
    #define HIGH 0x01
    uint32_t DCO_FREQ;
    uint8_t read_ADS1292R = 0;
    extern uint8_t SPI_TX_BUFF[SPI_TX_BUFF_SIZE];
    extern uint8_t SPI_RXBUFF[SPI_RXBUFF_SIZE], SPI_RX_COUNT, SPI_RX_EXP_COUNT;
    volatile bool ADS1292R_RECEIVED_DATA = false;
    unsigned long uecgTemp = 0;
    signed long secgTemp = 0;
    volatile signed long s32DaqVals[8];
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    ads1292.c

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    uint8_t SPI_TX_BUFF[SPI_TX_BUFF_SIZE];
    uint8_t SPI_RXBUFF[SPI_RXBUFF_SIZE], SPI_RX_COUNT = 0, SPI_RX_EXP_COUNT = 0;
    long ADS1292_ECG_DATA_BUFFER[6];
    extern uint8_t read_ADS1292R;
    extern volatile bool ADS1292R_RECEIVED_DATA;
    static volatile uint8_t RX_Data = 0;
    void set_ads1292r(void) {
    drdy_interruptsADS();
    _delay(1, 's');
    resetADS();
    _delay(100, 'm');
    start_disableADS(); // Set START pin to LOW
    start_enableADS(); // Set START pin to HIGH
    start_disableADS(); // Set START pin to LOW
    hard_stopADS();
    _delay(10, 'm');
    start_data_convertionCMD();
    soft_stopADS();
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    SPI.c

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

    您好  Armando:

    ADS1292期望 CPOL = 0且 CPHA = 1、因此后沿用于采集数据。 逻辑分析仪捕获结果将前沿显示为捕获边沿。 请在您的逻辑分析仪和控制器设置中检查此配置。

    话虽如此、上图中的第一个字节似乎是向地址0x01发送 WREG 命令、但我看不到帧的其余部分(即 NCS 返回高电平时)。 您是否已成功写入寄存器配置并读回已配置的设置?

    另一个令人担忧的问题是 MISO 线路、它在高频率切换、比 SCLK 快得多。  请检查此连接。

    AVDD = 3V 和 DVDD = 1.8V 没有问题。

    此致、

    Ryan

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

    Ryan、您好!
    在微控制器论坛上的各位同事的帮助下、我取得了一些进展。
    现在我的 MISO 线似乎更好... 但读数的结果始终相同(0xFF)...

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

    尊敬的 Armando:

    是否有人将 PCB 上或通过 MCU 的 MISO 线路拉高?

    另外、请注意、WREG 命令0x41 0x02意味着您要写入3个连续的寄存器、从地址01h 开始。 在这两个字节之后、您需要跟随要写入每个地址的寄存器数据、所有这些都在同一个 SPI 帧中。 MISO 上的数据不会包含转换结果、直到:

    1. 完成器件寄存器写入并恢复 RDATAC 模式
    2. 将 START 拉为高电平或发送 START 命令

    此致、

    Ryan