QQ334911390 发表于 2023-8-16 22:20:23

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

大家好,我正在将我们现有的产品移植到STC32G8K64,现在遇到一个LIN通信的问题:因为从机汇报的字节数不固定,我现在需要知道STC32G8K64在LIN通信中从机发了几个字节的数据过来。但看遍了STC32G的硬件LIN和USART LIN例程,都没有找到哪里可以获取到。都只有设置一个固定的字节数去读。这样就很难知道这种不定长的从机汇报的真实字节数。请教一下,如何才能获取到从机汇报的真实字节数呢?

乘风飞扬 发表于 2023-8-17 09:29:45

USART LIN例程里面的 RX_Cnt 就是接收字节个数,接收的内容除了数据外还包含同步场(0x55)与标识符场(ID)内容。

typedef struct
{
        u8        id;                                //串口号

        u8        TX_read;                //发送读指针
        u8        TX_write;                //发送写指针
        u8        B_TX_busy;                //忙标志

        u8         RX_Cnt;                        //接收字节计数
        u8        RX_TimeOut;                //接收超时
        u8        B_RX_OK;                //接收块完成
} COMx_Define;

QQ334911390 发表于 2023-8-17 09:54:03

如果不用USART LIN直接用LIN的可以吗,我现在用的LIN的,因为LIN引脚关联的是USRT4,看例程,好像UART LIN只支持UART1和UART2,

神农鼎 发表于 2023-8-17 10:14:05





QQ334911390 发表于 2023-8-17 10:52:11

其实不是引脚问题,是硬件LIN 获取不到从机汇报的字节数的问题,UART LIN应该是可以的,就用UART LIN了。

QQ334911390 发表于 2023-8-17 10:54:45

如果硬件LIN 能增加数据接收计数功能,其它地方读这个计数值就好了。这个应该可以改改就好的

乘风飞扬 发表于 2023-8-17 19:50:42

QQ334911390 发表于 2023-8-17 09:54
如果不用USART LIN直接用LIN的可以吗,我现在用的LIN的,因为LIN引脚关联的是USRT4,看例程,好像UART LIN只 ...

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


应用详情参考附件例程:




rootdu 发表于 2024-3-4 17:05:21

乘风飞扬 发表于 2023-8-17 19:50
使用独立的LIN模块,通过LOG模式也可以接收不定长数据:





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

页: [1]
查看完整版本: 请教STC32G8K64在LIN通信中获取不定长从机汇报字节数的问题