大家好、 我在使用 ADS1248时遇到了问题。
系统配置如下所示。
1.MISO -> DOUT
2.MOSI->DIN
3.SCK->SCLK
4./DRDY ->用户输入
我不知道为什么 DRDY 引脚始终处于低电平。
(SPI 通信没有问题。)
初始化代码
void ADS1248_init (void)
{
// ADS1248伪代码
uint8_t ret = 0;
_HAL_RCC_GPIOB_CLK_ENABLE ();
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_13、GPIO_PIN_RESET);// SCK
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_15、GPIO_PIN_RESET);// MOSI
HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、GPIO_PIN_SET);// CS
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_14、GPIO_PIN_RESET);// MISO
RST_HIGH;
HAL_DELAY 20;//加电延迟
START_LOW;//起始引脚低电平
// SPI 初始化
hspi2.instance = SPI2;
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.direction = SPI_DIRECT_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_8位;
hspi2.Init.CLKPolarity = SPI_POLICY_LOW;
hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi2.Init.nss = SPI_NSS_soft;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32;
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMDE_DISABLE;
hspi2.Init.CRCCalcirc= SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 10;
if (HAL_SPI_Init (& hspi2)! = HAL_OK){
ERROR_Handler ();
}
RST_LOW;
HAL_DELAY (1);
RST_HIGH;
HAL_DELAY (1);
//加电后的芯片读取测试
RET = Read_Reg (IDAC0);
printf ("ret:0x% x \ r \ n"、ret);//始终为0x90。
}
ADC 测试代码
void ads_1248_test (void)
{
uint8_t ret = 0;
//启用 START 0以允许写入寄存器。
START_HIGH;
//设置 MUX1 =>选择 REFP0 & REFP1基准输入、正常操作、PGA 增益5->由 SYS0寄存器设置:x000_0000
WRITE_Reg (MUX1、0x00);
//设置 MUX0 => AIN4 (AINp) AIN5 (AINn):0010_0101
WRITE_Reg (MUX0、0x25);
//设置 VBIAS => AIN2、AIN3、AIN5、AIN6、AIN7 (AVDD + AVSS)/ 2:1110_1100 DMY 引脚连接到 VBIAS
WRITE_Reg (VBIAS、0xEC);
//设置 SYS0 => PGA 1 (增益)、数据速率:5SPS (采样率)
WRITE_Reg (SYS0、0x00);
RET = Read_Reg (MUX0);
printf ("[0x% 2X]:0x% X \ r \ n"、MUX0、ret);
RET = READ_Reg (VBIAS);
printf ("[0x% 2X]:0x% X \ r \ n"、VBIAS、RET);
RET = READ_Reg (MUX1);
printf ("[0x% 2X]:0x% X \ r \ n"、MUX1、ret);
RET = Read_Reg (SYS0);
printf ("[0x% 2X]:0x% X \ r \ n"、SYS0、ret);
START_LOW;
HAL_DELAY (1);
start_single ();
=> DRDY 引脚始终处于低电平!! 我无法继续下一步。 请帮我!!!
}
void start_single (void)
{
START_HIGH;
HAL_DELAY (2);
START_LOW;
}