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.

[参考译文] ADS1292:ADS1292R -读取芯片 ID (0x00)寄存器

Guru**** 2539500 points
Other Parts Discussed in Thread: ADS1292, ADS1292R

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/741543/ads1292-ads1292r---read-chip-id-0x00-register

器件型号:ADS1292

您好!

我想从 ads1292读取芯片 ID 寄存器0x00、但我没有得到预期的确切值。

============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

void SPI_EVENT_handler (nrf_drv_spi_evt_t const * p_event、
void * p_context)

   SPI_xfer_DONE = true;
   nrf_log_info ("传输已完成");//nrf_log_flush ();
   如果(m_rx_buf[0]!= 0)
   {
     nrf_log_info ("已接收:");
     nrf_log_HEXDUMP_info (m_rx_buf、strlen ((const char *) m_rx_buf));
   }

////// 初始化 SPI ////

spi_config.ss_pin = Arduino _7_PIN;
SPI_CONFIG.Miso_pin = Arduino _12_PIN;
SPI_CONFIG.MOSI_Pin = Arduino_11_PIN;
SPI_CONFIG.SCK_Pin = Arduino_13_PIN;
SPI_CONFIG.BIT_Order = NRF_DRV_SPI_BIT_ORIG_MSB_FIRST;
SPI_CONFIG.MODE = NRF_DRV_SPI_MODE_0;
spi_config.frequency = NRF_DRV_SPI_FREQ_4M;
SPI_CONFIG.ORC = 0x00;
APP_ERROR_CHECK (nrf_drv_spi_init (&SPI、&spi_config、SPI_EVENT_handler、NULL));
nrf_log_info ("SPI 示例已启动。");nrf_log_flush ();

//////  通过拉低硬件引脚 ////重置电路板

NRF_GPIO_PIN_WRITE (ADS1292_PWDN_PIN、高电平);

延迟(100);

NRF_GPIO_PIN_WRITE (ADS1292_PWDN_PIN、低电平);

延迟(100);

NRF_GPIO_PIN_WRITE (ADS1292_PWDN_PIN、高电平);

延迟(100);

////////// 停止继续数据接收模式//////////

spi_xfer_done = false;memset (m_rx_buf、0、sizeof (m_rx_buf));

spiDataTx[0]= 0x11;
app_error_check (nrf_drv_spi_transfer (&SPI、spiDataTx、1、m_rx_buf、sizeof (m_rx_buf)));
while (!SPI_xfer_done){__WFE ();}
nrf_log_flush ();

//////////// 读取芯片 ID 寄存器(0x00)//////////////////

字符 tempData[3];
tempData[0]= 0x20;
tempData[1]=0x00;
tempData[2]=0x00;
spi_xfer_done = false;memset (m_rx_buf、0、sizeof (m_rx_buf));
app_error_check (nrf_drv_spi_transfer (&SPI、tempData、3、m_rx_buf、sizeof (m_rx_buf)));
while (!SPI_xfer_done){__WFE ();}
nrf_log_flush ();

============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

正在等待更好的解决方案。

