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.

[参考译文] ADS1291:具有 CC2640R2f 传感器控制器的 CAN't 写寄存器

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1277667/ads1291-can-t-write-registers-with-cc2640r2f-sensor-controller

器件型号:ADS1291
主题中讨论的其他器件: CC2640R2F

您好!

我自己设计了一个板来使用 CC2640R2F 从 ADS1291读取数据。 运行正常、当我使用主 CPU 控制它时、我可以读取和写入寄存器、并且正确采集 ECG 信号。  

但我想要更高的采样率、因此尝试了使用传感器控制器引擎与 ADS1291进行通信。

我遵循 ADS1291上电时的初始流程、可发送 START、STOP、RDATAC、SDATAC 等 SPI 命令来控制 ADS1291、但当我尝试读取或写入寄存器时、ADS1291不给出响应。

这是 Sensor Controller Studio 中的初始化代码、请帮助。

macro spiWriteReg(addr, value) {

spiBegin(SPI_POL0_PHA1,AUXIO_SPI_CSN_CS);

spiTx16bit(SPI_POL0_PHA1,addr);

spiTx8bit(SPI_POL0_PHA1,value);

spiEnd(SPI_POL0_PHA1,AUXIO_SPI_CSN_CS);

}



macro spiReadReg(addr, value) {

spiBegin(SPI_POL0_PHA1,AUXIO_SPI_CSN_CS);

spiTx16bit(SPI_POL0_PHA1,addr);

spiRx8bit(SPI_POL0_PHA1;value);

spiEnd(SPI_POL0_PHA1,AUXIO_SPI_CSN_CS);

}



macro spiWriteCmd(value) {

spiBegin(SPI_POL0_PHA1,AUXIO_SPI_CSN_CS);

spiTx8bit(SPI_POL0_PHA1,value);

spiEnd(SPI_POL0_PHA1,AUXIO_SPI_CSN_CS);

}



gpioSetOutput(AUXIO_O_RST);

for(U16 n=0;n<10;n++) {

fwDelayUs(100000,FW_DELAY_RANGE_100_MS);

}

gpioClearOutput(AUXIO_O_RST);

fwDelayUs(10,FW_DELAY_RANGE_10_US);

gpioSetOutput(AUXIO_O_RST);

fwDelayUs(36,FW_DELAY_RANGE_100_US);



// Set stop

spiWriteCmd(0x0A);

fwDelayUs(5000,FW_DELAY_RANGE_10_MS);

spiWriteCmd(0x11);

fwDelayUs(1000,FW_DELAY_RANGE_1_MS);



spiReadReg(0x2000,output.reg);

fwDelayUs(1000,FW_DELAY_RANGE_1_MS);



//Configure the Config1

spiWriteReg(0x4100,0x03);

fwDelayUs(1000,FW_DELAY_RANGE_1_MS);

spiReadReg(0x2100,output.reg);

fwDelayUs(1000,FW_DELAY_RANGE_1_MS);

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

    您好!

    我想先澄清一下吗?

    您是否会将  CC2640R2F 用作控制 ADS1291的唯一主机/主器件/MCU?

    当您说"Main CPU"时、您是否将"Main CPU"指的是 CC2640R2F?  或别的什么东西?

    我可以问什么 是 Sensor Controller Engine 和 Sensor Controller Studio 吗?

    当您说"Main CPU"时和"Sensor Controller Engine "时、有何区别?

    您是否连接 拓扑 ADS1291 <=SPI==>CC2640R2F  ? 或别的什么东西?

    工作设置是什么? 是 ADS1291 <=SPI==>  CC2640R2F 吗? 或别的什么东西?

    什么是无法正常工作的设置?   

    -------------------------------------------------------

    在 SPI 时序信号和两个信号(工作设置与非工作设置)之间的关系图方面、有什么根本差异?

    您是否尝试并排比较 SPI 信号的时序、即工作与非工作、以检查和比较任何显著的差异?

    -------------------------------------------------------

    当您说"更高的采样率"时、它是多大的数据速率?

    您是否能够在工作设置中实现相同的数据速率?  

    您是否 在工作场所和非工作场所均尝试了低数据速率?

    -------------------------------------------------------

    请确保正确遵循上电和复位序列。

    并且、 请注意:SPI 设置为 CPOL = 0且 CPHA = 1。

    -------------------------------------------------------

    当你说没有回应时、这意味着什么? SCLK 是否仍在从主机/主设备发送?

    谢谢

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

    感谢您的答复。 CC2640R2F 是此设计中唯一的 MCU。 CC2640R2F 通过 SPI 连接到 ADS1291。 传感器控制器引擎就像 CC2640R2F 中的小型 CPU 一样、用于控制传感器、而不是使用主 MCU。 您可以查看 CC2640R2F 的数据表以了解更多详细信息。

    共享相同 IO 引脚的工作和非工作设置具有相同的 SPI 工作模式。

    我可以正确发送 SPI 命令。 在发送 START 和 RDATAC 后、我可以获得常规 DRDY 并正确读取数据。  

    它与采样率无关、我不能对 ADS1291的寄存器进行写入、它只能以125sps 的速率工作。 但在工作设置中、所有功能都是正常的。  

    我已经检查了上电和复位时序。 但我无法检查 SPI 信号、因为在我测试了工作设置后、我删除了设计中的所有调试引脚。

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

    我解决了问题- CS 低电平与第一个 SCLK 的上升沿之间以及最后一个 SCLK 的下降沿与 CS 高电平之间只有300ns 的延迟。 在第一个 SCLK 之前和最后一个 SCLK 之后增加10us 的延迟解决了问题、并允许通信正常工作。