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.

[参考译文] TMS570LC4357:LIN 通信未显示任何信号

Guru**** 2419730 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1307040/tms570lc4357-lin-communication-not-showing-any-signals

器件型号:TMS570LC4357
主题中讨论的其他器件: HALCOGEN

您好!

我有几个关于 TMS570LC4357 LIN 通信配置的问题。 我已经查看了 LIN 通信的文档,我对为什么我在调用 linSendHeader ()函数时只看到任何信号变化感到困惑。 我知道 linSetLength ()函数必须在使用 linSend ()函数发送 LIN 数据之前调用,但是这个函数是否需要每次调用,或者仅当发送的数据长度发生变化时才需要调用? 此外,如果 linSend()函数可以发送的最大字节数为8 ,那么在8字节数据之后如何发送校验和? 是否通过再次调用 linSend()函数并手动发送校验和来发送校验和?

谢谢!

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

    您好,LAN

    但是是否每次都需要调用此函数,或者仅当发送的数据长度将发生变化时才需要调用此函数?

    每次无需调用该函数、并且仅在长度将发生变化时才能调用。

    此外,如果 linSend ()函数可以发送的最大字节数为8 ,那么校验和应该如何在8个字节的数据后发送?

    是的、可发送的最大字节数仅为8。 如果您需要在8个字节后发送校验和、则只需将长度更改为校验和长度、并应发送校验和、而在再次发送校验和后、您需要将长度重新配置为数据长度。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    这就是我的想法、但是即使我已在 HALCOGEN 中设置了具有正确波特率和启用中断等的 LIN 除了正在发送的标头外、我没有看到 LIN 总线上有任何活动。 我已经尝试使用和不使用 linSendWakupSignal ()函数,确保调用 linInit ()函数,但我从未看到从 linSend()函数发送的任何数据。  

    除此之外,即使我已经调用 linEnableNotification ()并在 HALCOGEN 中启用了通知,我在总线上接收到另一开发板的 LIN 消息时也不会触发中断。 除了中断所必需的函数之外、是否还需要调用其他函数?  

    我还在技术参考手册中看到、当接收到 ID 0x3E 时将触发 ID 中断、 但手册稍后会说明、在 HALCOGEN 中将 RX 掩码设置为0xFF 以及将 HGEN CTRL 设置为1 (这是我之前设置的)允许在所有情况下都匹配。 0x3E ID 有什么特别之处吗? 我还尝试了基于 GEAT 和 ID 的中断、但没有效果。

    谢谢!

    伊恩

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

    尊敬的 Ian:

    这就是我的想法,但即使我在 HALCOGEN 中设置了具有正确波特率的 LIN,启用了中断等。 除了正在发送的标头外、我没有看到 LIN 总线上有任何活动。 我已经尝试使用和不使用 linSendWakupSignal ()函数,确保调用 linInit ()函数,但我从未看到从 linSend()函数发送的任何数据。  [/报价]

    我在环回示例下进行了测试、运行良好、我的意思是能够在接收缓冲区中接收数据、而不会出现任何问题。

    e2e.ti.com/.../LIN_5F00_Example_5F00_LC4357.zip

    您能否将其作为参考并比较您的代码?

    此外,即使我调用 linEnableNotification ()并在 HALCOGEN 中启用了通知,但在总线上收到另一开发板的 LIN 消息时,我似乎也不会触发中断。 除了中断所必需的函数之外、是否还需要调用其他函数?  [/报价]

    默认情况下、中断将处于禁用状态、您还应该调用以下函数来启用中断。

    _enable_interrupt_();

    还要确保、

    对于 LIN1、默认功能仅限 LIN、因此不需要任何引脚配置、但如果您使用的是 LIN2、则还应确保在相应的引脚上将引脚配置为 LIN 功能。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    非常感谢您提供 LIN 示例代码。 这对于为我的项目设置 LIN 提供了巨大的帮助。

    我已经设置了与您类似的代码。 您的代码与我发现的代码之间的唯一区别是我启用了 RX 中断、并且波特率为9.6kHz。 我设法发送和接收数据、但出于某种原因、我无法在接收 LIN 报文时引发中断。 我在我的项目或 LIN 示例项目的生成代码中没有看到_enable_interrupt_()函数。 我们的代码是否使用相同的环境?  

    谢谢。此致、

    伊恩

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

    尊敬的 Ian:

    做一件事情、

    只需浏览 HALCoGen 中的"帮助主题"部分、

    这里有一个示例 Lin_Digital_Loopback_Interrupts

    并按照此示例中提供的分步说明进行操作:

    在本例中、我们可以看到它们已启用并使用 LIN_RX 中断。

    您也可以找到相应的示例代码:

    按照这些步骤操作、它应该可以正常工作。

    --

    谢谢。此致、
    Jagadish。

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

    它起作用了! 非常感谢。 我能够发送和接收数据、并在接收到数据时触发中断。 非常感谢您的耐心和帮助。

    谢谢。此致、

    伊恩