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:LIN 从站驱动程序、我们无法在已配置的 LIN Rx 引脚上获得中断或 RX 中断。

Guru**** 2529560 points
Other Parts Discussed in Thread: TLIN1021DEVM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1231095/tms320f280049c-lin-slave-driver-and-we-are-unable-to-get-the-break-interrupt-or-rx-interrupt-on-configured-lin-rx-pin

器件型号:TMS320F280049C
主题中讨论的其他器件:TLIN1021DEVM

您好!

您好!!!

我们正在测试 LIN 从站驱动程序、但无法在配置的 LIN Rx 引脚上获得中断或 RX 中断。
请查找有关硬件连接的详细信息:
我们正在使用 LIN 收发器(TLIN1021DEVM)在发射板和 LIN 主器件之间建立通信(在您的情况下、我们使用 LIN 主器件的 Canoe 接口)。我们已将 LIN 收发器 RX 引脚与 Launch Pad (LAUNCHXL -F280049C)连接 RX 引脚、即发射板上的引脚44和带有发射板引脚43的 Tx 引脚。根据手册中所述、我们正在使用 BP、因此我们已经进行了开关 S6至 BP 选择、并且 J101跳线引脚已短接。
请查找从软件端完成的与引脚配置相关的详细信息:
下面是在从模式下配置 LIN 的 LIN 初始化 API 伪代码说明:

 

void LINDrv_Init (void)

/*初始化 LIN 状态到空闲状态。 */
G_LIN_STATE = LIN_STATE_IDLE;

EALLOW;

/* LIN Tx GPIO 配置*/
GPIO_setPinConfig (GPIO_28_Lina_TX);

//GPIO_setPadConfig (28、GPIO_PIN_TYPE_STD);

GPIO_setDirection 模式(28、GPIO_DIR_MODE_OUT);

GPIO_setQualificationMode (GPIO_28_Lina_TX、GPIO_QUAL_ASYNC);

/* LIN Rx GPIO 配置*/
GPIO_setPinConfig (GPIO_29_Lina_RX);

GPIO_setPadConfig (29、GPIO_PIN_TYPE_STD);

GPIO_setDirection 模式(29、GPIO_DIR_MODE_IN);


GPIO_setQualificationMode (GPIO_29_Lina_RX、GPIO_QUAL_ASYNC);

/*重置模块*/
LIN_REG_SCIGCR0 |= LIN_SCIGCR0_RESET;

/*复位软件复位位*/
LIN_REG_SCIGCR1 &=~μ V (LIN_SCIGCR1_SWNRST);

/*配置 LINRx 和 LINTx 引脚*/
LIN_REG_SCIPIO0 |=(LIN_SCIPIO0_RXFUNC | LIN_SCIPIO0_TXFUNC);

/*选择 SCI 模式*/
// LIN_REG_SCIGCR1 |= LIN_REG_SCIGCR1 &(~LIN_SCIGCR1_LINMODE);
LIN_REG_SCIGCR1 |= LIN_SCIGCR1_LINMODE;

/*在从模式下配置 LIN 模块*/
LIN_REG_SCIGCR1 |= LIN_SCIGCR1_CLK_MASTER;

/*禁用长度控制的 ID4/ID5位*/
LIN_REG_SCIGCR1 |=(LIN_SCIGCR1_TIMINGMODE);

/*调试模式*/
LIN_REG_SCIGCR1 |=(LIN_REG_SCIGCR1和~(LIN_SCIGCR1_CONT));

/*配置奇偶校验*/
LIN_REG_SCIGCR1 |=(LIN_REG_SCIGCR1 &~(LIN_SCIGCR1_PARITYENA));

/*配置 SCI 停止位*/
LIN_setSCIStopBits (LINA_BASE、LIN_SCI_STOP_ONE);

/*将字符长度设为8位*/
LIN_setSCICharLength (Lina_base、char_length);

/*帧长度*/
LIN_setSCIFrameLength (LINA_BASE、FRAME_LENGTH);

/*选择多缓冲*/
LIN_REG_SCIGCR1 |=(LIN_REG_SCIGCR1 &~(LIN_SCIGCR1_MBUFMODE));

