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.

[参考译文] TMS320F280049C:TMS320F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1224705/tms320f280049c-tms320f280049c

器件型号:TMS320F280049C

您好,Vince Toledo

我正在处理一个涉及 LIN 通信的项目。 LIN 模块在从模式下工作。

我的项目使用两种类型的消息:

当主器件随数据发送 ID (0x10)时、该 LIN 从器件必须仅接收数据。

当主器件只发送 ID (0x11)时、该 LIN 从器件必须发送 响应数据。

 工作时、我对如何设置 HGEN CNTRL 值感到困惑。

我使用以下链接作为参考

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1114556/lin-module-discrepancy-in-technical-reference-manual-message-filtering-and-validation

我  现在遇到的问题与上述链接中的问题完全相同。

在 最新的手册参考(SPRUI33F)中、我在27.3.1.9处找到了以下内容

但是在27.7.2.21节中

这是令人困惑的,因为在手册中两者相互矛盾。 哪一种方法正确?

1.由于 LIN 模块是从机模式、所以需要设置的 HGEN CNTRL (0或1?)值是多少。 对于从模式、HGEN CNTRL 需要为1对吧?

2. 在  手册说明中为 TX 掩码、RX 掩码、IDSlaveTask (针对上述两种类型的消息)设置的值与所附图像中突出显示的相互矛盾?

提前感谢!

此致、

