请教如何处理:在一单片机内多路LIN从节点的通讯冲突?
STM32F091有三路LIN。每一路均作为LIN从机节点。也就是在同一单片机内有三路作为LIN从机进行通讯,当一路LIN从节点对主机发过来的数据响应(也就是发送数据)时,同一单片机内的另一路LIN也收到主机的数据,从而不能及时响应此路数据。也就是说作为LIN从节点,单片机只能响应一路,而不能同时响应两路或两路以上的LIN数据 。请教这种情况,我该如何处理?如何避免此冲突? STM32F091 做三路从机时,必须保证每一路独立响应其主机调度的帧,并在软件和硬件上明确屏蔽不该参与响应的通道。核心在于帧调度 + 硬件隔离 + 软件过滤,保障一次仅一路 LIN 从机在总线上处理数据,彻底避免互相“抢话”引发的冲突。 hbzjt2011 发表于 2025-6-20 18:33STM32F091 做三路从机时,必须保证每一路独立响应其主机调度的帧,并在软件和硬件上明确屏蔽不该参与响应的 ...
谢谢回复。由于单片机在三路中都是作为从机运行。作为从机,可保证同一时间仅响应一路,但这样就出现以下情况:响应一路时,就响应不了其他路了。其他路的主机收不到从机的响应就会执行相关动作以致出错。 mountain 发表于 2025-6-20 18:56
谢谢回复。由于单片机在三路中都是作为从机运行。作为从机,可保证同一时间仅响应一路,但这样就出现以下 ...
你的帧调度是不是有问题呢?建议上传下相关的代码或程序架构,脱离具体的代码就只能泛泛而谈 dirtwillfly 发表于 2025-6-21 10:24
你的帧调度是不是有问题呢?建议上传下相关的代码或程序架构,脱离具体的代码就只能泛泛而谈 ...
谢谢回复。
由于是从节点,不涉及帧调度,都是被动响应性质。任一单路发送接受都正常。只要不是两路或以上LIN同时接通都正常。但两路或以上一接通就出错。
总体框架都是在串口收到帧开始中断且是需响应的指令后在中断函数中立即发送相关字节。 问题是由于都是从节点,当单片机正在响应(发送)一路数据时,如此时另一路也收到帧开始中断且需立即响应的指令,那此路就向应不过来以致此路的主机认为从节点出错而作出错误的动作。
讨论 具体实现 “ 请教如何处理:在一单片机内多路LIN从节点的通讯冲突?”https://bbs.21ic.com/icview-3463508-1-1.html 方向是明朗的,砥砺前行,你是最靓的仔,
mountain 发表于 2025-6-21 10:47
谢谢回复。
由于是从节点,不涉及帧调度,都是被动响应性质。任一单路发送接受都正常。只要不是两路或以 ...
把业务逻辑放在中断里,对其他中断的响应肯定会有影响的。
建议:
1、分析中断里的业务逻辑的执行时间
2、看能否把这部分逻辑分开,中断里只负责接受,逻辑处理和发送放中断外的逻辑里。或者中断里只做紧急事项的处理,其他逻辑放到中断外。
页:
[1]