/*禁用环回模式*/
LIN_REG_SCIGCR1 |=(LIN_REG_SCIGCR1 &~(LIN_SCIGCR1_Loopback));
//LIN_REG_SCIGCR1 |= LIN_SCIGCR1_Loopback;

/*同步中断和同步定界符额外位*/
// LIN_REG_COMP |=(LIN_SYNC_BREAK_LEN |(LIN_SYNC_DIRECTEER_LEN - LIN_CONST_NO_ONE)<< LIN_COMP_SDEL_S));

/*配置波特率*/
LINDrv_SetBuadRate (LIN_CONFIG_BAUDRATE);

/*配置从 ID 进行消息过滤*/
LIN_REG_SCIGCR1 |=(LIN_REG_SCIGCR1和~(LIN_SCIGCR1_HGENCTRL));

/*配置过滤器比较 ID */
//LIN_REG_ID |=((uint32_t) LIN_MESSAGEID_COMPARE_CONFIG << LIN_CONST_NO_Eight);

/*配置过滤器掩码*/
LIN_REG_MASK |=((uint32_t) LIN_RXMESSAGEID_FILTERMASK << LIN_CONST_NO_16);

/*启用发送*/
LIN_REG_SCIGCR1 |= LIN_SCIGCR1_TXENA;

/*启用接收*/
LIN_REG_SCIGCR1 |= LIN_SCIGCR1_RXENA;

/*启用中断-中断检测中断、唤醒中断、
超时中断、Tx 中断、RX 中断、
ID 中断、奇偶校验错误中断、
同步帧错误中断、校验和错误中断、
位错误中断*/
LIN_REG_SCISETINT |=(LIN_SCISETINT_SETTBRKDTINT | LIN_SCISETINT_SETWAKEUPINT |
LIN_SCISETINT_SETTIMEOUTINT | LIN_SCISETINT_SETTXINT |
LIN_SCISETINT_SETRXINT | LIN_SCISETINT_SETIDINT |
LIN_SCISETINT_SETPEINT | LIN_SCISETINT_SETISFEINT |
LIN_SCISETINT_SETCEINT | LIN_SCISETINT_SETBEINT);

/*设置中断处理程序*/
Interrupt_register (INT_LINA_0、&LINDrv_IntLevel0Handle);

/*启用全局中断*/
LIN_REG_GLB_INT_EN |= LIN_GLB_INT_EN_GLBINT0_EN;

/*清除全局中断状态*/
LIN_REG_GLB_INT_FLG |= LIN_GLB_INT_CLR_INT0_FLG_CLR;

/*复位软件复位位*/
LIN_REG_SCIGCR1 |=(LIN_SCIGCR1_SWNRST);

EDIS;

/*启用中断*/
Interrupt_enable (INT_LINA_0);

}

请告诉我们、是否必须注意任何引脚配置、或我们需要配置任何与 SCI 模式/LIN 模式选择相关的东西来调用中断。

由于我们正处于项目的关键阶段、因此如果您在项目中提供宝贵的意见、将会有所帮助。

感谢您的考虑、等待您的回答。

谢谢。此致、
Tanya Singh

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

    Tanya、  

    主题专家不在办公室。 请预计在星期三之前回复。

    谢谢。

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

    您好、Tanya、

    感谢您在美国度假期间的耐心等待。  
    对于这一问题,我认为利用消除的过程来缩小问题的范围将是有益的。 因此、如果您可以执行以下操作、并让我知道它停止工作的位置、这将有助于缩小硬件、运行时 代码和配置代码问题的范围:

    1. 首先在没有从模式且没有连接到任何其他器件的情况下尝试。 看看 TX 引脚是否可以作为主器件传输数据。 如果 TX 引脚将正确发送数据、则至少所选的 LIN 模块(A 与 B 与 C 等)配置正确、硬件输出良好。
    2. 接下来、通过在 C2000器件接收数据时获取其 RX 引脚的示波器捕获、查看器件的 RX 引脚是否从主器件接收有效数据。 请确保我们可以使用捕获通过数据确定位的宽度、并确保波特率正确。
    3. 如果上述两项都正常工作、则 可能存在 需要调试的配置问题。 我建议先使用一个已知良好的 LIN 从站示例代码。 这些论坛中提供了该示例代码、如果您找不到、我可以将链接发送给您。

    此致、

    Vince