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.

[参考译文] ADS1248:ADS1248:我不知道为什么 ADS1248 DRDY 引脚始终处于低电平

Guru**** 2553450 points
Other Parts Discussed in Thread: ADS1248

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/843419/ads1248-ads1248-i-don-t-know-why-ads1248-drdy-pin-always-low

器件型号:ADS1248

大家好、 我在使用 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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、I 测试唤醒 CMD。

    =>此外、DRDY 引脚始终处于低电平...  

    这是 SPI 通信问题吗?

    如果我输入时钟8、
    它是否会被唤醒?

    这是测试代码。

    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;//START 引脚低电平、器件断电模式。

    //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();


    WRITE_Cmd (WAKEUP);//I 已执行唤醒 CMD、但始终 DRDY 引脚处于低电平...
    while (1);
    加电后的//芯片读取测试
    RET = READ_Reg (IDAC0);
    printf ("ret:0x%x\r\n",ret);

    int write_Cmd (uint8_t cmd)

    uint8_t nop = 0xff;

    CS_LOW;
    HAL_DELAY (1);

    if (HAL_SPI_TransmitReceive (&hspi2、&cmd、&nop、1、100))

    转至错误;

    HAL_DELAY (1);
    CS_HIGH;

    返回1;
    错误:
    printf ("写入 CMD 错误\r\n);
    CS_HIGH;
    返回-1;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Dong Jin SEO:

    感谢您的发帖、欢迎加入论坛!  

    在整个通信中、芯片选择并不是被保持在低电平。

    请参阅 数据表中的第9.5.1.1节"芯片选择(CS)"。  

    如果不能解决问题、提供示波器分析器图片以显示 CS、MOSI、MISO 和 DRDY 可能会有所帮助。