找回密码
 立即注册
查看: 494|回复: 7

请教STC32G8K64在LIN通信中获取不定长从机汇报字节数的问题

[复制链接]

该用户从未签到

4

主题

8

回帖

45

积分

新手上路

积分
45
发表于 2023-8-16 22:20:23 | 显示全部楼层 |阅读模式
大家好,我正在将我们现有的产品移植到STC32G8K64,现在遇到一个LIN通信的问题:因为从机汇报的字节数不固定,我现在需要知道STC32G8K64在LIN通信中从机发了几个字节的数据过来。但看遍了STC32G的硬件LIN和USART LIN例程,都没有找到哪里可以获取到。都只有设置一个固定的字节数去读。这样就很难知道这种不定长的从机汇报的真实字节数。请教一下,如何才能获取到从机汇报的真实字节数呢?
回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:53
  • 签到天数: 140 天

    [LV.7]常住居民III

    26

    主题

    1337

    回帖

    4159

    积分

    论坛元老

    积分
    4159
    发表于 2023-8-17 09:29:45 | 显示全部楼层
    USART LIN例程里面的 RX_Cnt 就是接收字节个数,接收的内容除了数据外还包含同步场(0x55)与标识符场(ID)内容。

    1. typedef struct
    2. {
    3.         u8        id;                                //串口号
    4.         u8        TX_read;                //发送读指针
    5.         u8        TX_write;                //发送写指针
    6.         u8        B_TX_busy;                //忙标志
    7.         u8         RX_Cnt;                        //接收字节计数
    8.         u8        RX_TimeOut;                //接收超时
    9.         u8        B_RX_OK;                //接收块完成
    10. } COMx_Define;
    复制代码


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    8

    回帖

    45

    积分

    新手上路

    积分
    45
     楼主| 发表于 2023-8-17 09:54:03 | 显示全部楼层
    如果不用USART LIN直接用LIN的可以吗,我现在用的LIN的,因为LIN引脚关联的是USRT4,看例程,好像UART LIN只支持UART1和UART2,
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9428

    回帖

    1万

    积分

    管理员

    积分
    14003
    发表于 2023-8-17 10:14:05 | 显示全部楼层
    1.png

    2.png

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    8

    回帖

    45

    积分

    新手上路

    积分
    45
     楼主| 发表于 2023-8-17 10:52:11 | 显示全部楼层
    其实不是引脚问题,是硬件LIN 获取不到从机汇报的字节数的问题,UART LIN应该是可以的,就用UART LIN了。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    8

    回帖

    45

    积分

    新手上路

    积分
    45
     楼主| 发表于 2023-8-17 10:54:45 | 显示全部楼层
    如果硬件LIN 能增加数据接收计数功能,其它地方读这个计数值就好了。这个应该可以改改就好的
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:53
  • 签到天数: 140 天

    [LV.7]常住居民III

    26

    主题

    1337

    回帖

    4159

    积分

    论坛元老

    积分
    4159
    发表于 2023-8-17 19:50:42 | 显示全部楼层
    QQ334911390 发表于 2023-8-17 09:54
    如果不用USART LIN直接用LIN的可以吗,我现在用的LIN的,因为LIN引脚关联的是USRT4,看例程,好像UART LIN只 ...

    使用独立的LIN模块,通过LOG模式也可以接收不定长数据:
    1.png

    应用详情参考附件例程:

    LIN总线主从收发测试-LOG Mode.zip (39.71 KB, 下载次数: 28)


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    回帖

    51

    积分

    注册会员

    积分
    51
    发表于 2024-3-4 17:05:21 | 显示全部楼层
    乘风飞扬 发表于 2023-8-17 19:50
    使用独立的LIN模块,通过LOG模式也可以接收不定长数据:

    20ms时

    20ms时

    10ms时

    10ms时

    使用此例程每个帧周期要大于20ms才能检测到数据长度,
    在实际应用中的帧周期为10ms,有没有办法解决此问题,
    还是只能用USART LIN

    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-15 06:06 , Processed in 0.067237 second(s), 59 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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