非常感谢您的参与。

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

    感谢您的发帖!

    错误的器件 ID 通常是由不正确的加电例程引起的。 请参阅此帖子 :e2e.ti.com/.../658195
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    e2e.ti.com/.../ads1292.c

    e2e.ti.com/.../ecg.c

    我在上面使用了两个文件。

    我使用 了 ECG_Init()函数。 如果我错了、请纠正我的问题

    如果我执行了错误的序列、也请纠正我的问题。

    我将获得低于输出的值。

    ===================================

    应用:SPI 示例已启动。
    应用程序:0.0
    应用程序:0.1
    应用程序:0.2
    APP:0.3
    应用程序:0.4
    应用程序:1.0
    应用程序:传输完成。
    APP:已接收:
    应用:60 |`
    APP:0.5
    应用程序:1.0
    应用程序:传输完成。
    APP:已接收:
    应用:60 |`
    APP:0.6
    APP:0.7
    应用程序:1.0
    应用程序:传输完成。
    APP:已接收:
    应用:60 |`
    APP:0.8
    应用程序:3.0
    应用程序:传输完成。
    APP:0.9
    应用程序:2.0
    应用程序:传输完成。
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    APP:3F FF FF E0 |?...
    应用程序:2.2
    应用程序:传输完成。
    应用程序:0.10
    应用程序:2.0
    应用程序:传输完成。
    APP:已接收:
    APP:FF FF E0 ||
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    应用:40 |@
    应用程序:2.2
    应用程序:传输完成。
    APP:已接收:
    APP:FF E0 |。。
    APP:0.11.
    应用程序:2.0
    应用程序:传输完成。
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    应用:E0 |。
    应用程序:2.2
    应用程序:传输完成。
    APP:0.12
    应用程序:2.0
    应用程序:传输完成。
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    APP:3F FF FF E0 |?...
    应用程序:2.2
    应用程序:传输完成。
    应用程序:0.13
    应用程序:2.0
    应用程序:传输完成。
    APP:已接收:
    APP:FF FF E0 ||
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    应用:40 |@
    应用程序:2.2
    应用程序:传输完成。
    APP:已接收:
    APP:FF E0 |。。
    APP:0.14
    应用程序:2.0
    应用程序:传输完成。
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    应用:E0 |。
    应用程序:2.2
    应用程序:传输完成。
    APP:0.15
    应用程序:2.0
    应用程序:传输完成。
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    APP:3F FF FF E0 |?...
    应用程序:2.2
    应用程序:传输完成。
    APP:0.16.
    应用程序:2.0
    应用程序:传输完成。
    APP:已接收:
    APP:FF FF E0 ||
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    应用:40 |@
    应用程序:2.2
    应用程序:传输完成。
    APP:已接收:
    APP:FF E0 |。。
    APP:0.17.
    应用程序:2.0
    应用程序:传输完成。
    应用程序:2.1
    应用程序:传输完成。
    APP:已接收:
    应用:E0 |。
    应用程序:2.2
    应用程序:传输完成。
    APP:0.18
    应用程序:1.0
    应用程序:传输完成。
    APP:0.19.
    应用程序:完成初始化

    ===================================

    谢谢

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

    您是否有机会查看我链接的帖子?
    数据表的第62页和第63页介绍了正确的上电排序以及为基本数据捕获设置器件(包括读取器件 ID)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Smith、

    我按照数据表遵循加电顺序。 但没有取得任何成功。

    我创建了新代码来读取芯片 ID。 请查看下面的 main.c 代码、如果加电序列或我所做的任何其他操作有误、请更正我的错误。

    e2e.ti.com/.../7701.main.c

    通过运行上述代码,我得到的结果低于...

    应用:SPI 示例已启动。
    应用:43 30 20 |C0
    应用程序:=========== 1 ===========
    应用程序:30 20 30 20 38 30 20 |0 0 80
    应用程序:=========== 1 ===========
    应用程序:=========== 2 ===========
    应用程序:30 20 30 20 37 46 20 |0 7 F
    应用程序:=========== 2 ===========
    应用程序:=========== 3 ===========
    应用:46 46 20 46 20 46 20 43 30|FF FF C0
    应用程序:20. |
    应用程序:=========== 3 ===========
    应用程序:=========== 4 ===========
    应用程序:30 20 30 20 38 30 20 |0 0 80
    应用程序:=========== 4 ===========
    应用程序:=========== 5 ===========
    应用程序:30 20 30 20 37 46 20 |0 7 F
    应用程序:=========== 5 ===========
    应用程序:=========== 6 ===========
    应用:46 46 20 46 20 46 20 43 30|FF FF C0
    应用程序:20. |
    应用程序:=========== 6 =========== 

    如果您可以看到、那么我正在读取芯片 ID 6次。 并且每次结果发生变化。 另一件事是结果每3次重复一次。

    我是按照你的建议做的。 我将使用内部振荡器、该振荡器以默认的512KHz 频率运行。

    仍然没有得到准确的芯片 ID (它应该是0x73、因为我正在使用 ADS1292R)。

    如果我做了任何事情、请仍然纠正我。 建议更好的解决方案、只需读取芯片 ID、然后相应地更新我的应用。

    谢谢。

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

    在尝试读取寄存器之前、是否发送 SDATAC 命令? 我在您的代码中看不到它。
    您是否使用了正确的 SPI 设置? 您应该使用 CPOL = 0和 CPHA = 1。