LIN总线:汽车氛围灯控制

时间:2024-03-18 10:35:59

高档车比如奔驰车,具有功能强大的氛围灯,采用单芯片聚合了MCU(据说是51内核)、LED控制器、LIN收发器、电源管理等硬件,整体就只有指甲盖那么大,应该说是集成度非常高。背面是PWM可调式三色LED,具备三基色(蓝绿红),整体可通过LIN总线数据控制发出七彩氛围光。

此类氛围灯外观小巧结构简单,采用三线制(实际是4根线:VBAT,GND,LIN入,LIN出--因为多LIN节点并联),是目前比较热门的汽车单品。

LIN总线:汽车氛围灯控制LIN总线:汽车氛围灯控制LIN总线:汽车氛围灯控制LIN总线:汽车氛围灯控制

但是要抓取这些LIN数据并不容易,因为LIN总线协议的特殊性:单线的LIN是主从模式;全部时钟都是LIN主节点控制;LIN总线上无仲裁机制。

所以想在这个基础上控制氛围灯其实很难,表现为这么几个困难:

1.无法获取LIN控制数据;

2.无法分析LDF文件,获取时间槽;

3.无法绕过LIN主节点发送数据。

---------------------------------华丽分割线-----------------------------------------------------------

对于困难1,现在有些工具是可以做到数据显示,但是么价格就上天了,比如KVASER LIN 硬件3K起步,软件2W起步。基本上超出一般项目的开发费用。但是费用只是一方面,只要有需求再贵的工具也得买。

但是这些工具也只是显示数据而已,获取到的LIN数据具体怎么分析、怎么筛检还是要靠自己的经验。

LIN总线:汽车氛围灯控制

即使有了LIN工具,也得面临后面两个困难:分析数据、发送数据。

因为LIN总线无仲裁机制,而且已经有了一个LIN主节点,从机不能随便发送数据出来;而获取时间槽又得分析LDF文件;而LDF文件是很难靠分析数据得来的。。。基本无解。

既然无法获取LDF文件,那么暂时先随机发送部分数据吧。可惜不管任何LIN工具,都不能随意发送数据(这是LIN通信协议限制的,因为无仲裁机制)。想要随意发送数据,只能用单片机自己搭一个LIN节点,并且在LIN总线空闲时间段来发送数据。

------------------------------------------------------------------------------------------------------

困难虽然多,但是解决问题的办法肯定会更多。刚开始是采用STM32F10x+TJA1020方式,但是LIN Break老是发送数据出错,调试了很久也没有个结果。LBD中断也没法进去,后来发现采用的UART4只能当作普通串口不能当作LIN。。。白忙活了好久。后来经过多方打听,终于在某宝一个不知名的角落里面找到了看起来比较专业的LIN开发板。使用的STM32F042+TJA1020方案,DEMO源码中提供了两种校验算法,还算是比较厚道的。后面的就靠自己抓数据分析。

---------------------------------------------------------------------------------------------------------------------

20180129 ,该项目已解决,因为是客户项目不便透露具体内容。大概就是时序要求比较严格,初始化过程必须符合一定的PID SID配置协议,其他略。

蓝绿混色:(绿多蓝少 更接近绿色)

LIN总线:汽车氛围灯控制

红绿蓝混色,近似白光:(图中是LIN转串口工具)

LIN总线:汽车氛围灯控制

LIN串口工具:可以使用串口调试助手看到LIN数据,算是比较便宜的LIN工具。

LIN总线:汽车氛围灯控制

这种氛围灯可以通过LIN总线数据来控制各种颜色的强弱亮灭,也能够展现出类似呼吸灯的效果,貌似仔细发掘一下还能够通过LIN总线实现很多种不同的玩法。

当然还有许多混色方法,基本可以把调色板的颜色全部模拟一遍。但是混色结果并不完美,只有中心位置混色效果较好,因为三色LED发光源位置错开导致发光范围不完全重叠,而且侧面漏光导致仍然能够辨识出红绿蓝三色。