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

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

[复制链接]

4

主题

8

回帖

45

积分

新手上路

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 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,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 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 能增加数据接收计数功能,其它地方读这个计数值就好了。这个应该可以改改就好的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

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

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

应用详情参考附件例程:

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


回复 支持 反对

使用道具 举报 送花

1

主题

2

回帖

57

积分

注册会员

积分
57
发表于 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, 2025-5-2 02:43 , Processed in 0.279427 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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