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.

[参考译文] Tamagawa RX-AM243X:MOTOR-CONTROL-SDK RX 4x 过采样会导致接收的数据发生 1 位移位

Guru**** 2928980 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1650837/motor-control-sdk-am243x-tamagawa-rx-4x-oversampling-causes-1-bit-shift-in-received-data

器件型号: AM243X - MOTOR-CONTROL-SDK
主题: SysConfig 中讨论的其他器件

-问题
在 tamagawa_diagnostic_single_channel 中、我想知道在将 Tamagawa RX_OVERSAMPLING_RATE 从 7(8 倍过采样)更改为 3(4 倍过采样)时如何正确接收数据。

 

-目标
我想将波特率提高到 10Mbps。

 

-我做了什么
为了实现 10Mbps、当 Tamagawa RX_OVERSAMPLING_RATE 为 7 (8x) 时、RX_div(PRU 接收时钟分频器)所需的值不会成为整数。
因此、我将 Tamagawa_RX_OVERSAMPLING_RATE 更改为 3(4 倍过采样)。
此外、为了匹配过采样率、我将 RECEIVE_FRAME_S 宏(在 Tamagawa main.asm 中)中的 bit_idx 参数从 4 修改为 2。

 

-问题
完成这些更改后、接收到的数据似乎移位 1 位。
 
数据左移 1 位看起来 (LSB 始终为 0)。
例如:
预期数据:0x1E
接收的数据:0x3C
 
-问题
1.在 4 倍过采样的情况下正确接收数据需要哪些附加设置?
2、导致这个 1 位移位问题的原因是什么?

 

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

    您好、

    您要讨论的外设是 UART 吗?

    如果是 UART、我看到采样率只有 13 倍和 16 倍。 不确定我们是否支持自定义采样率、在您的案例中为 4x

    请澄清我的问题。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    感谢您的答复。

    我相信我的质询有误解、所以让我澄清一下。

    我不使用标准 UART 外设。
    相反、我使用在 PRU-ICSS 上运行的 AM243x 电机控制 SDK(tamagawa_diagnostic_single_channel 示例)中提供的 Tamagawa 协议实现。

    此实现基于类似 UART 的协议(类似于 Tamagawa 编码器)、但它不使用标准 UART 硬件。
    通信由 PRU 固件(以及可能的 ICSS 外设资源、例如基于 SPI/基于移位的机制)进行处理、我知道这些外设由 SDK 在内部管理。

    在本例中、我使用的器件使用的是类似 Tamagawa 的协议、但具有 10Mbps 的更高比特率。
    为了支持这一点、我按如下方式修改了 SDK Tamagawa 模块:
    -将 Tamagawa RX_OVERSAMPLING_RATE 从 7 (8x) 更改为 3 (4x)
    -调整了 RECEIVE_FRAME_S 宏中的 bit_idx 参数

    完成这些修改后、我收到的数据出现了一致的 1 位移位。

    我的问题不是关于 UART 硬件限制、而是关于:
    - Tamagawa PRU 实施是否支持更低的过采样率,例如 4 倍
    -修改过采样率时需要进行哪些额外的时序或配置调整

    由于此 Tamagawa 实现是 TI 在 SDK 中提供的、我假设您可能会更深入地了解 PRU 固件和时序在内部设计的方式。

    感谢您提供有关如何正确调整此实施以实现 10Mbps 运行的指导。

    此致、
    Maeda

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

    尊敬的 Vaibhav:

    非常感谢您的支持和指导。

    我想分享有关此问题的最新信息。

    经过进一步调查、我发现根本原因与过采样配置本身无关。
    在评估期间、我重命名了工程、因此未正确重建和更新 PRU 固件。

    在重新导入原始示例工程并重新应用我的修改后、
    我能够确认现在可以正确接收数据、而不会出现 1 位移位问题。

    我对由此引起的任何混淆深表歉意、感谢您抽出宝贵的时间来帮助调查此事。

    此致、
    Maeda

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

    尊敬的 Maeda:

    谢谢、

    只需进行极少的更改、您也可以采用另一种方式:启用分数分频器、允许 RX 时钟使用 0.5 分频器(分频器= 200 / 8 * 10 = 2.5)。 您只需要在 tamagawa_config_clock 中启用小数位 tamagawa_driver.c。 如图所示添加一行。

    然后重新构建驱动程序库并配置:

    1. PRU 时钟到 200MHz
    2. TX/RX FIFO 时钟源作为 SysConfig 中的 ICSS 内核时钟

    步骤:

    1. 构建驱动程序库
    2.  ICSS Core Clock 在 SysConfig 中选择 TX/RX FIFO 时钟源
    3. 将 PRU 内核时钟配置为 200MHz
    4. 构建工程

    之后、检查 CFG RX 和 TX 配置 registers.software-dl.ti.com/.../EXAMPLES_POSITION_SENSE.html 的配置值是否应为:

    • RX 分频器:1、设置小数位
    • TX 分频器:19

    BR、

    Achala Ram