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.

[参考译文] TMS320F28034:当用作 LIN 主控器件时、如何请求从器件数据

Guru**** 2538950 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1123826/tms320f28034-how-to-request-slave-data-when-acting-as-a-lin-master

器件型号:TMS320F28034
主题中讨论的其他器件:C2000WARE

大家好、

以下是客户提出的问题、可能需要您的帮助:

当用作 LIN 主机时、请求从机数据的命令或设置是什么?

谢谢、此致

耶鲁李

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

    您好、Yale、

    我们的 LIN 专家今天不在办公室。 请等待回复延迟

    此致、

    Peter

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

    您好、Yale、

    请查看以下 C2000Ware 示例: C:\ti\c2000\C2000Ware_version\device_support\F2803x\examples\c28\Lina_external_loopback

    通常、您必须将正确的 ID 写入标头。 所有从节点都将接收消息、但只有 ID 匹配的从节点才会响应。  

    此致、

    Marlyn

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

    您好、Marlyn、

    感谢您的支持!

    [引用 userid="315358" URL"~/support/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1123826/tms320f28034-How-request-slave-data-when-acting-a-lin-master/4169335#4169335"]您必须将正确的 ID/quote[引用]标题中的内容写入正确的 ID/quote[]。

    此 ID 是否指的是 LINID?  如何写入?  例程中未给出相应的写入方法。

    谢谢、此致

    耶鲁李

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

    您好、Yale、

    是的、我重新读取了 LINID。 我指向的 LIN 示例显示了如何写入 LINID 寄存器以及如何设置 RXIDMASK/TXIDMASK。  

      //
        // LIN MASK Configuration 2
        //
        LinaRegs.LINMASK.bit.RXIDMASK = RXID_MASK;	// 0xA
        LinaRegs.LINMASK.bit.TXIDMASK = TXID_MASK;	// 0xA
    
        //
        // Initialize the Slave LINIDNUM register
        //
        LinaRegs.LINID.bit.IDSLAVETASKBYTE = LINIDNUM_Slave;    // 0x30
    
        //
        // Release	SCI from software reset state - End of Config
        //
        LinaRegs.SCIGCR1.bit.SWnRST = 1;
    
        //
        // LIN Response Length
        //
        LinaRegs.SCIFORMAT.bit.LENGTH = RESP_LENGTH;
    
        for(i=0;i<8;i++)
        {
            //
            // Transmit Data - This populates the LIN transmit
            // buffers - no data is actually sent yet.
            //
            LinaRegs.LINTD0.all = *Tx_DataPtr++;
            LinaRegs.LINTD1.all = *Tx_DataPtr++;
    
            //
            // Send ID by writing to LINIDNUM register
            // This causes the ID to be written to the bus.  In turn,
            // this causes both TX and RX ID matches in the slave task
            // to occur - causing the data in the transmit buffers to
            // be placed on the bus and also read into the receive buffers
            //
            LinaRegs.LINID.bit.IDBYTE = LIN_ID;	        // 0x3A

    此致、

    Marlyn

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

    您好、Marlyn、

    客户现在可以正确发送报头、但从机不能发送匹配的消息。 他们是否需要设置除 LINID (PID)之外的任何内容?

    当2803x 作为主机发送消息时。 假设0x01是主器件的控制消息标头(假设没有数据)、0x02是请求从器件数据的消息标头。 发送消息标头时、如何判断消息是主机控制消息还是请求数据的消息? 毕竟、这个头的分配方法是将 PID 写入 LINID。

    谢谢、此致

    耶鲁李

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

    您好、Yale、

    [~ userid="514648" URL"/support/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1123826/tms320f28034-How-Request-slave-data-When-acting-a-lin-master/4172013#4172013)]客户现在发送的报头不正确,但与报头匹配。 他们是否需要设置除 LINID (PID)之外的任何内容?[/QUERP]

    客户如何设置 IDSLAVETASKBYTE、这也是必需的、以便从机知道 LIN 节点是否需要执行 RX 响应、TX 响应或任何操作。

    此致、

    Marlyn

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

    您好、Marlyn、

    感谢您的后续支持! 此问题已解决。  原因是客户设置的帧时间间隔太短。 从器件尚未响应、主器件将发送下一帧。

    谢谢、此致

    耶鲁李