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.

[参考译文] MSPM0G3507:安全中的单线通信

Guru**** 2986400 points

Other Parts Discussed in Thread: MSPM0G3507

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1662052/mspm0g3507-single-wire-communication-in-safety

器件型号: MSPM0G3507

尊敬的 TI 论坛:

 

我想问 MSPM0G3507 是否支持配置为开漏输出的 GPIO 引脚、同时 是否能够读回该引脚上的数字值? 因此、将 其配置为输出、但能够读回。

是否建议将引脚设置运行时切换、例如从输出切换到输入、或者以另一种方式实现单线通信(假设使用开漏输出将数据放置在线路上)? 是否建议安全应用像这样使用您的 MCU?

 

提前感谢您的支持!

 

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

    如果在 IOMUX 中设置 INENA 位、则可以看到该(输入或输出)GPIO 的当前状态。

    Driverlib 并不容易、但配置引脚后、可以执行以下操作:

    > IOMUX->SECCFG.PINCM[pincmIndex]|= IOMUX_PINCM_INENA_ENABLE;

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

    尊敬的 Marton:

    是的、这受支持。

    在 MSPM0G3507 上、可通过 IOMUX INENA 位启用输入缓冲器、以便软件可以读取焊盘上存在的实际逻辑电平、即使引脚配置为 GPIO 输出运行也是如此。 如果要实现开漏式单线接口并读回总线状态、这是正确的方法。

    例如、配置该引脚后、可以通过以下命令启用输入缓冲器:

    IOMUX->SECCFG.PINCM[pincmIndex] |= IOMUX_PINCM_INENA_ENABLE;

    然后使用正常的 GPIO 输入读取路径读取引脚、例如:

    bool busHigh = (DL_GPIO_readPins(GPIOx, GPIO_PIN_x) != 0U);

    对于单线开漏通信、除非协议确实需要、否则我不建议在输出模式和输入模式之间重复切换引脚。 一种更好的方法是保持引脚配置固定为开漏/高阻态 ON-1、启用输入缓冲器并按如下方式控制总线:

    Transmit 0: drive the pin low
    Transmit 1: release the pin, external pullup brings the line high
    Receive:    release the pin and read the input state

    这可以避免不必要的 IOMUX 运行时重新配置、并降低出现时序或争用问题的可能性。

    一些重要的硬件说明:

    • 使用大小可满足所需总线速度和电容的外部上拉电阻。

    • 确保单线总线上的所有器件均为漏极开路/集电极开路。 任何器件都不应主动将线路驱动为高电平。

    • 如果使用 MSPM0 ODIO 和 5V 容限开漏引脚、硬件开发指南注意到 ODIO 引脚需要外部上拉电阻、因此我们建议在引脚和上拉路径之间使用串联电阻、270Ω 显示为建议值。

    • MSPM0G3507 数据表定义了支持开漏的信号类型(包括 OD 和 IOD)、将 IOD 描述为具有开漏行为的输入、输出或同时输入/输出。

    对于安全应用、这是可能的、但安全情况取决于系统级实现、而不仅仅是 GPIO 功能。 如果这种通信与安全相关、我建议添加如下诊断:

    • 驱动为低电平后回读、以检测将总线拉至低电平失败

    • 释放线路后回读、以便检测卡在低电平的故障、

    • 总线阻塞的超时检测、

    • 帧上的 CRC/校验和、

    • 序列计数器或活动计数器

    • 在通信丢失时定义了安全状态、

    • 总线争用分析、

    • 外部上拉/开路/短路故障分析。

    如果这是汽车式单线网络、还应考虑专用 LIN 物理层是否更合适。 TI 的 MSPM0 G 系列硬件指南将 LIN 描述为一种常见的单线汽车接口、并展示了典型的 MSPM0 + LIN 收发器实现方案。与仅 GPIO 直接总线相比、这种实现方案提供了更强大的物理层。 希望这对您有所帮助!

    -布赖恩