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.

[参考译文] ADS8688:SPI 8 通道存在一些问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1533592/ads8688-spi-8-channel-has-some-problem

器件型号:ADS8688

工具/软件:

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1533590/ads8688-spi-clock-and-sdo-timing

此问题链接到上述链接。

我尝试使用 ADS8688 数据表中的手动通道 n 选择 (MAN_Ch_n) 函数来与 8 通道 ADC 和 SPI 进行通信。 但是、CS 信号在对应于每个通道的 SCLK 结束的时间间隔内保持低电平(32 个时钟之后立即)。 换句话说、不会出现下降沿。 我相信你会很容易理解这一点,通过看照片.

我还有其他选项吗? 我需要 8 通道 ADC 和 SPI 通信。

下面是 SPI 配置代码。

/*
*========= 测试函数=========
*/
void SPI_TEST (UArg arg0、UArg arg1)

SPI_Params spiParams;/* SPI 参数结构*/
SPI_Handle handle;/* SPI handle */
SPI_Transaction 事务;/* SPI 事务*/
bool RetVal = false;/*返回值*/

/*初始化 GPIO 驱动程序*/
gpio_init ();

/*初始化 SPI 驱动程序*/
spi_init ();

/*默认 SPI 配置参数*/
SPI_Params_init (&spiParams);
spiParams.frameFormat = SPI_POL0_PHA1;
spiParams.dataSize = 32;

/*取消以下代码行的注释以测试回调模式*/
/* spiParams.transferMode = SPI_MODE_callback;*/
/* spiParams.transferCallbackFxn = MCSPICallbackFxn;*/

/*打开 QSPI 驱动器*/
// handle = SPI_open (Board_MCSPI_serial_Instance、&spiParams);
Handle = SPI_open (1U、&spiParams);//选择 SPI2

/*加载数据*/
LoadData();

/*启动传输*/
uint8_t cnt = 0;
for(cnt = 0; cnt < 32; cnt++){
txBuf[cnt]= 0x00U;
}

txBuf[3]= 0xC0U;
txBuf[7]= 0xC4U;
txBuf[11]= 0xC8U;
txBuf[15]= 0xCCU;
txBuf[19]= 0xD0U;
txBuf[23]= 0xD4U;
txBuf[27]= 0xD8U;
txBuf[31]= 0xDCU;
TransferLength = 8U;

Transaction.count = transferLength;
Transaction.txBuf =&txBuf[0];
transaction.rxBuf =&rxBuf[0];

while (1)

retval = SPI_TRANSFER(句柄,&TRANSACTION);
spiResultBuf =((uint16_t) rxBuf[1]<< 8)| rxBuf[0];
SYSTEM_printf(“USR Rx 数据为 0x%x%x、%u \n“、rxBuf[1]、rxBuf[0]、spiResultBuf);
delay (delay_value);
}

if (false == retval)

SPI_LOG(“\n SPI 传输中发生错误\n“);
}
暴露

/**
*以下是回调模式需要检查以指示
*转接完成。
*/
if (SPI_MODE_Callback == spiParams.transferMode)

while (txCompleteCallbackFlag == 1U);
}

RetVal = VerifyData ((uint8_t *)&serializerData[0]、&rxBuf[0]、transferLength);

if (true == retVal)

SPI_log(“\n 所有测试均已通过。 \n“);
}
暴露

SPI_LOG(“\n 某些测试失败。 \n“);
}
}

SPI_CLOSE(句柄);

while (1);
}

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

    您好、korshare、

    必须为要转换的每个通道切换 ADS8688 上的片选信号。  请参阅图 72 以及事件 1 和 4 的说明。