ZHCAF13 February   2025 MSPM0C1103 , MSPM0C1103-Q1 , MSPM0C1104 , MSPM0C1104-Q1 , MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G1519 , MSPM0G3105 , MSPM0G3105-Q1 , MSPM0G3106 , MSPM0G3106-Q1 , MSPM0G3107 , MSPM0G3107-Q1 , MSPM0G3505 , MSPM0G3505-Q1 , MSPM0G3506 , MSPM0G3506-Q1 , MSPM0G3507 , MSPM0G3507-Q1 , MSPM0G3519 , MSPM0L1105 , MSPM0L1106 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2228 , MSPM0L2228-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2MSPM0 如何支持 LIN 功能
    1. 2.1 时钟
    2. 2.2 LIN 硬件
    3. 2.3 SDK 中的 LIN 演示代码
      1. 2.3.1 LIN 命令器
      2. 2.3.2 LIN 响应器
  6. 3LIN 通信的实现
    1. 3.1 硬件连接
    2. 3.2 测试结果
      1. 3.2.1 命令器
      2. 3.2.2 响应器
  7. 4总结
  8. 5参考资料

LIN 响应器

LIN 命令器演示代码的主要功能是接收命令器发出的命令并执行相应的指令。在此演示代码中,响应器不进行时钟同步,而是使用自时钟,并且只检查同步字节是否正确。此外,没有超时错误检测。

图 2-1 展示了 LIN 响应器演示代码的流程。

 LIN 响应器演示代码流程图 2-2 LIN 响应器演示代码流程

在该演示代码中,使用了一个状态机来帮助接收命令和给出响应,如 图 2-3 所示。当中断发生时,将通过状态标志决定下一个未执行的状态,并跳转到该状态。

 LIN 响应器演示代码状态机图 2-3 LIN 响应器演示代码状态机

在该演示代码中,LIN 硬件通过 Sysconfig 进行初始化。除了引脚配置外,还需要设置中断和基本寄存器。LIN 计数器用于检测和验证中断字段。此外,同步字段通过 LINC0、LINC1 的计数和中断功能实现。有关详细设置,请参阅代码示例中的 .syscfg 文件。

表 2-4 是 LIN 响应器项目的摘要,其中包括主要使用的定义和函数。

表 2-4 LIN 响应器项目主要内容
名称 任务 说明 位置
LIN_RESPONDER_SYNC_CYCLES 定义 5.同步验证中的周期数 lin_config.h
LIN_MESSAGE_NOT_FOUND 定义 0xFF。未找到消息时的 UART LIN 值 lin_config.h
LIN_SYNC_BYTE 定义 0x55。同步字节的 UART LIN 值 lin_config.h
LIN_RESPONSE_LAPSE 定义 PID 停止位和数据传输开始位之间的延迟周期数 lin_config.h
SYSCFG_DL_init() 函数 初始化由 Sysconfig 生成的外设 ti_msp_dl_config.c
DL_UART_Extend_getLINCounterValue(UART_Regs *uart) 函数 获取 LIN 计数器值 dl_uart.c
DL_UART_Extend_getLINRisingEdgeCaptureValue(UART_Regs *uart) 函数 获取 LINC1 计数器值 dl_uart.c
DL_UART_Extend_getLINFallingEdgeCaptureValue(UART_Regs *uart) 函数 获取 LINC0 计数器值 dl_uart.c
DL_UART_Extend_receiveData(UART_Regs *uart) 函数 读取 RX FIFO 中的数据 dl_uart.c

setLINResponderRXMessage(UART_Regs *uart, uint8_t data, volatile LIN_STATE *gStateMachine)

函数 LIN 执行相应操作 lin_responder.c