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.

[参考译文] ADS124S08EVM:当使用 STM32连接板 ADS1x4S08评估模块时、只读0xFF

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/973598/ads124s08evm-read-just-0xff-when-used-stm32-to-connect-board-ads1x4s08-evaluation

器件型号:ADS124S08EVM
主题中讨论的其他器件:ADS124S08

大家好、

代表客户发布此查询:

他们计划将一些 STM32机器连接到 ADS1x4S08评估模块、并通过板载 J3进行通信来使用 SPI。

由于他们想要测量0到5V 之间的电压信号、因此使用分压器将信号调节至0-2.5V。
对于本软件、他们使用的是 Jens Chr Brynildsen 修改的 ADS124S08.CPP/ADS124S08.h 版本
但当读取寄存器和数据时、只需0xFF。

int32_t InitDevice_adc ()

if (MX_SPI_Init()!= 1)
返回-1;
/*默认寄存器设置*/
寄存器[ID_ADDR_MASK]= 0x08;
寄存器[STATUS_ADDR_MASK]= 0x00;
寄存器[INPMUX_ADDR_MASK]= 0x89;
寄存器[PGA_ADDR_MASK]= 0x00;
寄存器[datarate_ADDR_MASK]= 0x14;
寄存器[REF_ADDR_MASK]= 0x1A;
寄存器[IDACMAG_ADDR_MASK]= 0x00;
寄存器[IDACMUX_ADDR_MASK]= 0xFF;
寄存器[VBIAS_ADDR_MASK]= 0x00;
寄存器[SYS_ADDR_MASK]= 0x01;
寄存器[OFCAL0_ADDR_MASK]= 0x00;
寄存器[OFCAL1_ADDR_MASK]= 0x00;
寄存器[OFCAL2_ADDR_MASK]= 0x00;
寄存器[FSCAL0_ADDR_MASK]= 0x00;
寄存器[FSCAL1_ADDR_MASK]= 0x00;
寄存器[FSCAL2_ADDR_MASK]= 0x40;
寄存器[GPIODAT_ADDR_MASK]= 0x00;
寄存器[GPIOCON_ADDR_MASK]= 0x00;

sendCommand (reset_opcode_mask);
HAL_DELAY (100);// ms
sendCommand (WAKE_OCODE_MASK);

HAL_DELAY (100);// ms

sendCommand (start_opcode_mask);


if (regRead (ID_ADDR_MASK)== 0x01)//检查器件 ads124s08
返回-1;
HAL_DELAY (10);// ms

for (int i = 0;i < NUM_REGISTERS;i++)

regWrite (i、register[i]);


HAL_DELAY (10);// ms

Data2 = regRead (datarate_ADDR_MASK);
readRegs (0、NUM_REGISTERS);

返回1;

MAIN ()

if (InitDevice_adc ()< 0)
while (1);


uint8_t dstatus = 0;
uint8_t dCRC = 0;

HAL_DELAY (100);

/*读出结果*/

数据= dataRead (&dstatus、&dCRC);


如果您对客户有任何疑问、请告诉我。

谢谢、

