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.
大家好,
我们将ADS1247用于RTD设计。 当我按以下方式进行所有初始化并将转换开始为高延迟(5ms)低。 我确实遇到了中断。 但是,当我发送0x12读取24位值时,前几个中断不会给我转换的数据。 我正在使用STM32控制器。 但是如果我连续循环运行,在大约5到6次中断后,它开始提供预期的正确值。
中断几次后,我确实得到了预期的差分电压。 另外,在转换信号的一个起点上,我得到了多(2)个中断。
请给出建议。
以下是我的代码:
UINT8_t setMUX0[3]={0x40,0x00,0x02};
UINT8_t setMUX1[3]={0x42,0x00,0x30};
UINT8_t setSYS0[3]={0x43,0x00,0x02};
ADC_PIN_NSS_SELECT
ADC_TON_SOC_高
HAL_SPI_TransmitReceive(&hspi1,(uint8_t *)setMUX0, recvdata,31000);// AIN1 AS +和AIN2 AS -
HAL_SPI_TransmitReceive(&hspi1,(uint8_t *)setMUX1,recvdata,31000);
HAL_SPI_TransmitReceive(&hspi1,(uint8_t *)setsys0,recvdata,31000);
ADC_TON_SOC_LOW
HAL_NVIC_EnableIRQ (EXTI2_3_IRQn);
同时(1)
{
ADC_START();
HAL_DELAY (100);// 100 ms
}
void ADC_START (void)
{
ADC_TON_SOC_高
HAL_DELAY (5);// 5 ms
ADC_TON_SOC_LOW
}
字符ReacCommand[4]={0x12,0xFF,0xFF,0xFF};
void EXTI2_3_IRQHandler(void)//数据就绪引脚的中断处理程序。
{
/*用户代码BEGIN EXTI2_3_IRQn 0 */
HAL_SPI_TransmitReceive(&hspi1,(uint8_t *)ReacCommand, ReadData,41000);// char ReacCommand[4]={0x12,0xFF,0xFF,0xFF};
ADCVal = 0;
ADCVal = ReadData[1]<<16 | ReadData[2]<<8 | ReadData[3] ;
TEMP =(浮点)(2.048 * ADCVal);
电压=(浮动)温度/0x7FFFFFF;
}
此致,
三州。