System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及一种基于状态机的多设备跨周期的串口复用方法,属于嵌入式设备通信。
技术介绍
1、嵌入式系统的处理器mcu使用rs422异步串口实现与上位机和地检设备的通信,三者组成一个以mcu为中心的星型拓扑。mcu在与上位机的通信中是被动方,收到上位机的同步信号后准备要发送的数据,收到上位机的取数指令后开始发送。此外,mcu还要接收上位机的其他指令,长度不固定。mcu与地检设备的通信是单向的,仅由mcu向地检发送,地检不向mcu发送。mcu只有一路串口资源,需要上位机和地检复用,软件通过一个复用选通寄存器mux_reg来设置通信对象。
2、mcu上软件的控制周期是t1=400us,与上位机的通信周期是t2=125ms,与地检设备的通信周期是t3=10ms。从通信周期上可知,mcu向上位机发送和向地检发送的时间可能冲突。mcu的串口发送fifo大小是16字节,接收fifo是8字节,mcu发送和接收的长度都可能比fifo大,因此要能满足跨周期收发的情况。串口波特率是fbaud=115.2kbps,传输格式为1位起始位、8位数据位、1位奇偶校验和1位停止位,由此可知单字节数据的传输时间约为95.5us,在一个控制周期t1间隔内,只能完整地传输4字节。需要解决的问题包括:
3、(1)软件每个周期接收到的数据为4字节,且接收fifo的大小是8字节,均比应接收的数据少,软件需要多个周期才能把数据接收完,且每个周期都要读fifo避免溢出,即需要在跨周期接收的情况下保证数据接收完整;
4、(2)mcu向上位机
技术实现思路
1、本专利技术解决的技术问题是:针对目前现有技术中,跨周期接收数据困难、上位机及地检设备数据发送时间冲突的问题,提出了一种基于状态机的多设备跨周期的串口复用方法。
2、本专利技术解决上述技术问题是通过如下技术方案予以实现的:
3、一种基于状态机的多设备跨周期的串口复用方法,包括:
4、预设控制周期及各段控制过程对应的状态机工作模式;
5、于第一段控制过程中通过接收fifo判断结果调整状态机工作模式,当所有状态机工作模式完成遍历后结束第一段控制过程;
6、于第二段控制过程中进行取数指令判断,根据判断结果改变地检状态机标志并进行状态机工作模式调整;
7、设置上位机后写入数据并发送,数据发送完成后结束第二段控制过程;
8、于第三段控制过程中通过发送fifo判断结果调整状态机工作模式;
9、设置地检设备后写入数据并发送,数据发送完成后结束第三段控制过程。
10、所述控制过程包括接收过程、向上位机发送过程、向地检设备发送过程;
11、接收过程对应的状态机工作模式包括空闲模式、接收模式、等待模式、完成模式;
12、向上位机发送过程对应的状态机工作模式包括空闲模式、准备模式、发送模式;
13、向地检设备发送过程对应的状态机工作模式包括空闲模式、准备模式、发送模式;
14、接收过程、向上位机发送过程、向地检设备发送过程为递进流程,各段控制过程对应的状态机工作模式的调整为递进形式,当任一段控制过程的状态机工作模式完成遍历后,当前控制过程重置同时开始下一段控制过程。
15、所述接收过程具体状态机工作模式调整方法如下:
16、默认状态机处于空闲模式,在空闲模式下判断接收fifo是否为空,当不为空时,进入接收模式,否则停留在空闲模式下等待接收fifo;
17、于接收模式下判断接收fifo是否为空,若不为空,将fifo读空并将数据保存于rxbuf数组中,等待计数cntrcv清零,并维持状态机工作模式于接收模式下;若为空,进入等待模式;
18、于等待模式下判断接收fifo是否为空,若不为空,则调整状态机工作模式回复至接收模式;否则将计数cntrcv加1并判断,若计数cntrcv不大于等待阈值lmt,则维持状态机工作模式于等待模式下;若计数cntrcv大于等待阈值lmt,则调整状态机工作模式为完成模式;
19、在完成模式中将计数cntrcv清零,并回复至空闲模式,遍历完成第一段控制过程。
20、所述等待阈值lmt根据状态机的通信时序、运行时序确定;
21、完成模式下,将计数cntrcv清零后进行已接收的数据的正确性判断,无论判断结果是否正确,均将状态机工作模式回复至空闲模式。
22、所述向上位机发送过程进行状态机工作模式调整并发送数据的具体方法为:
23、默认状态机处于空闲模式,在空闲模式下判断是否接收到取数指令,当接收到时,进入准备模式;否则停留在空闲模式下等待接收取数指令;
24、于准备模式下置地检状态机的flggnd标志为false,将地检状态机设置为空闲,并清空发送缓冲区进入发送模式;
25、于发送模式下,选通寄存器并设置为选择上位机,将接收数据写入发送fifo,使能发送;发送过程中记录已发送数据长度,进行长度判断,若已发送数据长度小于应发送长度,则维持发送模式,直至已发送数据长度不小于应发送长度为之,调整状态机工作模式回复至空闲模式,完成第二段控制过程。
26、所述向上位机发送过程的发送周期根据取数指令确定,准备模式下通过调整地检状态机的flggnd标志及地检状态机工作模式以打断地检状态机发送,并使向上位机发送过程进入下一工作模式。
27、所述向地检设备发送过程进行状态机工作模式调整并发送数据的具体方法为:
28、默认状态机处于空闲模式,在空闲模式下判断发送fifo是否空,若为空,则调整状态机工作模式进入准备模式;
29、否则将计数gndcnt清零,停止本次发送;
30、于准备模式中,再次判断发送fifo是否空,若为空,则当前数据未发送至上位机,进入发送模式;否则当前数据已在发送模式中,调整状态机工作模式进入空闲模式;
31、于发送模式下,选通寄存器设置为选择地检设备,将数据写入发送fifo,使能发送,调整状态机工作模式回复至空闲模式,完成第三段控制过程。
32、接收过程、向上位机发送过程、向地检设备发送过程组成的控制过程总控制周期为t1;向上位机发送过程的控制周期为t2,根据取数指令确定;向地检设备发送过程的控制周期为t3,在每个控制周期t1内为计数gndcnt加1,当gndcnt数值达到时,向地检设备发送一次数据。
33、于向上位机发送过程的准备模式下通过写寄存器清空发送缓冲区以禁止或大端正在进行中的数据向地检设备发送过程;于向地检设备发送过程的空闲状态下判断发送fifo是否为空,根据判断结果避免本文档来自技高网...
【技术保护点】
1.一种基于状态机的多设备跨周期的串口复用方法,其特征在于包括:
2.根据权利要求1所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
3.根据权利要求1所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
4.根据权利要求3所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
5.根据权利要求3所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
6.根据权利要求1所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
7.根据权利要求1所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
8.根据权利要求7所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
9.根据权利要求1所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
10.根据权利要求9所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
【技术特征摘要】
1.一种基于状态机的多设备跨周期的串口复用方法,其特征在于包括:
2.根据权利要求1所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
3.根据权利要求1所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
4.根据权利要求3所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
5.根据权利要求3所述的一种基于状态机的多设备跨周期的串口复用方法,其特征在于:
6...
【专利技术属性】
技术研发人员:李永祺,周大宁,于海心,钟睿明,许凡,王裙,张激扬,
申请(专利权)人:北京控制工程研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。