Akshaya Chokkalingam Ramanathan

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

    尊敬的 Akshaya Chokkalingam Ramanathan:

    感谢您的提问。 回答每个问题:

    Unknown 说:
    这令人困惑,因为在手册中两者相互矛盾。 哪个选项正确?

    LINMASK.TXIDMASK 和 LINMASK.RXIDMASK 的寄存器字段说明进行排队、以随技术参考手册 SPRUI33的修订版 G 更新。 这些寄存器字段的正确描述应如下:

    当 HGENCTRL 设置为1时、该域必须设置为0xFF 如果必须比较完整 ID。 "

     在  手册说明中为 TX 掩码、RX 掩码、IDSlaveTask (针对上述两种类型的消息)设置的值(如所附图像中突出显示的那样)相互矛盾?

    请参阅此处主题中提供的最新建议答案: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1114621/tms320f280049c-lin-module-in-slave-mode---how-to-initiate-response-transmission

    该示例包含要使从模式工作所需设置的所有设置。

    POST 以"这是一个 LIN 从模式示例"开头、并具有一个代码块、提供一个 LIN 从模式设置示例。

    此致、

    Vince

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

    您好、Vince  

    感谢您的回答。 我正在使用中断方法。 我已经使用下面链接中建议的 Excel 来计算  TX 掩码、RX 掩码、 IDSlaveTask。  

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1194114/tms320f280039c-question-on-lin-rx-tx-idslavetask-calculation

    我得到以下结果

    正如我说过的、我将在从模式下使用 LIN。 主器件发送带有数据的0x10 ID -从器件接收数据。 主器件单独发送0x11 ID -从器件必须发送响应。

    但是、当我用过上面的  TX 掩码、RX 掩码、 IDSlaveTask 时。 从随附的图像中、它无法正常工作!

    我想知道我是使用了正确的 Excel、掩码、ID 值是正确的还是 缺少了一些-因为它无法按预期工作!

    提前感谢

    Lg.

    Akshaya

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

    尊敬的 Akshaya:

    这看起来不像您使用的是最新版本的计算器、我的计算器显示了不同的值(显示的是 RX=41、这应该是正确的)。 我建议使用解决方案2、其 IDSLAVETASKBYTE=51、RXMASK=41、TXMASK=40。

    此致、

    Vince

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

    尊敬的 Akshaya:

    另外、请确保您使用的是正确的 PID 器件时的示例。 0x10=0x50时的 PID、0x11=0x11时的 PID。 因此、如果您在发送"0x10"时未正确设置奇偶校验位、则会同时出现奇偶校验错误且无响应。

    此致、

    Vince

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

    哈洛·文斯

    非常感谢您的回答。 您能否提供最新版本的计算器、因为我对不同的 ID 有许多要求。 如果我有最新的计算器、那会很有用。

    我是否可以知道建议解决方案2的原因? 因为我有2个 ID、并且运行在从模式下。 一个 PID、有来自主器件(0x10)的数据。 另一个没有来自主器件(0x11)数据的 PID -从器件必须发送针对这一情况的响应。(因此、从 Excel 解决方案1或解决方案3来看、最适合这种情况? 这是否正确? 或者我缺失了一些东西。

    Lg.

    Akshaya

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

    尊敬的 Akshaya:

    请在此处查看最新的 lin_mask_calculation 计算器 Excel 文件计算器:

    e2e.ti.com/.../4162.lin_5F00_mask_5F00_calculation_5F00_updated.xlsm

    我建议采用解决方案2、因为这样的文本"在从器件传输之前先接收数据、以避免冲突"。 这似乎就是您打算针对此处提到的器件执行的操作:

    一个具有来自主控器(0x10)[/报价][quotoint userid="561647" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1224705/tms320f280049c-tms320f280049c/4628282 #462828282"]数据的 PID 必须发送此回复[/报价]

    此致、

    Vince

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

    您好、Vince

    我想您误解了我的问题。 让我尽量解释清楚

    我的要求是在从模式下运行:-

    主器件随数据发送 ID (0x10)-从器件只接收数据、不需要发送响应。 只有从器件中的 Rxmask 必须传递这个消息。

    主机发送无数据的 ID (0x11)-从机必须发送响应状态。 只有从器件中的 Txmask 必须传递这个消息。

    正如您建议的那样、我已经尝试了解决方案2 ( IDSLAVETASK=51、RXMASK=41、TXMASK=40)。 我遇到了问题。

    当我从主机发送带有数据的0x10时,从机中的 Rxmask 允许这个以及相应的 RX ISR 被调用(按预期工作)

    但是当我从主器件发送0x11时- RXMASK 和 TxMASK 会传递这个消息、我不需要这个消息。 只有 Tx 掩码必须作为主器件发送 ID 传递该消息、而不带数据。

    我尝试了解决方案1或3   (IDSLAVETASKBYTE=51、RXMASK=1、TXMASK=40)-这满足我的要求

    但随后遇到另一个问题  

    我还有其他与上述相同的要求   

    主器件随数据发送 ID (0x20)-从器件只接收数据、不需要发送响应。  只有从器件中的 Rxmask 必须传递这个消息。

    主机发送无数据的 ID (0x21)-从机必须发送响应状态。  只有从器件中的 Txmask 必须传递这个消息。

    以前的解决方案1或解决方案3已经起作用、所以我用 Excel 进行了计算

    这里解决方案2和解决方案1或3具有相同的 I DSLAVETASKBYTE=61、RXMASK=41、TXMASK=0。  

    当我从主机发送带有数据的0x20时,从机中的 Rxmask 允许这个以及相应的 RX ISR 被调用(按预期工作)

    但是当我从主器件发送0x21时- RXMASK 和 TxMASK 会传递这个消息、我不需要这个消息。 只有 Tx 掩码必须作为主器件发送 ID 传递该消息、而不带数据。

    问题在于解决方案2和解决方案1或3都有相同的 RXMASK、TxMASK 和  IDSLAVETASKBYTE。 在本例中、解决方案2实际上正在发生、但在这种情况下、如何确保解决方案1或3必须起作用?

    当两个解决方案都具有相同的设置以及如何确保我们所需的解决方案 能够正常工作时、滤波器就不可靠了、但在这种情况下、其他解决方案无法正常工作?

    Lg.

    Akshaya

     

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

    尊敬的 Akshaya:

    让我们首先解决第一个问题。 那么我们可以继续讨论另一个问题。

    但是当我从主设备发送0x11时- RXmask 和 Txmask 传递此消息,但我不需要。 只有 Tx 掩码必须作为不带数据的主发送 ID 传递此消息。

    从您所描述的内容来看、这不应该成为可能。 如果 IDSLAVETASKBYTE=51且 RXMASK=1、那么主器件发送的值为0x11的 ID 不应触发它。 请参阅下面的红色位6、应该会触发不匹配情况。

    您是否可以通过读取适当的寄存器并在这里显示它的屏幕截图来确认 HGEN 位为1。 这听起来好像使用正常 ID 字节而不是 ID 从器件任务字节。

    此致、

    Vince

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

    您好、Vince

    我无法理解你在说什么!!

    我想第一个问题已经解决了。  为此、 您 建议了解决方案2。 这 在 我的情况下是不起作用的。 解决方案1或3工作正常-这就是我在上面解释的。

     如上图所示、HGENCTRL 会设置 Id 从站任务字节!

    您描述了解决方案2 =( IDSLAVETASKBYTE=51、RXMASK=41、TXMASK=40)

    但此处的问题在于主器件发送0x11时 。 RXMASK 和 TXMASK 都经过。  

    当0x11从主器件发送而没有数据时。 是从器件 必须进行响应的 。 因此、只有 TXMASK 可以满足我的要求。

    以上图片为解决方案2。 0x11通过 RXMASK 和 TXMASK 传递。 但是、只有 TXMASK 必须通过、而解决方案1或3满足了该要求。 我尝试了解决方案1或3、我的要求得到满足。

    但真正的问题是  

    此处、解决方案2和解决方案1或解决方案3都具有相同的 RXMASK、TXMASK、IDSLAVETASKBYTE。 在本例中、控制器滤波如何区分这两种解决方案。 我需要解决方案1或3。 即使是解决方案2也具有相同的掩码和 idslavetaskbyte -解决方案2在我 进行测试时也确实在发生!

    Lg.

    Akshaya

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

    尊敬的 Akshaya:

    ID 为 RX=0x20且 TX=0x21时即可 无法实现 以便在触发 TX 时不会触发 RX。 RX 会如此 始终触发 ID、实际上可能发生这种情况。 您必须更改 ID。

    这就是您看到此问题的原因。 以下是使用图像的说明:

    请注意 RXID 行中第5位只有一个"1"。  问题是 TXID 在中也有一个"1" 相同的点 。 RXID 没有唯一的"1"。 RXID 中每一个"1"在 TXID 中也有一个"1"。

    解决方法是更改 RXID、使其在上面黄色部分的某个位置有一点。

    示例:将 RXID 更改为0x19

    这样您就可以分别屏蔽 RX 和 TX。

    此致、

    Vince