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.

[参考译文] TMS320F28P550SJ:可配置逻辑块(CLB)-如何开始?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1458312/tms320f28p550sj-configurable-logic-block-clb---how-do-i-get-started

主题中讨论的其他器件:C2000WARESysConfig

工具与软件:

您好、工程师
现在我打算使用 CLB 来实现 T-format 协议、请查看28p55的数据表 c2000、Ware_Motor t5213Format_f28p65x_comms_demo、它们很难理解和直接使用。


以下链接中的文档也是无效的、我想得到一些帮助。
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1007238/faq-configurable-logic-block-clb---how-do-i-get-started


还有另外两个问题:

1.在 tformat_f28p65x_comms_demo 例程中、CLB 是否仅控制 RS485的方向? 接收到编码器返回的数据后、它是否首先输入到 CLB、然后是 CLB 确定到下降沿的 CLK、然后输出 SPI?
2.没有28p55的 CLB 库在 C2000 Ware_Motor 中, 28p65的 CLB 库是28p55?

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

    尊敬的 Lin:

    您能告诉我该示例在电机控制 SDK 中的哪个位置吗? 我不太熟悉电机控制 SDK、但我可以回答您有关 CLB 的问题。

    谢谢!

    Luke

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

     Luke、您好!
     当然, 没有   问题。   tformat 示例 目录 位于  C2000_SC2000_CLA Ware_Motor SDK _5_ 03 _00_IN 00\libraries\position_sensing\tformat 中 。  今天、 我 将 学习 和 整理     与 CLB 相关的问题 、并 真诚地 向 您  寻求建议。
    谢谢!
    LIN

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

    尊敬的 Luke:
    我今天看了一下常规程序、并提出了一些问题、我想真诚地询问:
    1.如果我使用 clb 的 tformat 例程和 c2000cl_sdk_5_ Ware_Motor 03 _00_in 00\libraries\position_sensing\tformat 库进行通信、如何将其移植到现有项目? (我的原始工程中有 no.sysconfig 文件)
    如果我不使用 CLB 的 tformat 例程、只需要 CLB 在从编码器发送回数据时生成 SPI_CLK、我应该如何配置它?

    在 tformat 例程中:
    1.在 tformat.c 中、在接收数据时、为什么只采用 SPI_RXFIFO 中数据的低8位? 只需按照例程接收16位是否必须不正确?

    在 pm_tformat_source.c 中、为什么还需要发送两次0xFFFF?


    期待您的回复
    谢谢!
    LIN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我不使用 CLB 的 tformat 例程、只需要 CLB 在从编码器发回数据和接收数据时生成 SPI_CLK、应如何配置它?

    设计指南中记录了 CLB 的作用(www.ti.com/lit/tidue74)-第2.3.6节:CLB T-format 实现详细信息)。 在 TI 设计中、它不仅仅负责 SPI 的计时。  如果您只希望它生成时钟、则可以使用该示例作为参考。

    1. 如果我使用 clb 的 tformat 例程和 C2000_387SDK Ware_Motor _5_ 03 _00_in 00\libraries\position_sensing\tformat 库进行通信、如何将其移植到现有项目? (我的原始项目中有 no.sysconfig 文件)

    如在找到的链接中所述、添加 syscfg 后、T-format 软件指南会在一节中详细介绍如何将库集成到现有工程中。

    1. 在 tformat.c 中、为什么在接收数据时仅采用 SPI_RXFIFO 中数据的低8位? 只需按照例程接收16位必须不正确?

    这与定义的 FIFO 宽度(字大小)和 T-format 字 段中的位数有关。 掩码确保在响应的解码中仅使用所需的位。  

    在 pm_tformat_source.c 中、为什么需要再发送两次0xFFFF?

    这是为了在 RX 被接收时将 SPI TX 保持在高电平。 我记得这是协议的一部分。 我仔细看了看、已经有一段时间了。

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

    你好 Lori、
    非常感谢     您的 详细 回答、 但 我 在              过程中遇到了 syscfg 无法正确添加和配置的问题:

    1、我的 CCS 版本是12.8.1.在 CLB_TOOL_USER 指南中按照现有 DriverLib 项目中的5个启用 CLB 工具操作后、我遇到以下问题:

    通过将文件复制到工程目录中、将 CLB 示例文件夹中的"empty.syscfg"文件(C2000Ware_5_04_00_00\driverlib\f28p65x\examples\c28x\clb\empty.syscfg)添加到工程中。但是、CCS 不会询问我是否启用了 SysConfig。
    双击打开"empty.syscfg"、、将出现错误:
    加载"xxxxxxx\28P650DK9_Board_CPU1\Release\syscfg"时出错

    点击空白部分后进入界面选择芯片型号。

    2、我尝试了使用 pm_tformat_f28p65x.syscfg 并创建一个名为28P65_Board_CPU1_syscfg 的新文件、发生了相同的情况。
    我想在 PM_tformat_f28p65x_lib 中使用 CLB 设计、从一个新的 CLB 逻辑块开始、并根据我工程的 syscfg 中的 pm_tformat_f28p65x.syscfg 完全配置该逻辑块。
    但是、在保存 syscfg 后、当我再次打开 syscfg 文件时、我又回到了芯片模型选择界面。

    3、我查找了其他信息、发现有一名工程师直接编译了 PM_tformat_f28p65x_lib 工程、然后将 clbconfig.c 和.h 文件添加到上一个工程中以供使用。 这是应该如何使用它吗?

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

    您好、Lori
    我还有另一个问题、我在编译后可以直接在原始28p65项目中使用 PM_tformat_f28p65x_lib? 如何添加和使用它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="637270" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1458312/tms320f28p550sj-configurable-logic-block-clb---how-do-i-get-started/5599346 #5599346"]3、我查找到其他信息、发现一位工程师直接编译了 PM_tformat_f28p65x_lib 项目、然后将 clbconfig.c 和.h 文件添加到上一个项目中使用。 这是应该如何使用它吗?

    是的、您可以像通信演示一样使用该库。

    库:所有 CLB 逻辑和支持函数都在库中。

    通信演示项目:对于进出 CLB 逻辑块的连接、逻辑位于通信演示项目 SysConfig 中

    我有另一个问题、我可以在编译后直接在我的原始28p65项目中使用 PM_tformat_f28p65x_lib 吗? 如何添加和使用它?

    如果对库 C 代码或 CLB 配置进行任何更改、则需要重新编译库以合并这些更改。 如果不需要进行任何更改、则可以按提供的方式使用该库。   

    软件指南的"库集成"部分提供了更多信息。  

    我将深入了解 SysConfig 的相关问题并作出回应。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    双击打开"empty.syscfg"、将出现错误:
    加载"xxxxxxx\28P650DK9_Board_CPU1\Release\syscfg"时出错[/QUOT]

    所示目录是否为您需要该文件的位置?  确保路径中没有空格-我在过去遇到过与此相关的问题。

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

    是的、我检查了文件目录、没有空格。

    此外、我在 tformat_lib 中找到了 clb_Init ()、在 tformat_f28p65_comms_demo 中找到了 clb_Init ()。 我应该为我的项目使用哪一个? 换句话说、该文件应为 tformat_lib 或 tformat_f28p65_comms_demo 的 board.c.h 文件。 我应该使用哪一个?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、我在 tformat_lib 中找到了 clb_Init ()、在 tformat_f28p65_comms_demo 中找到了 clb_Init ()。 我应该为我的项目使用哪一个? 换句话说、该文件应为 tformat_lib 或 tformat_f28p65_comms_demo 的 board.c.h 文件。 我应该使用哪一个?

    两者都包含演示使用的内容:

    • 库工程: 库 sysconfig -> board.c 中提供了所有 CLB 逻辑和支持函数
    • 通信演示项目: 对于进出 CLB 逻辑块的连接、其逻辑位于通信演示项目 sysconfig --> board.c 中
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢您的答复。
    我还要问一下、28p55是否可以使用 pm_tformat_f28p65x? 何时提供28p55样片计划?

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

    28P55具有2个 CLB 逻辑块、而不是4个。  您将需要将设计 从逻辑块4和5 (P65)移动到块1和2 (P55)并更改 SPI 模块以匹配。 (特定逻辑块可以直接连接到特定的外设实例)。 如果我记忆正确、逻辑块2可以连接到 SPI-B

    此外、CPU 时钟也不同、因此请更改比例因子以生成所需的编码器时钟频率。  解决方案头文件中对此进行了详细说明。  

    我的目标是在年中之前在 SDK 中安装一个55倍的端口。  

    此致

    Lori

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

    非常感谢你的详细和认真的答复, Lori。

    我们目前只有一个28p65 PCB 板、外部晶体振荡器是25MHz。我们不能在硬件中使用 SPID、但可以使用 ***。因此、我在 tformat_f28p65_comms_demo 中修改了 pm_spi_base 的定义、将其从 spid 更改为 ***。在 tformat_f28p65_comms_demo 的 sysconfig 中、修改了 clb_txbar 和 txpubar 的 gpubar:

    •GPIO71 SPIC_CLK

    •GPIO70 SPIC_POCI

    •GPIO72 SPIC_PTE

    •GPIO69 SPIC_PICO

    •GPIO75 RS485_TxEn

    然后、在 tformat_lib 的 SysConfig 中、我将 clb4修改为 clb3、并重新编译这两个工程。

    •但是、在烧录到闪存并运行后、CLB 无法正常工作、并且 RS485_TxEn 也没有改变。能否更详细地介绍一下、我应该如何进行修改?

    •发送 id0时、SPIC_PICO 上有输出、但数据和频率不正确。我检查了 tformat_f28p65_comms_demo 中的函数 SPI_setConfig、不知道为什么 SPI_bitrate 为50万。如果系统时钟为200MHz、LSPCLK 为50MHz、那么 SPI_Brr 应为99。根据手册、trr 的通信频率为2.519brr、右格式为50m (2.5MHz、1)= 50m?

    这些可能是我遇到的最后两个有关 clb_tformat 的问题。

    注意

    林浩南

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

    让我看看具体细节,我会在一天内给你回复。  

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

    您好、Lori、

    很抱歉、您提出了很多问题。 非常感谢您的及时帮助。

    在过去的几天里、我一直在对问题进行故障排除。 运行 PM_tformat_setupCommandReadoutReset ()和 PM_tformat_startOperation ()函数后,我等待了几秒钟,以确保 SPI 有足够的时间来完成 DATA_ID0命令传输。 但是、我注意到 SPIFFTX 寄存器中的 TXFFST 保持在0x1100且没有减少。 此外、我使用逻辑分析仪捕获 SPI_POCI 和 TxEn 信号、但未观察到数据变化。 根据这些调查结果、我得出结论、CLB 无法按预期运行。 它不会生成 SPI_CLK 或控制 TxEn 信号、从而阻止 SPI 从器件正确发送数据。

    再次感谢您的支持。

    此致、

    林浩南

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

    请参阅图2-10、P65x 的输入/输出和 CLB 用法。 在提供的示例中:

    TxEN -->逻辑块4 OUTLUT4 --> CLB_OUTPUTXBAR2 --> GPIO1。 您需要更改此值以适应 GPIO75。 就越准确

    TxEN --> Tile X OUTLUT4 --> CLB_OUTPUTXBAR8 --> GPIO75 、其中 tilex 是您移动 Tile4内容的位置

    接下来、检查其他输入/输出连接、包括逻辑块之间的连接、以确保它们理解您所做的更改。

    为什么 spi_bitrate 为500000
    外部晶体振荡器为25MHz。

    SPI 处于外设模式、由 CLB 计时。 此配置中实际上未使用比特率。

    SPI 时钟频率由  /solutions/boostxl_posmgr/shared/include/tformat.h 中设置的 CLB 时钟速率决定

    对于给定的示例、CLB 的时钟频率为100MHz。 我怀疑 OSC 发生了改变、器件没有在200MHz 上计时(从而产生100 MHz 的 CLB 时钟)。 您可以使用 syscfg 来帮助实现这一点。 如果您确实使用了 syscfg、则删除随示例提供的 device.c 和、并改用 syscfg 生成的 device.c 和 device.h。  

    请参阅 软件指南 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价用户 id="637270" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1458312/tms320f28p550sj-configurable-logic-block-clb---how-do-i-get-started/5620511 #5620511"]但是、我注意到 SPIFFTX 寄存器中的 TXFFST 一直保留在0x1100并且没有降低。[报价 用户 id="637270" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1458312/tms320f28p550sj-configurable-logic-block-clb---how-do-i-get-started/5620511 #5620511"]它没有生成 SPI_CLK 或控制 TxEn 信号、从而阻止了 SPI/报价正确传输数据。

    是的-良好的调试。 我认为这是由于逻辑块输入/输出与引脚的连接发生变化(在我的上一篇文章中提到)

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

    你好 Lori、

    非常感谢您的答复。然而,我们目前在假期大约10天。我将在我返回后立即检查它。您能帮助保持此帖子不变吗?我真的很感谢您的帮助。

    此致、

    林浩南

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

    希望您有一个美好的假期。 如果系统在您离开后自动关闭该主题、请单击"Ask a related question"(提出相关问题)以开始链接到该主题的新帖子。  

    此致

    Lori

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

    您好、Lori、

    我的假期刚刚结束,我很高兴看到这篇帖子仍然在这里。

    今天、我检查了与 CLB 和 SPI 相关的输入和输出、发现我忘记了在 XBAR_setOutputMuxConfig 函数中修改 XBAR_OUT_MUX28_CLB4_OUT4和 PM_TFORMAT_RX_CRC 中修改原始 CLB4。

    令人惊讶的是、这些修改后通信变得正常、但通信速率使预期值翻倍(5Mbps、SYSCLK=150M、TFORMAT_CLB_CLK=75M、TFORMAT_BUS_CLK=2.5M)。 因此、我将 TFORMAT_CLB_CLK 更改为150m。

     1. TFORMAT_CLB_CLK 实际上应该是 SYSCLK/2吗?

     2、目前 SPI 传输和编码器数据返回没有问题,但 SPI 数据接收错误出现问题。

    ①在发送 DataID0时、我在 SPIRXBUF 中检查了前几组数据、发现接收到的数据为0xFFE4、0x0812、0x5EBA、etc.converted to binary、它们是111111100100、 0000100000010,010,0101111010111010…

    ②在发送 DataID3时、我在 SPIRXBUF 中检查了前几组数据、发现接收到的数据为0xFFE5、0x8812、0x34BA、etc.converted to binary、它们是111111100101、 1000100000010,010,0011010010111010…

    我注意到 SPI 过早开始接收数据、然后额外接收11位高级数据。 我推测在编码器的响应时间内、SPI 时钟继续生成、从而导致了该问题。 然后、我测量了编码器对命令的响应时间、大约为2.9us、相当于2.9us/400ns=7.25位、与实际情况不匹配。 我想问一下造成这种情况的原因和可能的解决办法?

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

    但通信速率使预期值翻倍(5Mbps、SYSCLK=150M、TFORMAT_CLB_CLK=75M、TFORMAT_BUS_CLK=2.5M)。 因此、我将 TFORMAT_CLB_CLK 更改为150m。

     1. TFORMAT_CLB_CLK 实际上应该是 SYSCLK/2吗?

    [报价]

    在 P65x 上、CLB 可以从 ePWM 时钟或从 AUXPLL 计时。

    如果已将器件配置为 SYSCLK = 150 MHz  和 EPWM = 150 MHz 、则 CLBCLK 也将是150 MHz。

    边注

    一些较旧的器件具有 ePWM < 100 MHz 的限制。 这可能是示例中存在/2的原因。 P65X 没有该限制。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我注意到 SPI 过早地开始接收数据、另外接收了11位高级数据。 我推测在编码器的响应时间内、SPI 时钟继续生成、从而导致了该问题。 然后、我测量了编码器对命令的响应时间、大约为2.9us、相当于2.9us/400ns=7.25位、与实际情况不匹配。 我想问一下造成这种情况的原因和可能的解决办法吗?

    您能否像以下示例那样捕获请求/响应的波形?

    软件是否会抱怨 CRC 错误?

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

    Lori、您好!

    我使用逻辑分析仪提取 SPI_CLK、TxEn、SOMI 和 SIMO、并使用数据 ID 2进行通信测试。 波形图如下所示:

    在编码器响应数据 ID 的等待时间中、SPI_CLK 是正确的。 编码器返回的数据和通信时序是正确的。 但 SPI_CLK 确实存在问题、具有1.97us 的超低电平。

    在我的应用中、tformat 通信每62.5us 进行一次、读取 SPIRXBUF 数据和解包、发送数据 ID 完成后、上述低电平发生周期也接近62.5us。 SW 则会抱怨 CRC 错误。

    观察并解码波形、编码器返回的数据为0x49 0x04 0xE8 0xA5、这对应于我使用的23位 Tamagawa 编码器。
     分别检查 SPIRXBUF 和 tformatRxData:

    SPIRXBUF    tformatRxData
    0xFFE4 228 (0xE4)
    0x9812 18 (0x12)
    0xE8A9 169 (0xA9)
    0xE248 72 (0x48)
    0xE248 72 (0x48)

    以这种方式看待时间序列没有什么问题。

    此致、

    林浩南

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

    尊敬的 Lin:

    波形是否与接收到的数据一样正确? 但 CRC 不正确?

    CRC 由 CLB 逻辑块在接收消息时计算。 建议仔细检查 CRC 生成逻辑块的输入/输出配置。  

    -Lori

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

    您好、Lori

    在过去两天里、我对 CLB 设计进行了全面检查和思考。 最终、我发现在 tformat_f28p65x_comms_demo 工程中、SPI 数据宽度配置为16位。 但是、根据通信设计、它应该是10位。 经修改后、tformat 通信恢复了正常。

     对此、我有两个问题。

    1.在 board.c 内的 PM_TFORMAT_CLB_init 函数中、为什么需要将 GolbalInputMux 配置为 CLB_GLOBAL_IN_MUX_EPWM1A?

    在将 SPI 数据位宽更改为10位后、为什么巧妙地避开起始位和结束位? 看到接收到的数据直接不包含起始位和停止位。 这令人惊叹。

    此外、我想问一下 CLB 示例中 Endat 相关例程和相关文档的位置。 我在 MotorControl_SDK_5.03中找不到它们。

    我真的很感谢您今天及时的回复和帮助。 真诚地感谢它。

    此致、

    林浩南

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在过去两天里、我对 CLB 设计进行了全面考察和反思。 最终、我发现在 tformat_f28p65x_comms_demo 工程中、SPI 数据宽度配置为16位。 但是、根据通信设计、它应该是10位。 修改后、tformat 通信恢复正常。

    LIN、

    很高兴您发现了这个问题。 看起来 SDK 中的代码在 PM_tformat_setupPeriph()中有自己的 SPI 配置、并且不对该外设使用 syscfg。 我明白这可能会让人困惑。  

    [报价 userid="637270" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1458312/tms320f28p550sj-configurable-logic-block-clb---how-do-i-get-started/5648861 #5648861"]1.在 board.c 内的 PM_TFORMAT_CLB_INIT 函数中、为什么需要将 GolbalInputMux 配置为 clb_global_in_MUX_EPWM1A?[/QUOT]

     CLB_init 中的某些代码不是必需的-这只是该寄存器的默认设置。 例如、将输入0设置 为 GP_REG (高低加权) 的线路优先于任何本地或全局输入设置。  在这种情况下不使用全局设置、但 CLB 工具/syscfg 仍会发出代码以将其设置为默认值。

    2.为什么在将 SPI 数据位宽更改为10位后我巧妙地避免了起始位和结束位? 看到接收到的数据直接不包含起始位和停止位。 它是惊人的。[/报价]

    我需要返回并查看代码以记住我是怎么做的。 自从我查看该代码已经有一段时间了。  

    此外、我想询问 CLB 示例中 Endat 相关例程和相关文档的位置。 我在 MotorControl_SDK_5.03中找不到它们。[/QUOT]

    遗憾的是、我们的 EnDat2.2 解决方案从未发布到 SDK 中、因此未记录 CLB 部分。  

    感谢各位这些天及时回复和协助。 真诚感谢。
    [/quote]

    很高兴我能提供帮助!  

    [/quote][/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    2.我为什么在将 SPI 数据位宽更改为10位后巧妙地避免了起始位和结束位? 看到接收到的数据直接不包含起始位和停止位。 它是惊人的。[/报价]

    我很惊讶它没有被记录在案...我记得 FIFO 中的对齐方式如下所示。  

    从 FIFO 中读取数据时、在 SPI ISR 中、数据被0xFF 屏蔽、仅获得低8位。

    X S 1 2 3 4 5 6 7 8   <- 10位、X 是无关位、S 是第一个起始位

    D S 1 2 3 4 5 6 7 8   <- 10位、D 是上一个定界符位、S 是新起始位

    D S . 等等