Jonathan

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

    您好、Jonathan、

    要使用 J3连接器、EVM 上的微控制器必须保持复位状态。  这需要在 EVM 上安装跳线 JP1。  此外、在 EVM 上、RESET 引脚还必须被拉高、不能悬空。  如何为 EVM 供电?  我建议将 EVM 插入 PC 上的 USB、以便为电路板供电。

    此致、

    Bob B

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

    Bob、您好!

    感谢您的支持和您提供的答案。
    这对客户有效、但当他们读取 ADC 配置的寄存器时、当前存在问题。

    他们使用示波器的逻辑分析仪、然后结果与应用程序上的结果相同。
    因此、请提供一些建议。

    下面是代码。
    -已安装 JP1
    - RESET 引脚被拉高
    - START 引脚被拉至低电平

    寄存器[ID_ADDR_MASK]= 0x08;
    寄存器[STATUS_ADDR_MASK]= 0x00;
    寄存器[INPMUX_ADDR_MASK]= 0x8C;//将 MUX 设置为 AIN8和 AINCOM
    寄存器[PGA_ADDR_MASK]= 0x00;//禁用 PGA
    寄存器[datarate_ADDR_MASK]= 0x14;//设置数据速率:禁用 G-Chop、内部 CLK、连续转换、低延迟滤波器、数据速率:20SPS
    寄存器[REF_ADDR_MASK]= 0x39;//禁用参考监视器、禁用正基准缓冲器、dis。 NEG RefBuf、选择基准输入引脚、dis。 内部
    寄存器[IDACMAG_ADDR_MASK]= 0x00;
    寄存器[IDACMUX_ADDR_MASK]= 0xFF;
    寄存器[VBIAS_ADDR_MASK]= 0x00;
    寄存器[SYS_ADDR_MASK]= 0x13;//启用 CRC 和状态位
    寄存器[OFCAL0_ADDR_MASK]= 0x00;
    寄存器[OFCAL1_ADDR_MASK]= 0x00;
    寄存器[OFCAL2_ADDR_MASK]= 0x00;
    寄存器[FSCAL0_ADDR_MASK]= 0x00;
    寄存器[FSCAL1_ADDR_MASK]= 0x00;
    寄存器[FSCAL2_ADDR_MASK]= 0x40;
    寄存器[GPIODAT_ADDR_MASK]= 0xF0;
    寄存器[GPIOCON_ADDR_MASK]= 0x00;


    sendCommand (reset_opcode_mask);


    if (regRead (0x1)== 0x80)

    regWrite (0x1、0x40);

    for (int i = 0x02;i < 18;i++)

    regWrite (i、register[i]);


    HAL_DELAY (10);// 1

    readRegs (0、NUM_REGISTERS);//读取 ADC 配置的寄存器

    sendCommand (start_opcode_mask);


    请告诉我您的意见。

    此致、

    Jonathan

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

    您好、Jonathan、

    我真的看不到他们做的事情有什么问题、但可能会有与计时相关的问题。  RESET 引脚设置为高电平之后以及发送 RESET 命令时应存在延迟。

    查看通信的逻辑分析仪快照将会有所帮助、以便我查看。

    此致、

    Bob B

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

    尊敬的 Bob:

    这是上面项目的逻辑分析仪信号。

    请告诉我您的意见。

    此致、

    Doi

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

    尊敬的 Bob:

    我在 RESET 引脚和 RESET 命令之后添加了延时时间、但当我读取 ADC 配置的寄存器时、时间并不符合预期。

    下面是我添加延迟的代码。

    sendCommand (reset_opcode_mask);
    HAL_DELAY (10);// ms

    HAL_GPIO_WritePin (GPIOJ、GPIO_PIN_7、GPIO_PIN_SET);  //将引脚复位为高电平
    HAL_DELAY (10);
    HAL_GPIO_WritePin (GPIOJ、GPIO_PIN_7、GPIO_PIN_RESET); // 将引脚复位设置为低电平
    HAL_DELAY (10);

    if (regRead (0x1)== 0x80)

    regWrite (0x1、0);
    I = 5;

    for (int i = 0x02;i < 18;i++)

    regWrite (i、register[i]);

    HAL_DELAY (10);

    readRegs (0、NUM_REGISTERS);//读取 ADC 配置的寄存器
    HAL_DELAY (10);

    sendCommand (start_opcode_mask);

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

    您好、Jonathan、

    感谢您提供逻辑分析仪快照。  它能很好地讲述故事。  请注意、发送到器件的数据(MOSI)在下降沿而不是上升沿发生变化。  数据必须在下降沿保持稳定、并在上升沿发生变化。  请注意 MISO、器件在上升沿发生变化。  您的通信应与 MISO 上所示的正确相位相匹配。

    此致、

    Bob B

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

    尊敬的 Bob:

    非常感谢您的支持!

    现在、STM32与 ADS124S08的通信效果良好。

    谢谢、此致、

    Doi