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.

[参考译文] ADS1248EVM-PDK:ADS1248EVM Web 应用不断报告 EVM 板不存在

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1298515/ads1248evm-pdk-ads1248evm-web-app-constantly-reports-evm-board-is-not-present

器件型号:ADS1248EVM-PDK
主题中讨论的其他器件:ADS1248

主要问题:我已拔下/插入与 ADS1248EVM 板相连的 USB 电缆几次、浏览器插件指示灯似乎检测到 ADS1248EVM 板、因为它亮起红色、但重复报告"器件已断开连接"。

以下是我加载的驱动程序文件、请告知它们是否正确。

 

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

    这是我将用于 ADS1248EVM 电路板的 Windows 驱动程序。

    https://www.ti.com/tool/download/SBAC253

    此驱动程序是否支持 Windows 11?

    我使用的是最新的 Chrome Web 浏览器、Chrome 应该为  

    ADS1X48EVM-PDK-GUI 浏览器插件、位于:

    https://dev.ti.com/gallery/view/PADC/ADS1x48EVM_GUI  

    正常运行?

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

    尊敬的 Tim:

     关闭自述文件后可以显示 GUI 页面吗?  如果存在驱动程序问题、应该会出现另一个弹出框、解释 GUI 无法连接的原因。  驱动程序应该自动安装。  似乎您有批量驱动程序、但 EVM 也会枚举为 CDC。  因此、在设备管理器中、应该同时为 EVM 分配了 USB Bulk 和 COM 端口。  这两个驱动程序实际上都是 MS-OS 本机的,应自动安装。  但是使用下载也应该能够正确地分配它们。

    对于 EVM、请确保两个板的方向正确。  在底板上、你看到有灯点亮了吗?你能否告诉我哪些灯点亮了(如果你想连接它、图片也会提供帮助)?

    谢谢。

    鲍勃 B

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

    尊敬的 Bob、感谢您的回复。

    自述文件会立即再次弹出、它基本上只包含一个 GUI、其中显示了 ADS 卡的图像以及我可以简要看到的一些 WebUI 界面按钮。  器件管理器中有 USB Bulk 和 COM 端口、是的、电路板方向正确、与.PDF pic 和指定 LED (D1、D2:顶部电路板)相比、TI 开箱即用。 (D1、D5:底板)如.PDF 中所述亮起。

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

    尊敬的 Tim:

    很抱歉您遇到问题。  如果单击"不再显示"、然后关闭自述文件、会发生什么情况?  安装 TICloud 代理时可能存在一些问题。  问题似乎更多的是 GUI 方面、而不是硬件方面。  因此、我认为这不是驱动器问题。

    此致、

    鲍勃 B

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

    现在一切正常。 问题是管理员权限! 我的 IT 部门已登录并重新安装了具有管理员权限的驱动程序。 我现在能够检测 ADS1248板、查看寄存器等。

    再次感谢。

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

    尊敬的 Tim:

    我很高兴听到您的工作正常。  感谢您分享您的决心。

    此致、

    鲍勃 B

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

    问:是否可以将 DC098-A 板从 DC081A 板上取下并仅通过 SPI 总线连接到 STM32H735G-DK 等其他板上?

    我将其(DC098-A)连接到  STM32H735G-DK、但在复位/上电后无法读回 ADS1248默认寄存器。

    谢谢。

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

    尊敬的 Tim:

    可以、您可以断开两个电路板的连接并使用不同的微控制器。  DVDD 和 AVDD 电源都必须处于标称电压、RESET 引脚被拉高、START 引脚被拉高以读取和写入寄存器(请参阅数据表中表19下的注释)。

    此外、如果使用 CS、则需要在整个通信事务中保持低电平。  如果 CS 在字节之间切换、则每次 CS 变为高电平时、通信都将取消。  通常、这要求 CS 由 GPIO 控制。

    此致、

    鲍勃 B

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

    我重新检查了所有内容、甚至从2MHz 将 SCLK 设置为1MHz。 Im 在使用方面遇到困难、 因为该芯片可与自己的 EVAL 主板配合使用、非常简单。 哈哈。 :-), 是否可能我的电线太长?

    再次感谢。

    时间

       

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

    尊敬的 Tim:

    我建议将 START 引脚设置为高电平、并通过监控 DRDY 来查看输出是否以默认数据输出速率脉冲、从而查看器件是否处于活动状态。  如果不是、则需要重新检查连接、主要是+5V、+3.3V、GND、复位和启动。

    如果 DRDY 会产生脉冲、则器件处于运行状态。  布线可能是个问题、但我看到了很多更糟糕的问题、因此您应该能够进行通信。  通过示波器检查 SCLK、DIN 和 DOUT 的信号完整性。  确保 Micro SPI OUT 位于 DIN 上、DOUT 连接到 Micro SPI IN。

    如果仍有问题、请向我发送通信的一些示波器或逻辑分析仪快照、以帮助进行故障排除。

    此致、

    鲍勃 B

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

    +5V:   良好

    +3.3V: 良好

    GND:  良好

    复位:高电平

    启动:高电平

    SCLK 和 DRDY:(脉冲)

    SCLK 和 DIN:

    SCLK 和 DOUT_DRDY:

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

    CS:低电平

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

    尊敬的 Tim:

    我不清楚示波器截图。  有什么方法可以同时显示至少 DIN、DOUT 和 SCLK?  对于这张图片、看起来您将其标记为 SCLK 和 DIN:

    因此、如果是 DIN、则命令的开头不正确、因为0x80不是有效命令。  最有用的是展示完整的通信、并告诉我您尝试发送/接收的内容。

    此致、

    鲍勃 B

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

    Bob 您好!

    继续感谢你的全力支持。

    下面是我为使 ADS1248退出复位而编写的一个简短而简单的测试

    写入其寄存器以设置 ADC 转换并读回寄存器值

    (MUX0)以查看我的其中一个 Reg 配置设置是否已正确写入。

    我将抓取另一个示波器探头并显示 SCLK、D_IN 和 D_OUT。

    时间

    #define ADC1248_RREG_CMD 0x20

    #define ADC1248_WREG_CMD 0x40

     

    void RTD_NumReg (uint8_t uRegNum、uint8_t Read_Reg)

    {

    uint8_t ADC1248_CMD [15 + 2]={0};

    uint8_t ADC1248_MISO [15 + 2 ];

    INT n = 0、I =0;

    memset (ADC1248_MISO、0、sizeof (ADC1248_MISO));

    ADC1248_CMD [ 0 ]=( ADC1248_RREG_CMD | uRegNum );

    ADC1248_CMD [ 1 ]= uNumReg;

    if (HAL_SPI_TransmitReceive (&hspi5、(uint8_t*) ADC1248_CMD、(uint8_t *) ADC1248_MISO、(uNumReg + 1)、5000)!= HAL_OK)

    {

    Error_Handler ();

    HAL_DELAY (10);

    void RTD_Val (uint8_t uRegNum、uint8_t Write_Reg)

    {

    uint8_t ADC1248_CMD [15 + 2]={0};

    uint8_t ADC1248_MISO [15 + 2 ];

    ADC1248_CMD [ 0 ]=( ADC1248_WREG_CMD | uRegNum );

    ADC1248_CMD [ 1 ]= 0;

    ADC1248_CMD [ 2 ]= uRegVal;

    if (HAL_SPI_TransmitReceive (&hspi5、(uint8_t*) ADC1248_CMD、(uint8_t *) ADC1248_MISO、35000)!= HAL_OK)

    {

    // debug_printf ("ADS1248 RTD_ADC_ Write_Reg failure!!!\r\n");

    //debug_printf ("ADS1248 stopped.\r\n");

    while (1);

    HAL_DELAY (10);

    //debug_printf ("ADS1248 RTD_VAL:%s、Write_Reg:%.2xh\r\n"、ADS1248_reg_names[uRegNum]、uRegVal");

    int ADS1248_Init (void)

    {

    HAL_GPIO_WritePin (RTD_nRESET_GPIO_Port、RTD_nRESET_Pin、0);

    HAL_DELAY (60);

    HAL_GPIO_WritePin (RTD_nRESET_GPIO_Port、RTD_nRESET_Pin、1);

    HAL_DELAY (600);

    //debug_printf ("ADS1248:重置结束\r\n ");

    HAL_GPIO_WritePin (RTD_START_GPIO_Port、RTD_START_Pin、1);

    HAL_GPIO_WritePin (RTD_nCS_GPIO_Port、RTD_nCS_Pin、0);

    HAL_DELAY ( 600 );

    RTD_MUX Write_Reg ( MUX0 ,(MUX_SP2_AIN2| MUX_SN2_AIN3));

    RTD_VBIAS( Write_Reg ,(VBIAS_3| VBIAS_2 ));

    RTD_REF0 Write_Reg (MUX1,(REFSELT1_REF0 | MUXCAL2_REF0 ));

    RTD_SYS0 ( Write_Reg ,(PGA2_0| DOR3_1000));

    RTD_OFC0 (Write_Reg 0、0x01);

    RTD_PIN (IDAC0、Write_Reg);

    RTD_IDAC1 (Write_Reg、0xCC);

    RTD_GPIOCFG ( Write_Reg , CFG_ANALOG_INPUT_MODE );

    RTD_GPIODIR (Write_Reg,0);

    RTD_GPIODAT (Write_Reg,0);

    返回0;

    int  main (空)

    {

    ADS1248_Init ();

    while (1)

    {

    RTD_MUX Write_Reg ( MUX0 ,(MUX_SP2_AIN2| MUX_SN2_AIN3));

    RTD_MUX0 Read_Reg (MUX0,1 );

    HAL_DELAY (1000);

      返回0;

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

    尊敬的 Tim:

    如果存在问题、很难判断是否读取了您的代码。  通信的示波器截图实际上是验证的唯一方法。  我假设 HAL_DELAY ()以毫秒为单位,对吗?

    此致、

    鲍勃 B

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

    早上好、Bob、

    是的、正确、HAL_DELAY 的单位为毫秒。 仍在查找其他探头或逻辑分析仪...

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

    尊敬的 Tim:

    您至少可以设置一个断点并捕获 SCLK 和 DIN 以进行寄存器写入、并告诉我此时应该发生什么情况?

    谢谢。

    鲍勃 B

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

      我只是调用 init 函数来重置芯片、并 将 nRESET、 nCS、开始 为高电平。

      然后将0xFF 写入寄存器 MUX0。 断点在   Write_Reg 函数中的 HAL_SPI_TransmitReceive 后立即设定:

       if (HAL_SPI_TransmitReceive (&hspi5、(uint8_t*) ADC1248_CMD、(uint8_t *) ADC1248_MISO、35000)!= HAL_OK)

      ADS1248_Init ()

     {

    HAL_GPIO_WritePin (RTD_nRESET_GPIO_Port、RTD_nRESET_Pin、0);

    HAL_DELAY (60);

    HAL_GPIO_WritePin (RTD_nRESET_GPIO_Port、RTD_nRESET_Pin、1);

    HAL_DELAY (600);

    //debug_printf ("ADS1248:重置结束\r\n ");

    HAL_GPIO_WritePin (RTD_START_GPIO_Port、RTD_START_Pin、1);

    HAL_GPIO_WritePin (RTD_nCS_GPIO_Port、RTD_nCS_Pin、0);

      返回0;

      }

    RTD_MUX0 (Write_Reg、0xFF);

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

    尊敬的 Tim:

    遗憾的是、我没有看到全部24个 SCLK、但我可以从数据的开始位置进行猜测。  使用 FF 向 MUX0写入寄存器需要写入寄存器命令(0x40 +寄存器位置(MUX0 =地址0x00))+要写入的寄存器数量减去一(一个寄存器为0x00) +数据(0xFF)。  除了 SPI DIN 必须在 SCLK 的上升沿发生变化并在下降沿保持稳定外、它看起来就像在做的那样。  因此、您将需要更改 SCLK 的相位设置。

    此致、

    鲍勃 B

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

    在该屏幕截图中、I Init ADS1248、WReg 0xFF to MUX0 、然后 从 MUX0执行 RReg。 MUX0应为0xFF、但我每次都会看到随机数据。  

    [1] SCLK

    [4]

    [3]输出

    ADS1248_Init ();

    RTD_MUX0 (Write_Reg、0xFF);

    RTD_MUX0 Read_Reg (MUX0,1 );

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

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

    好的、可以了。  

    谢谢。

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

    尊敬的 Tim:

    根本不清楚这最后一个示波器屏幕截图试图显示的内容。  SPI 为全双工、看起来像是从器件进行读写操作。  读取寄存器命令(RREG)与 WREG 命令类似、这是因为该命令有两个字节、后跟数据。  因此、您可以发送0x20 0x00 0xFF (即 NOP)以读取 MUX0寄存器。

    此致、

    鲍勃 B

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

    我显示了我正在将0xFF 写入 MUX0、然后再读回它。 我在 WReg ()和 RReg ()函数中放置一个断点以捕获此值。

    我从未看到 RReg 中的数据缓冲区随0xFF 返回、它是0x00、0x33或0x80。

    那么、是的、我的定义为:

    #define ADC1248_RDTA_CMD ( 0x12 )

    #define ADC1248_RREG_CMD (0x20)

    #define ADC1248_WREG_CMD ( 0x40 )

    #define ADC1248_NOPR_CMD ( 0xFF )

    具体代码为:

    RTD_MUX0 (Write_Reg、0xFF);

    RTD_MUX0 Read_Reg (MUX0,1 );

    SPI 设置:

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

    尊敬的 Tim:

    这便是您的代码信息。  为我解释您在上一个示波器屏幕截图中显示的16个 SCLK。  RREG 或 WREG 命令都需要24个 SCLK。  您发送到 ADS1248的最后一个数据不是 NOP。  ADS1248的技术底蕴并不比您想说的更深。

    您是否已将相位更改为正确的值并再次捕获示波器屏幕截图?

    此致、

    鲍勃 B

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

    每当我执行发送/接收时、16个 SCLK 都由 STM32H HAL SPI 函数控制。

    我没有尝试发送 NOP、只是将0xFF 写入 MUX0并读回。  

    ADS 希望 SCLK 相位设置为:

    CPOL: 低

    CPHA:1边缘

    正确吗?

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

    尊敬的 Tim:

    您必须查看处理器的数据表、以了解 CPHA 应为0还是1。  由于示波器屏幕截图上当前是错误的、并且您使用的是1、因此它必须为0。

    就通信而言、您必须在发送/接收功能中向外设发送错误数据。  无论您是使用 RREG 还是 WREG 命令、都应始终有24个 SCLK。  前两个字节是命令、最后一个字节是数据。  因此数据应始终传输3个字节。  这意味着对于 RREG 命令、您需要发送两个命令字节(0x20 0x00)和一个 NOP (0xFF)。  由于您不发送 NOP、因此从不会发送 SCLK 的最后一个字节(会产生16个 SCLK 而不是24个 SCLK)。  在内部、写入发送缓冲器会启动 SCLK。

    对于寄存器数据、内容将位于数组  ADC1248_MISO[]的第3个字节中。

    在再次查看您的代码后、我认为我看到了问题。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void RTD_Read_Reg ( uint8_t uRegNum, uint8_t uNumReg )
    {
    uint8_t ADC1248_CMD [ 15 + 2] = { 0 };
    uint8_t ADC1248_MISO [ 15 + 2 ];
    int n = 0, i =0;
    memset ( ADC1248_MISO, 0, sizeof(ADC1248_MISO));
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致、

    鲍勃 B

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

    再次感谢你的所有帮助鲍勃,我终于得到了这项工作后,注意到细节。

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

    尊敬的 Tim:

    恭喜!  当事情开始工作时、始终感觉良好。

    此致、

    鲍勃 B

x 出现错误。请重试或与管理员联系。