基于stm32的ads1256采集模块的初始化问题
时间:10-02
整理:3721RD
点击:
初始化过程中,DRDY引脚始终输出高电平,这是什么原因呢?附上初始化程序:
void ADS1256_Init(void)
{
ADS_CS_LOW();
RESET_HIGH();
DelayuS(100);
SPI_SendByte(ADS1256_CMD_REST);
DelaymS(10);
while(ADS_DRDY) //当ADS1256_DRDY为低时才能写寄存器
{
printf("\r\n ADS1256 Initialization Failed ! \r\n");
}
SPI_SendByte(ADS1256_CMD_SYNC); //同步命令
SPI_SendByte(ADS1256_CMD_WAKEUP); //同步唤醒
while(ADS_DRDY)
{
printf("\r\n ADS1256 Initialization Failed ! \r\n");
}
SPI_SendByte(ADS1256_CMD_WREG | ADS1256_STATUS);//连续写入4个寄存器
SPI_SendByte(3);
SPI_SendByte(0x04); //高位在前,使用内部校准,不使用缓存
SPI_SendByte(ADS1256_MUXP_AIN2 | ADS1256_MUXN_AIN3);//端口输入A2为正,A3位负
SPI_SendByte(ADS1256_GAIN_1); //放大倍数设置
SPI_SendByte(ADS1256_DRATE_2_5SPS); //采集速度设置
DelayuS(100);
while(ADS_DRDY) //当ADS1256_DRDY为低时才能写寄存器
{
printf("\r\n ADS1256 Initialization Failed ! \r\n");
}
SPI_SendByte(ADS1256_CMD_SELFCAL); //偏移和增益自动校准
ADS_CS_HIGH();
DelaymS(100);
}
void ADS1256_Init(void)
{
ADS_CS_LOW();
RESET_HIGH();
DelayuS(100);
SPI_SendByte(ADS1256_CMD_REST);
DelaymS(10);
while(ADS_DRDY) //当ADS1256_DRDY为低时才能写寄存器
{
printf("\r\n ADS1256 Initialization Failed ! \r\n");
}
SPI_SendByte(ADS1256_CMD_SYNC); //同步命令
SPI_SendByte(ADS1256_CMD_WAKEUP); //同步唤醒
while(ADS_DRDY)
{
printf("\r\n ADS1256 Initialization Failed ! \r\n");
}
SPI_SendByte(ADS1256_CMD_WREG | ADS1256_STATUS);//连续写入4个寄存器
SPI_SendByte(3);
SPI_SendByte(0x04); //高位在前,使用内部校准,不使用缓存
SPI_SendByte(ADS1256_MUXP_AIN2 | ADS1256_MUXN_AIN3);//端口输入A2为正,A3位负
SPI_SendByte(ADS1256_GAIN_1); //放大倍数设置
SPI_SendByte(ADS1256_DRATE_2_5SPS); //采集速度设置
DelayuS(100);
while(ADS_DRDY) //当ADS1256_DRDY为低时才能写寄存器
{
printf("\r\n ADS1256 Initialization Failed ! \r\n");
}
SPI_SendByte(ADS1256_CMD_SELFCAL); //偏移和增益自动校准
ADS_CS_HIGH();
DelaymS(100);
}
首先要确定spi是用8位还是16位,就能解决