请教STC32G8K64在LIN通信中获取不定长从机汇报字节数的问题
大家好,我正在将我们现有的产品移植到STC32G8K64,现在遇到一个LIN通信的问题:因为从机汇报的字节数不固定,我现在需要知道STC32G8K64在LIN通信中从机发了几个字节的数据过来。但看遍了STC32G的硬件LIN和USART LIN例程,都没有找到哪里可以获取到。都只有设置一个固定的字节数去读。这样就很难知道这种不定长的从机汇报的真实字节数。请教一下,如何才能获取到从机汇报的真实字节数呢?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;
如果不用USART LIN直接用LIN的可以吗,我现在用的LIN的,因为LIN引脚关联的是USRT4,看例程,好像UART LIN只支持UART1和UART2,
其实不是引脚问题,是硬件LIN 获取不到从机汇报的字节数的问题,UART LIN应该是可以的,就用UART LIN了。 如果硬件LIN 能增加数据接收计数功能,其它地方读这个计数值就好了。这个应该可以改改就好的 QQ334911390 发表于 2023-8-17 09:54
如果不用USART LIN直接用LIN的可以吗,我现在用的LIN的,因为LIN引脚关联的是USRT4,看例程,好像UART LIN只 ...
使用独立的LIN模块,通过LOG模式也可以接收不定长数据:
应用详情参考附件例程:
乘风飞扬 发表于 2023-8-17 19:50
使用独立的LIN模块,通过LOG模式也可以接收不定长数据:
使用此例程每个帧周期要大于20ms才能检测到数据长度,
在实际应用中的帧周期为10ms,有没有办法解决此问题,
还是只能用USART LIN
页:
[1]