我在使用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;
}
|