⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample4_readme.txt

📁 基于LPC76X的LIN开发通信源程序调试通过
💻 TXT
字号:
/********************************************************************/
                                                           2006.09.11.
            R8C/23 CAN/LIN 演示板 样例程序说明
			
                        Sample4:LIN从机
						
/********************************************************************/
<操作环境>
 * MCU : R5F21237JFP ES
 * CPU Clock : 20MHz

<实现功能>
	接收主机发送的header,依据同步段调整uart通信速率;
	对ID分析,接收/发送/忽略数据段。非接收情况下,会根据ID与slot中ID匹配情况判断是否发送相应ID的数据;
	能够判断休眠命令,进入休眠状态;
	4s钟总线无活动,自动进入休眠状态;
	外部事件触发,发送wakeup命令;
	接收wakeup命令;

<说明>
* LIN 波特率:9600bit/s

* LIN从机包括4个状态
	IDLE状态(初始状态),准备接收header,并判断是否该进入SLEEP状态;
	SLEEP状态,等待接收/发送wakeup;
	RUN状态,LIN主机通信状态;
	ERROR状态,发生错误后进入该状态,通信停止。(用户可以根据需要添加错误处理函数)

* 通信过程
	接收header的break段;。
	接收header的同步段,并重新调整波特率;
	接收header的ID段,重新计算受保护ID的奇偶校验位,根据接收到的ID,判断:
    	1) 是由主机发送帧的数据段,则接收数据段,检查校验和(标准型)。
	判断是否为休眠命令,若是马上转入休眠状态;若不是,则将数据存入对应ID的slot。
    	2) 不是由主机发送帧的数据段,比较接收到的ID。
	如果与信箱中的ID匹配,则将该slot信箱中的数据发送到LIN总线上;若找不到匹配的信箱,则忽略数据帧。
    	发送/接收/忽略 完数据段后,再次进入接收header的状态。
	若从机在4s之内接收不到header,则自动进入休眠状态。
	从机处在休眠状态时,可以接收来自LIN总线上的wakeup信号(>=150us的显性电平)。
	接收到wakeup信号后,转入接收header的状态。
  	另外,当从机处于休眠态时,同时检测是否应用层发生了事件。
	若有事件发生,该从机本身可以发出一个wakeup信号,转入接收header的状态,
	发送完wakeup后的150ms内,若未接收到header的break信号,则该从机将再次发送一次wakeup信号,最多总共可以发送三次。
	若三次发送均失败,再次进入休眠;

	注:如果从机是由自身发送wakeup被唤醒,当对应事件的帧传输完毕时,应该将事件标志app_event清零。
	由于该样例程序并未详细定义帧的用途,用户需要在注解的位置自行添加。

* 错误代码
	1) UART传输时发生的错误:
      	   UART_OVERRUN_ERROR(uart过载错误)
      	   UART_PARITY_ERROR(uart奇偶校验错误)
      	   UART_FRAMING_ERROR(uart传输错误)
    	2) LIN错误
      	   LINRX_CHECKSUM_ERROR(校验和错误)
      	   PID_PARITY_ERROR(PID奇偶校验错误)
      	   SHORT_MESSAGE_ERROR(消息不全错误: 在接收数据段时,未接收到数据段或数据段不完整)
       	   SYNCBREAK_ERROR(break错误)

* 帧的定义
	除去受保护ID的两个奇偶校验位,帧ID共6位,后四位为cmd,前两位为DLC(数据长度码),参见lin_slave.c中table的注解部分:
	帧ID = 0x31,0x3C主机发送,所有从机接收;0x3c为诊断帧,若数据段的第一字节为零,则为休眠指令(协议强制规定);
	其余帧ID从机根据需要发送或忽略。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -