找回密码
 立即注册
查看: 451|回复: 8

请教LIN通信问题 | 已解决

[复制链接]

该用户从未签到

4

主题

8

回帖

45

积分

新手上路

积分
45
发表于 2023-8-17 11:02:38 | 显示全部楼层 |阅读模式
请教一下:
1.UART LIN在接收LIN数据时是否会检测间隔场时间(>=13位显性电平),以判断是否收到帧头;(如果不检测显性电平间隔场时间,一直收到0x00,0x55,是否整个通信和协议就会乱掉)。
2.使用一个UART LIN 初始化时 设为主模式,是否就只能发,设为从就只能收;如果又想发,又想收,是否只能用两个UART LIN(或一个硬件LIN,一个UARTLIN),一个管发,一个管收?或者一个UART LIN 发之前初始化为主,想收了再初始化为从,这样感觉逻辑和处理上有问题。
回复 送花

使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 132 天

    [LV.7]常住居民III

    26

    主题

    1298

    回帖

    4049

    积分

    论坛元老

    积分
    4049
    发表于 2023-8-17 13:42:35 | 显示全部楼层
    1.png
    1. USART  LIN会检测间隔场,也会检测是否收到报头(HDRDET)。
    2. LIN不管主机模式还是从机模式都是可以收/发的,参考我们的例程。
    需要交互通信时,正常是由主机发送帧头,从机收到帧头后判断是自己需要回复的ID,就可以回复数据,与主机发送的帧头合并成一个完整的帧。
    回复 支持 1 反对 0 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    8

    回帖

    45

    积分

    新手上路

    积分
    45
     楼主| 发表于 2023-8-17 16:42:53 | 显示全部楼层
    回复 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    回帖

    31

    积分

    新手上路

    积分
    31
    发表于 2024-3-2 16:45:58 | 显示全部楼层
    请问一下,这是哪个系列的单片机的规格书,我在STC15系列的规格书没有找到这个寄存器
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9311

    回帖

    1万

    积分

    管理员

    积分
    13872
    发表于 2024-3-2 16:48:30 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    回帖

    31

    积分

    新手上路

    积分
    31
    发表于 2024-3-2 18:09:29 | 显示全部楼层
    只有32G系列的才有这个寄存器吗?其他的像8H 系列的有这个寄存器吗
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9311

    回帖

    1万

    积分

    管理员

    积分
    13872
    发表于 2024-3-2 19:39:02 | 显示全部楼层
    要看规格书,不是啥新功能,其他老芯片都有
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    回帖

    31

    积分

    新手上路

    积分
    31
    发表于 2024-3-8 21:41:01 | 显示全部楼层
    USART  LIN会检测间隔场, 为什么不能进入串口中断?需要软件检测吗?
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    回帖

    31

    积分

    新手上路

    积分
    31
    发表于 2024-3-8 21:48:11 | 显示全部楼层
    void Uart2_Isr(void) interrupt 8
    {
            if(USART2CR5&0x80)   //BRKDET
            {   
                    USART2CR5&= ~0x80;
    //                DRL_EN=ON;
            }
    }这个中断进不了,在主程序循环检测       
    if(USART2CR5&0x80)   //BRKDET
            {   
                    USART2CR5&= ~0x80;
    //                DRL_EN=ON;
            }一样进不了,好像一直就没有检测到LIN间隔场标志,示波器是有间隔场的
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-4 21:59 , Processed in 0.066609 second(s), 63 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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