学生党想用ADS7279连接STM32F103做一个AD转换,在单片机里初始化ADS芯片为自动模式且EOC后,通过A4引脚检测INT/EOC下降沿,然后采用spi的16bit模式读取ADC数据。
现在遇到的问题是单片机从来没有采集到过EOC的下降沿,修改程序检查ADS芯片刚上电时的模式,发现和datasheet里的默认CFR值不一样(读出来全是1)。在使用时发现芯片发热量很大。想请教一下是什么问题?提前感谢各位!
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.
学生党想用ADS7279连接STM32F103做一个AD转换,在单片机里初始化ADS芯片为自动模式且EOC后,通过A4引脚检测INT/EOC下降沿,然后采用spi的16bit模式读取ADC数据。
现在遇到的问题是单片机从来没有采集到过EOC的下降沿,修改程序检查ADS芯片刚上电时的模式,发现和datasheet里的默认CFR值不一样(读出来全是1)。在使用时发现芯片发热量很大。想请教一下是什么问题?提前感谢各位!
void SPI_ReadADC(uint16_t * readAddr) //读取ADC结果 { SPI_FLASH_CS_LOW(); SPITimeout = SPIT_FLAG_TIMEOUT; while (SPI_I2S_GetFlagStatus(FLASH_SPIx , SPI_I2S_FLAG_TXE) == RESET) { if((SPITimeout--) == 0) { SPI_TIMEOUT_UserCallback(0); *readAddr = 0x0000; } } //发送的0xd000用于读取结果 SPI_I2S_SendData(FLASH_SPIx , 0xd000); //SPITimeout = SPIT_FLAG_TIMEOUT; /* µÈ´ý½ÓÊÕ»º³åÇø·Ç¿Õ£¬RXNEʼþ */ while (SPI_I2S_GetFlagStatus(FLASH_SPIx , SPI_I2S_FLAG_RXNE) == RESET) { if((SPITimeout--) == 0) { SPI_TIMEOUT_UserCallback(1); *readAddr = 0x0000; } } /* ¶ÁÈ¡Êý¾Ý¼Ä´æÆ÷£¬»ñÈ¡½ÓÊÕ»º³åÇøÊý¾Ý */ *readAddr = SPI_I2S_ReceiveData(FLASH_SPIx ); SPI_FLASH_CS_HIGH(); return ; } void ADC7279_Init(void){ SPI_FLASH_CS_LOW(); SPITimeout = SPIT_FLAG_TIMEOUT; /* µÈ´ý·¢ËÍ»º³åÇøΪ¿Õ£¬TXEʼþ */ while (SPI_I2S_GetFlagStatus(FLASH_SPIx , SPI_I2S_FLAG_TXE) == RESET) { if((SPITimeout--) == 0) { SPI_TIMEOUT_UserCallback(5); } } /* дÈëÊý¾Ý¼Ä´æÆ÷£¬°ÑҪдÈëµÄÊý¾ÝдÈë·¢ËÍ»º³åÇø */ SPI_I2S_SendData(FLASH_SPIx , 0xedfd); //SPITimeout = SPIT_FLAG_TIMEOUT; /* µÈ´ý½ÓÊÕ»º³åÇø·Ç¿Õ£¬RXNEʼþ */ while (SPI_I2S_GetFlagStatus(FLASH_SPIx , SPI_I2S_FLAG_RXNE) == RESET) { if((SPITimeout--) == 0) { SPI_TIMEOUT_UserCallback(5); } } /* ¶ÁÈ¡Êý¾Ý¼Ä´æÆ÷£¬»ñÈ¡½ÓÊÕ»º³åÇøÊý¾Ý */ SPI_I2S_ReceiveData(FLASH_SPIx ); SPI_FLASH_CS_HIGH(); return ; }