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.

[参考译文] CCS/TMS570LS1224:TMS570 LIN 驱动器

Guru**** 2557650 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/877027/ccs-tms570ls1224-tms570-lin-driver

器件型号:TMS570LS1224

工具/软件:Code Composer Studio

大家好、任何 LIN 协议专家都可以举手。

我有这个 LIN 数据包  

1)写入帧:break+syn+PID (0x78)+data1 (0x01)+data2 (0x02)+校验和

2)延迟1

3)响应帧(读帧):break+syn+PID (0x03),必须返回8个数据字节。

include "LIN.h"
#include "sys_core.h
#include "sys_common.h"
#include "system.h"


uint8 text1[2]={0x01、0x02};
uint8 text2[8]={0};


void main (void)
{


/*启用中断。 *
_enable_IRQ ();

linInit();

/*检查 Tx 是否就绪以及 LIN 总线是否空闲(检查忙标志)*/
while (!(linIsTxReady (linREG)))||(linREG->FLR 和0x8U = 0x8U);

/*发送 LIN 报头,包括同步间隔字段、同步字段和标识符。 *
LinSendHeader (linREG、0x78);
LinSetLength (linREG、2);
/*发送数据文本1*/
linSend (linREG、&text1[0]);

__delay_cycles (80000000);

//set the length of the response data
linSetLength (linREG,8);
linSendHeader(linREG,0x03);


}//
用户代码 begin (4)*/
void linNotification (linbase_t *lin,uint32 flags)
{
/*数据从 RD 寄存器中读取并存储在文本2中。 *
if (((linREG->FLR 和 LIN_RX_INT)== LIN_RX_INT)
{
linGetData (linREG、text2);
}
}/*用户代码结束*/ 

 在编写代码时是否有任何错误。

我有两个问题

1)看不到 linSend()的任何发送数据;在示波器 上。当启用回送时,我可以在示波器上监视数据  

2)我无法从从从器件接收任何数据。  

3)在我写一个波特图时、在写入响应数据的标头之前、我是否需要使用 setlength。

还是在 sendlin 函数之前使用它?

这些是我的 LIN 配置  

/**-启用 LIN 模式*/
LINREG->GCR1 = 0x40U;

/**-设置控制寄存器1
*-启用发送器
*-启用接收器
*-进入调试模式时停止
*-禁用环回模式
*-启用 HGENCTRL (使用 ID 字节进行屏蔽滤波)
*-使用增强校验和
*-启用多缓冲模式
*-禁用自动波特率调整
*-禁用睡眠模式
*-将 LIN 模块设置为主模块
*-禁用奇偶校验
*-在 ID4和 ID5中禁用数据长度控制
*

LINREG->GCR1 |= 0x03020C40U
|(uint32)((uint32) 1U <<12U)
|(uint32)((uint32) 0U << 2U)
|(uint32)((uint32) 1U <<5U);

我使用了10k 波特率

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

    您好!

    据我所知、主任务仅传输标头、而 Salve 任务则传输响应。 我不知道 LIN 规范的详细信息。

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

    我的第三个问题

    在我写一个波特图时、在写入响应数据的标头之前、我是否需要使用 setlength。

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

    主任务不传输响应数据、因此您无需设置长度。