Other Parts Discussed in Thread: ADS7066
器件型号: ADS7066
您好:
我在 STM32H743BIT(SPI 主器件)和使用 SPI 模式 0 (CPOL=0、CPHA=0) 的 TI ADS7066IRTER ADC 之间存在 SPI 通信问题。我写入一个配置寄存器并立即读回它、但读取的值与写入的值不匹配。 逻辑分析仪显示正确的 MOSI 数据、但 MISO 通常返回 0xFF 或 0x80、SPI 解码器报告“设置不匹配“。
写入/读取序列为:
SPI_ADS7066_writeSingleRegister (hADS7066、GENERAL_CFG_ADDRESS、OPMODE_CFG_CLK_DIV_6);
IF (SPI_ADS7066_readSingleRegister (hADS7066、GENERAL_CFG_ADDRESS)!= OPMODE_CFG_CLK_DIV_6)
{
throw (EMBL_ERROR);
}
使用的写入和读取函数:
void SPI_ADS7066_writeSingleRegister(处理程序 hADS7066、uint8_t 地址、uint8_t 数据)
{
PSPI_ADS7066DESC pADS7066DESC =(PSPI_ADS7066DESC) hADS7066;
uint8_t dataTx[4]={0};
Uint8_t numberOfBytes = SPI_CRC_ENABLED (pADS7066DESC)? 4:3;
EMBL_RETCODES ret;dataTx[0]= opode_WREG;
dataTx[1]=地址;
dataTx[2]=数据;
IF (SPI_CRC_ENABLED (pADS7066DESC))
dataTx[3]= SPI_ADS7066_calculateCRC (dataTx、3、0xFF);do{
RET = WRSPI_TRANSMIT (pADS7066DESC->hSPI、dataTx、numberOfBytes);
} while (ret == EMBL_BUSY);
}uint8_t SPI_ADS7066_readSingleRegister(处理程序 hADS7066、uint8_t 地址)
{
PSPI_ADS7066DESC pADS7066DESC =(PSPI_ADS7066DESC) hADS7066;
uint8_t dataTx[4]={0};
uint8_t dataRx[4]={0};
EMBL_RECADES ret;dataTx[0]= opode_RREG;
dataTx[1]=地址;
dataTx[2]= opode_NULL;do{
RET = WRSPI_TRANSMIT (pADS7066DESC->hSPI、dataTx、3);
} while (ret == EMBL_BUSY ); do {
RET = WRSPI_RECEIVE (pADS7066DESC->hSPI、dataRx、3);
} while (ret != EMBL_OK); return dataRx[0];
}
我附上一些图、其中显示了使用示波器获取的时钟信号和使用逻辑分析仪获取的所有信号。 



