[KungFu8位 MCU] KF8A100ENG LIN通信如何实现波特率自动检测?

[复制链接]
 楼主| lingjun1982 发表于 2021-11-5 12:04 | 显示全部楼层 |阅读模式
我在使用KF8A100ENG进行开发,在LIN通信的波特率自动检测中遇到一个问题,望指教!

如何判断LIN总线上的通信速率跟MCU配置的速率不匹配呢?
当RCIF为1时,进入接收中断后,判断FRER为1说明有帧错误,且RXSDR读出的数据不为0时,
可否认为是通信速率不匹配呢?代码如下:

Lin_buf = RXSDR;  // 清零 RXIF
if((FRER)&&(Lin_buf == 0))//检测到帧错误-没有在规定的时间内检测到停止位,且接收到的数据全是0。
{
        flag = 0;//就判断为13位低电平,为Lin间隔符
}
else if((FRER)&&(Lin_buf != 0)) //检测到帧错误-且接收到的数据不是0
{
        ABRDEN = 1;//进行自动波特率检测
        flag = 0;
}

 楼主| lingjun1982 发表于 2021-11-5 13:06 | 显示全部楼层
或者有没有KungFu官方的Demo code?
chenqianqian 发表于 2021-11-6 15:33 来自手机 | 显示全部楼层
这个还没有好好研究过
huquanz711 发表于 2021-11-7 18:49 来自手机 | 显示全部楼层
可以借鉴一下串口波特率自适应算法
guijial511 发表于 2021-11-9 08:20 来自手机 | 显示全部楼层
没有研究过,楼主可以参考串口的波特率自适应做法。
sparrow054 发表于 2021-11-9 14:59 | 显示全部楼层
这个还能自动检测么?
树上的小鸟 发表于 2022-2-7 18:04 | 显示全部楼层
自动波特率,直接将自动波特率的配置位使能。当收到lin的同步场的时候,会自动设置后续数据接收的波特率。
具体可以参考规格书的自动波特率检测章节。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

29

帖子

1

粉丝
快速回复 返回顶部 返回列表