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
LIN 命令器演示代码的主要功能是接收命令器发出的命令并执行相应的指令。在此演示代码中,响应器不进行时钟同步,而是使用自时钟,并且只检查同步字节是否正确。此外,没有超时错误检测。
图 2-1 展示了 LIN 响应器演示代码的流程。
在该演示代码中,使用了一个状态机来帮助接收命令和给出响应,如 图 2-3 所示。当中断发生时,将通过状态标志决定下一个未执行的状态,并跳转到该状态。
在该演示代码中,LIN 硬件通过 Sysconfig 进行初始化。除了引脚配置外,还需要设置中断和基本寄存器。LIN 计数器用于检测和验证中断字段。此外,同步字段通过 LINC0、LINC1 的计数和中断功能实现。有关详细设置,请参阅代码示例中的 .syscfg 文件。
表 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 |