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.

[参考译文] PGA460:是否可以在同步 UART 模式下使用 pga460的异步 UART 命令?

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/731991/pga460-can-the-asynchronous-uart-command-of-pga460-be-used-in-synchronous-uart-mode

器件型号:PGA460
主题中讨论的其他器件:、 TDC1011

我使用异步串行端口来控制 pga460是正常的。 现在、我需要在测试模式下通过同步 UART 读取数据。 同步模式中是否也可以使用与异步模式中 EEPROM 存储类似的命令?

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

    PGA460可在同步模式下使用 RXD、TXD 和 SCLK 引脚。 请参阅数据表的第7.3.6.2.1.8节。 异步 UART 模式中可用的命令也适用于 UART 同步模式。

    此致、

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

    之前的回复是否解决了您的问题? 如果没有、请提供有关您问题的更多具体详细信息、以便我们能够提供更好的帮助。

    此致、

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

    您好 Vaibhav,

    感谢您回来。 我 已经使用了连接到 pga460的 UART 接口 、并且该程序已成功进行调试。 现在,我将接口从 UART 更改为 USART。 然后出现错误。

    当我在"thresholdk bulk write " cmd 之后执行"threshold bulk read " cmd 时、读取的数据将移动一个字节。 另一个命令、如"EEPROM 批量写入"和"EEPROM 批量读取"和欧姆。

    这是另一个问题、在 pga460的数据表中、USART 是 LSB (8位是 b0、b1、b2、b3、b4、b5、b6、b7)、但在我的系统中、被测试的数据是 MSB (b7、b6、b5、b4、b3、b2、b1、b0)。为什么?

    他们如何沟通?

    如果通信格式不兼容、为什么我可以从 pga460读取数据?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    程序可以控制 pga460输出超声波,但波形不是我的,除了。 我不知道写入 EEPROM 的值是否正确
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jiaao、

    您似乎有一个 USART 读取问题。

    您说您可以控制 PGA460、这意味着您的写入工作正常、但数据读取似乎不工作。

    您能否读取一个具有良好已知值的寄存器并确认您的读取是否正常?

    当您说波形不可接受时、您的意思是什么? 您是否尝试使用"通过 USART 直接数据突发"模式?

    此致、

    维克托。

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

    尊敬的 Viktor:

    我想使用 USART 控制 pga460、并尝试使用"通过 USART 直接数据突发"。

    我 进行了如下测试:在 USER_DATA 区域设置一个特殊值,写回,0x55 aa 66 99是正确的值,但第一个值0xFF 是错误的值。

    代码为:

    void Pga460BulkReadEeprom (USART_HandleTypeDef * huart、uint8_t * pData)

    uint8_t EEP_buff [3]={synctyte、EEBR、calcChecksum (EEBR)};
    HAL_USART_Transmit (huart、EEP_buff、3、5);
    HAL_USART_Receive (huart、pData、46、5);

    它是读取信号寄存器的错误返回代码。

    uint8_t i=0;
    uint8_t Buff1[4]={0x55、0x09};
    //偏移:00h~2Bh
    对于(i=0;i<0x2C;i++)

    regAddr = I;
    Buff1[2]= regAddr;
    Buff1[3]= calcChecksum (9);
    HAL_USART_transmit (huart、Buff1、4、5);
    HAL_USART_Receive (huart、Buff1、3、5);
    *pBuf++=Buff1[1];

    设置 pga460工作模式也是如此、代码如下所示:

    void Pga460SetMode( USART_HandleTypeDef *huart、uint32_t MMode )

    uint8_t mTmp[5]={synctyte、0x0A、0x4B};

    regAddr = 0x4B;
    开关(MMode)

    案例 PGA_DP_DISABLE:
    //正常
    regData = PGA_DP_DISABLE;
    中断;
    PGA_DP_LPF 案例:
    // LPF 输出
    regData = PGA_DP_LPF;
    中断;
    PGA_DP_整 流器案例:
    //整流器输出
    regData = PGA_DP_Rectifier;
    中断;
    PGA_DP_BPF 案例:
    // BPF 输出
    regData = PGA_DP_BPF;
    中断;
    PGA_DP_ADC 案例:
    // ADC 输出
    regData = PGA_DP_ADC;
    中断;
    默认值:
    中断;

    mTmp[3]= regData;
    mTmp[4]= calcChecksum (0x0A);
    HAL_USART_transmit (huart、mTmp、5、5);

    mTmp[1]= 0x09;
    mTmp[2]= 0x4B;
    mTmp[3]= calcChecksum (0x09);
    HAL_USART_transmit (huart、mTmp、4、5);
    HAL_USART_Receive (huart、mTmp、3、5);      ---- 返回值不由代码自动执行

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

    EEPROM 的寄存器编程是否每次都需要解锁、如信号写入 EE_CNTRL?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jiaao、

    需要注意的是、当器件首次上电时、EEPROM 存储器将被读取/加载到易失性影子寄存器存储器空间中。 然后、该器件引用影子寄存器中的值以进行活动操作。 每个读取和写入命令都直接访问影子寄存器空间、而不是 EEPROM 存储器。 仅当您希望将影子寄存器配置直接保存到 EEPROM 时、才需要对 EEPROM 进行编程、以便在下电上电时、这些影子寄存器将保留在 EEPROM 中。  数据表"7.6.1 EEPROM 编程"部分中描述的 EEPROM 编程序列是指 EEPROM 直接更新过程。 在评估期间、每次更改影子寄存器值以使更改生效时、都不需要对 EEPROM 进行编程。

    以下是有关 PGA460直接数据突发同步输出模式的一些说明:

    同步模式需要使用 TXD、RXD 和 SCLK。 PGA460上没有通常在 SPI 器件上找到的芯片/从器件选择、这就是同步 UART 仅与 SPI 类似的原因。 但是、仍然可以使用 SPI 端口;只需浮动 MCU 的芯片选择即可。 与异步模式不同、同步模式中不需要开始或停止位。 同步传输的数据与异步模式的数据相同、但没有开始/停止/字节间空间位。

    例如,发送 Preset 2 Burst + Listen 命令以使用分配了 UART_ADDR=1的 PGA460检测4个对象,您将发送连续计时同步序列{0x55,0x21,0x04,0xFA}, 即(从左到右)同步字段、addr-命令字节(预设2地址‘1’的突发和监听命令)、命令数据字节0 (要检测的对象数为4)和校验和。

     以下是使用直接数据突发模式预设2突发和监听命令的 USART 序列示例:

    在此示例中,UART_ADDR=0 (默认值),对象数为‘1’,但对象数无关紧要,因为 ADC 输出不提供阈值比较器输出。 只要对象数量有效(1-8个对象)、突发/监听命令将在直接数据模式下执行。

    1)     1)主器件以8MHz 时钟速率启动标准同步模式 USART 命令:

    PGA460引脚

    十六进制序列

    RXD

    {0x55、0x01、0xFD}

    TXD

    在0xFF 处空闲

    SCLK

    8MHz 工作频率

     

    2) 2)     此处是直接数据突发不同于典型突发和监听命令的地方。 在典型的突发/监听命令中、主器件可以停止发送时钟、只需等待记录长度过期、直到读回超声波测量结果。 但是、在同步模式下、主器件会在突发/监听命令之后立即继续发送一个有效的8MHz 时钟。 MOSI 应输出一个空闲高电平值0xFF:

    PGA460引脚

    十六进制序列

    RXD

    {0xFF…0xFF}

    TXD

    在0xFF 处空闲

    SCLK

    8MHz 工作频率

     

    3) 3)     PGA460将不会在 MISO 上返回 ADC 数据、直到从发送突发和/或监听命令开始~120us。

    PGA460引脚

    十六进制序列

    RXD

    {0xFF…0xFF}

    TXD

    ADC 数据输出

    SCLK

    8MHz 工作频率

     

    4) 4)     持续保持时钟激活并将空闲高电平0xFF 发送到 PGA460的 RXD 引脚非常重要。 但是,对于超过12ms 的预设记录长度,我建议您偶尔发送一个非0xFF,以防止 PGA460的 USART 端口超时。 即 MOSI 每10ms 发送0xC3。 否则、PGA460将在大约~15ms 后停止输出 ADC 数据。

    PGA460引脚

    十六进制序列

    RXD

    {0xFF…0xFF、0xC3、0xFF…0xFF、0xC3、0xFF}

    TXD

    ADC 数据输出

    SCLK

    8MHz 工作频率

     

    下面是初始 USART 直接数据模式命令序列的特写图、显示 了突发/监听命令和 TXD 输出之间的 ADC 输出延迟。

    注意:MOSI = PGA460_RXD、MISO = PGA460_TXD、SCLK = PGA460_SCLK。

     

    8Mbps 时的逻辑位长度是同步模式支持的最大速率。

    要将主设备的 SPI 端口配置为同步 UART 模式,PGA460需要:

    • 最低有效位优先
    • 每次传输8位
    • SPI_mode2
      • 未激活时钟为高电平(CPOL=1)
      • 数据在时钟前缘有效(CPHA=0)
      • ENABLE 线路为低电平有效(PGA460不使用从器件/芯片/使能选择、但可能有助于调试和逻辑分析仪的使用)

    数据表中将此描述为“在这种模式下,USART 接口充当串行移位寄存器,数据在时钟的上升沿设置,在时钟的下降沿采样。”

     

    要使用 PGA460-Q1 EVM 和 GUI 评估和获取原始 ADC 或 DSP 数据、请执行以下步骤:

    1) 1)从树列表中选择数据监视器。

    2) 2)单击"Graph"子选项卡。

    3) 3)为1MSPS 输出选择图形模式(ADC 或 DSP)。

    4) 4)在单击开始之前、从树列表中选择测试模式

    5) 5)您可以在"测试模式"树列表的"数据路径采样选择"无线电中将振幅分辨率从8位(默认值)提高到12位。

    注:如果您将分辨率保持在8位、那么数字乘法器将确定捕获哪个8位的 ADC/DSP 输出。

     

    6) 6)返回数据监视器、然后单击运行。

    7) 7)您可以像导出子选项卡中的回波数据转储数据一样导出图形数据

    8) 8)单击 Export Last Data Dump (导出上次数据转储)以将图形数据另存为 txt 或 csv 文件。

     

    注意:当记录长度非常长时、更新图形可能需要几秒钟时间。

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

    尊敬的 Akeem:

        感谢您的回复。   通过您的方法、我在评估板上获得了相应的数据、并对原始数据执行了算法评估。

        现在、我 正在设计一个使用 pga460的距离测量系统。 因为最大距离为10米、所以 pga460输出的结果不符合要求。  我想从 pga460读取 AFE 数据并分析数据。首先、我选择的 MCU 是 STM32F103、但现在事实证明、该芯片的计算能力可能不够。在 TI 的文献中可以找到使用 tms32f280x 系列+tdc1011的方法。 您能否推荐使用 tms320f28系列 MCU 替代它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jiaao、
    我建议您将有关 MCU 更换的问题发布到 MCU E2E 论坛。 他们将能够根据您的处理和内存要求为您提供更好的建议。
x 出现错误。请重试或与管理员联系。