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.

[参考译文] ADS1298ECGFE-PDK:无法读取具有 Arduino 的 ADS1298的器件 ID

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

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1374983/ads1298ecgfe-pdk-unable-to-read-device-id-of-ads1298-with-arduino

器件型号:ADS1298ECGFE-PDK
主题中讨论的其他器件:ADS1298

工具与软件:

嗨、

我正在使用 ADS1298ECGFE-PKD 板。 我已拔下 MMBQ 主板并使用 ADS1298电路板。 问题是、当我将 ADS1298板连接到 Arduino 时、无法读取板的器件 ID、这使我无法使用它。 我收到0x00。 我需要调整所有跳线设置吗?还是需要更改代码? 我在下面包含了我的 Arduino 代码和连接;您能帮助我修复吗?

/*这是带有 ADS1298的 Arduino COE */
#include

//引脚定义
CONST int CS_PIN = 10;
CONST int DRDY_PIN = 2;
CONST int RESET_PIN = 9;//将 ADS1298的 RESET 引脚连接到 Arduino 引脚9

// ADS1298命令定义
#define RREG 0x20 //读取寄存器命令
#define RESET 0x06 //重置命令

//寄存器地址
#define ID_REG 0x00 // ID 寄存器地址

void setup(){
Serial.begin(115200);

//初始化 SPI
SPI.begin();
SPI.setDataMode(SPI_MODE1);
SPI.setClockDivider(SPI_CLOCK_DIV16);
SPI.setBitOrder(MSBFIRST);

//初始化芯片选择引脚
pinMode (CS_PIN、输出);
digitalWrite (CS_PIN、高电平);

//初始化数据就绪引脚
pinMode (DRDY_PIN、输入);

//初始化复位引脚
pinMode (RESET_PIN、输出);
digitalWrite (RESET_PIN、高电平);

//上电序列
powerUpADS1298 ();

//重置 ADS1298
resetADS1298 ();
delay (100);//为完成复位留出一些时间
}

void loop(){
//读取设备 ID
字节 DEVICEID = readRegister (ID_REG);
serial.print ("设备 ID:0x");
serial.println (DeviceID、hex);

//两次读取之间的延迟
delay (1000);//根据需要调整延迟(例如、1秒)
}

void powerUpADS1298 (){
//上电顺序:确保 AVDD 在 DVDD 之前上电
//假设 AVDD 和 DVDD 连接到适当的电源
//如果您需要处理任何特定的加电逻辑、此函数只是一个占位符
delay (100);//确保上电后具有适当的延迟
}

void resetADS1298 (){
//硬件复位
digitalWrite (RESET_PIN、LOW);
delay (10);//将 RESET 保持为低电平10ms
digitalWrite (RESET_PIN、高电平);
delay (10);//复位后延迟

//软件重置(可选、取决于您的设置)
digitalWrite (CS_PIN、LOW);
spi.transfer (reset);
digitalWrite (CS_PIN、高电平);
delay (10);//软件复位后的延迟
}

字节 readRegister (字节地址){
字节结果= 0;

digitalWrite (CS_PIN、LOW);
delay (1);//将 CS 拉至低电平后出现短暂的延迟

//发送 RREG 命令以及地址
SPI.transfer (RREG |地址);
delayMicroseconds (10);//命令处理有很小的延迟

//发送要读取的寄存器数量减1 (0表示1个寄存器)
SPI.transfer (0x00);
delayMicroseconds (10);//命令处理有很小的延迟

//读取结果
结果= SPI.transfer (0x00);

digitalWrite (CS_PIN、高电平);
delay (1);//将 CS 拉至高电平后出现短暂的延迟

返回结果;
}

/*这是 Arduino 的引脚配置*/

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

    Ajay、您好!

    感谢您发帖。 在尝试读取寄存器之前、您是否首次发送了 SDATAC 命令?  

    如果您也有一些感兴趣的主题、另请参阅 ADS129x 器件系列的常见问题解答页面。

    指向 BIOFAQ 主页的链接

    此致、

    Ryan

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

    您好、Ryan
    感谢您的答复。 虽然我在读取数据之前发送了 SDATAC 指令、但仍然没有读取器件 ID;相反、我们看到的是输出0x00或0xFF。
    您能否告诉我们要设置哪些跳线设置、以便与 Arduino 一起使用? 还出现了另一个问题:如下图所示、当我们将 ADS1298板连接到 MMBQ 主板并尝试使用软件读取数据时、我们无法获取器件 ID。 我们卡在读取寄存器中。


    数据速率自动从500SPS 变为4000SPS、它始终停留在此处。 完成后、我们会出现这种类型的错误。

    您能帮助我们解决这个问题吗?

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

    Ajay、您好!

    要将 EVM 子板与 Arduino 连接、您必须查阅 EVM 用户指南中的原理图、并确定必要的跳线设置和所需的双线连接。 ADS1298器件数据表中包含有关 SPI 时序、寄存器映射和命令定义的所有文档。

    在其默认跳线设置下连接 MMB0 + ADS1298EVM 时、是否会出现上述错误消息?  您能否共享设备管理器窗口的屏幕截图以说明 EVM 是如何枚举的?

    此致、

    Ryan

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

    是的、当我们使用默认跳线配置将 MMB0连接到 ADS1298EVM 时会发生该问题。 如下图所示、我们可以在设备管理器中识别器件。

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

    Ajay、您好!

    EVM 似乎正确枚举。 我会尝试以下操作:

    1. 通过断开外部6V 电源将 MMB0+EVM 断电
    2. 断开 USB 与 PC 的连接
    3. 关闭 GUI
    4. 为 EVM+MMB0上电
    5. 将 USB 连接到 PC
    6. 按住 MMB0 (S3)上的 RESET、然后释放。
    7. 启动 GUI

    MMB0上的7段显示屏 在启动后应显示一个小写的"b"。 GUI 应该能够自动下载固件并显示设备 ID 和固件版本、如下所示:

    此致、

    Ryan

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

    根据您的建议、我遵循了上述步骤、并且成功了。 但之后、我断开了 MMB0板、再次将 Arduino 连接到 ADS1298。 然后我完成我的工作后,我连接回来,它到 MMB0板,但这一次,问题重新出现,它不能用这种方法解决;正如你可以看到在下面的图片,板上的七个段给出了'e'。

    现在请建议我下一步该怎么做?

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

    Ajay、您好!

    我很高兴听到这些建议确实起了作用、至少是暂时的。  我 能想到的就是尝试另一个 USB 端口或重新启动 PC。 为了以后使用,我将总是关闭软件,并在切换到 Arduino 时断开 USB 和电源。

    您是否偶然通过 USB 集线器连接了 MMB0? 如果是这样、最好直接连接到 PC 的 USB 端口。

    此致、

    Ryan

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

    该问题已得到解决。 电路板 在3.3V 下无法工作、因此我将 JP24设置为1-2、即1.8V。 该电路板在1.8V 电压下运行、我认为在3.3V 时、I/O 会损坏并停止工作。 非常感谢 Ryan 为您提供的建议。

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

    Ajay、您好!  

    感谢您的反馈! 我很高兴您现在拥有有效的解决方案。 - Ryan