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.

[参考译文] MSPM0C1104:SPI- MICROWIRE 示例代码

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1457753/mspm0c1104-spi--microwire-example-code

器件型号:MSPM0C1104
主题中讨论的其他器件:SysConfigMSPM0G3507CC1310

工具与软件:

大家好、团队成员:

我的客户正在查找 MICROWIRE 示例代码。 是否有人会将我带到 MICROWIRE 示例代码?

SysConfig 中也没有相应选项。

此致、

TED

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

    我记得、MICROWIRE 是 SPI 的一个子集。 您要查找什么具体的 MICROWIRE 功能?

    SPI 示例如下所示:

    https://dev.ti.com/tirex/explore/node?node=A__AJwOQBR.oN.JLxoLVOhUdg__MSPM0-SDK__a3PaaoK__LATEST

    据我所知、MSPM0 SPI 没有3线(共享 MISO/MOSI) SPI 配置。

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

    Bruce、您好!

    MSPM0通过硬件支持 MICROWIRE 帧、它具有用于此的寄存器字段、数据表显示它支持 MICROWIRE。

    但 SDK 中没有示例。 而 TRM 中没有帧格式。 您还能补充吗?

    我的客户希望构建 MICROWIRE 从器件、 8位 ADDR 和16位数据。 仅读取函数。  

    此致、

    TED

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

    我希望知道答案的某个人(来自 TI)现在能够发言、但我开始怀疑这一特性不受支持。

    除您提到的项目外、我注意到:

    4) 4) TI-Drivers (frameFormat[])和 DriverLib (枚举 DL_SPI_FRAME_FORMAT)均无法识别此功能。

    5) 5) hw_spi.h 中的 CMSIS 定义名为"SPI_CTL0_FRF_MIRCOWIRE"、这是我预期如果有人使用过 CMSIS 的话、可能会注意到的拼写错误。

    我还没有尝试过这个功能、所以我不知道它可能提供什么;我发现的实现方式差异很大。

    ---------------

    也就是说、我对提议的软件 Slave 能否正常工作有一些疑问:

    A) MSPM0 SPI 不支持不同的 Tx 和 Rx 帧大小。 (您可以使用 framesize=4执行某些操作。)

    b) uWire 协议只为从器件(软件)提供一个单 SCK 时间来解码请求并提供结果、这是非常严格的时序、除非您可以说服主器件在适当的时间暂停。

    [编辑:从机帧大小至少为每个 TRM 7 (SLAU893A)第12.2.2.2.2节]

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

    观察到控制器(主器件)侧的行为:

    1) 1)请求(控制器 Tx)假定为8位

    2) 2)根据设置的帧大小(DSS 设置)来调整响应(控制器 Rx)的大小

    3) PICO (MOSI)在它进入 Rx 的 Hi-Z 之前的"IDLE" SCK 周期内(((8+1)个总 Tx 位)被驱动为低电平(=0)。

    4) SCK 是连续的(没有可见的停顿)。

    5) 5)片选(CS1)低电平有效。

    我还没有尝试过外设(从器件)方面、但我希望这些假设也能支持。

    测试案例:我从示例 spi_controller_multibyte_fifo_poll 开始、并在 SYSCFG_DL_init 调用后添加了该示例:

    Fullscreen
    1
    2
    3
    DL_SPI_disable(SPI_0_INST);
    DL_SPI_setFrameFormat(SPI_0_INST, SPI_CTL0_FRF_MIRCOWIRE ); // MicroWire [sic]
    DL_SPI_enable(SPI_0_INST);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    对于示波器:我还设置 PICO 的内部上拉电阻、并将帧大小设置为16 (使用 SysConfig)。

    [编辑:我在 MSPM0G3507上执行了该操作、但我认为 SPI 单元与 C 系列上的相同。]

    [编辑:关于/CS 的注释。]

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

    感谢您的努力 Bruce!

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

    我使用2个 C1104 LaunchPad 进行了类似的实验、其中一个运行  spi_controller_multibyte_fifo_poll、另一个运行 spi_peripheral_multibyte_fifo_poll。 [注意:对于后者、README.md 与.syscfg 不匹配。] 上述每个模块都更改了代码、且帧大小(DSS)设置为=16。 数据已正确发送/接收。

    1)外围设备(从设备)似乎具有相同的假设--请求为8位、响应根据帧大小(DSS)而定。

    2)外设 Tx 字节从 Tx FIFO 汲取仅用于响应时隙、因此即使 不同时传输这些位、SPI"发送字节帧/接收字节帧"惯例也适用。

    3) 3)控制器(主器件)侧没有明显的机制可以在 Tx 和 Rx 阶段之间暂停来为外设提供解码请求的时间。

    [编辑:修正了少量措辞。]

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

    不客气。 现在、我了解有关 MICROWIRE 的更多信息。

    在 CC1310 TRM (SWCU117I) Sec 中有一个非常类似的 MICROWIRE 实现(不是巧合)的有用演示  20.4.4.7。它包括波形。

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

    这是应用于 MSPM0的时序图

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

    谢谢。 您在哪里找到了这个? (我在任何 MSPM0 TRM 或 AppNotes 中都没有看到该错误。)

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

    TI 将在下一个版本 TRM 中更新此时序图。