主题中讨论的其他器件: ADS131M04
工具与软件:
大家好、您好吗?
我对 ADS131M08的配置和数据读取有一些问题。 我使用这个 ADC 已经有很短的时间了、但是遇到了一些困难。 我相信我已正确配置了 ADC 以用于连续读数、但即使更改模拟输入值、我也看不到任何值(示波器上的位)变化。
我使用的是 ST 微控制器、到目前为止、我已经能够写入寄存器并读回它们以验证写入情况。 我设法通过命令而不是引脚将其复位。 我现在要执行连续数据读取。 我要更改模拟输入值并使用示波器监视 SPI 通信、但与模拟读数值相对应的帧不会改变。
我已将程序配置为在 AI1上只读取、而 ADC 发送的 SPI 字由10个帧组成、其中帧3至10是模拟输入、我不知道前两个帧代表什么。 请帮帮我。
void reset_ads (void)
{
HAL_SPI_Transmit(&hspi3, reset, 3, 100);
int i = 0;
int num_repeticoes = 9;
while (i < num_repeticoes)
{
HAL_SPI_Receive(&hspi3, data_readed, 3, 100);
data_readed[0] = 0b00000000;
data_readed[1] = 0b00000000;
data_readed[2] = 0b00000000;
i++;
}
}
void standby (void)
{
uint8_t standby [3];
standby [0] = 0b00000000;
standby [1] = 0b00100010;
standby [2] = 0b00000000;
HAL_SPI_Transmit (&hspi3, standby, 3, 100);
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_SPI3_Init();
MX_UART4_Init();
MX_UART5_Init();
pre_data [0] = 0b10100001;
pre_data [1] = 0b10000000;
pre_data [2] = 0b00000000;
data_readed [0] = 0b00000000;
data_readed [1] = 0b00000000;
data_readed [2] = 0b00000000;
reset [0] = 0b00000000;
reset [1] = 0b00010001;
reset [2] = 0b00000000;
wrdata[0] = 0b01100001;
wrdata[1] = 0b10000000;
wrdata[2] = 0b00000000;
clkreg [0] = 0b00000010;
clkreg [1] = 0b01001110;
clkreg [2] = 0b00000000;
//--------------------
reset_ads();
HAL_Delay(1);
//STAND-BY
HAL_GPIO_WritePin (CS_ADS131M08_GPIO_Port, CS_ADS131M08_Pin, GPIO_PIN_RESET);
standby();
HAL_Delay(1);
HAL_GPIO_WritePin (CS_ADS131M08_GPIO_Port, CS_ADS131M08_Pin, GPIO_PIN_SET);
//CONFIGURAÇÃO DOS CANAIS DE LEITURA DO ADC EM 03H
HAL_GPIO_WritePin (CS_ADS131M08_GPIO_Port, CS_ADS131M08_Pin, GPIO_PIN_RESET);
HAL_SPI_Transmit (&hspi3, wrdata, 3, 100); //WRITE IN 03H
asm("nop");
HAL_SPI_Transmit (&hspi3, clkreg, 3, 100); //DATA 03H
HAL_GPIO_WritePin (CS_ADS131M08_GPIO_Port, CS_ADS131M08_Pin, GPIO_PIN_SET);
//WAKEUP ADC
HAL_GPIO_WritePin (CS_ADS131M08_GPIO_Port, CS_ADS131M08_Pin, GPIO_PIN_RESET);
HAL_SPI_Transmit (&hspi3, wakeup, 3, 100); //COMANDO WAKEUP
HAL_GPIO_WritePin (CS_ADS131M08_GPIO_Port, CS_ADS131M08_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin (CS_ADS131M08_GPIO_Port, CS_ADS131M08_Pin, GPIO_PIN_RESET);
data_readed [0] = 0b00000000;
data_readed [1] = 0b00000000;
data_readed [2] = 0b00000000;
while (1)
{
int i = 0;
int num_repeticoes = 10;
while (i < num_repeticoes)
{
HAL_SPI_Receive(&hspi3, data_readed, 3, 100);
data_readed[0] = 0b00000000;
data_readed[1] = 0b00000000;
data_readed[2] = 0b00000000;
i++;
}
}
}







