主题中讨论的其他器件: 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);