hello, I have a problem using ADS1248.
The system configuration is used as follows.
1.MISO-> DOUT
2.MOSI-> DIN
3.SCK-> SCLK
4. / DRDY-> User input
I don't know why the DRDY pin is always LOW.
(There is no problem with SPI communication.)
Initialization code
void ads1248_init (void)
{
// ADS1248 Pseudo code
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; // Power up Delay
START_LOW; // Start Pin LOW
// SPI Init
hspi2.Instance = SPI2;
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_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_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = 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);
// Chip Read Test after Power up
ret = read_Reg (IDAC0);
printf ("ret: 0x% x \ r \ n", ret); // 0x90 always.
}
adc test code
void ads_1248_test (void)
{
uint8_t ret = 0;
// Enable START 0to allow writing to registers.
START_HIGH;
// Set MUX1 => REFP0 & REFP1 reference input selected, Normal Operation, PGA GAIN 5-> set by SYS0 register: x000_0000
write_Reg (MUX1, 0x00);
// Set MUX0 => AIN4 (AINp) AIN5 (AINn): 0010_0101
write_Reg (MUX0, 0x25);
// Set VBIAS => AIN2, AIN3, AIN5, AIN6, AIN7 (AVDD + AVSS) / 2: 1110_1100 DMY Pin Connect to VBIAS
write_Reg (VBIAS, 0xEC);
// Set SYS0 => PGA 1 (GAIN), DATA Rate: 5 SPS (SAMPLE Rate)
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 ();
=> always DRDY PIN is LOW!! I can't not proceed next step. Please Help me!!!
}
void start_single(void)
{
START_HIGH;
HAL_Delay(2);
START_LOW;
}