微处理器间I/O端口通信方法与流程

文档序号:17721278发布日期:2019-05-22 02:10阅读:450来源:国知局
微处理器间I/O端口通信方法与流程

本发明涉及微处理器与微处理器之间的通信方法,尤其是一种微处理器间i/o端口通信方法。



背景技术:

单片机与单片机之间的通信,一般使用片上的通信资源,比如片上的串行口uart,i2c等,但是,经常这些通信资源被其他设备使用,而片上的通用i/o端口经常会有多余。



技术实现要素:

本发明的目的在于克服现有技术中存在的不足,提供一种微处理器间i/o端口通信方法,能够实现微处理器之间基于i/o端口的通信。本发明采用的技术方案是:

一种微处理器间i/o端口通信方法,包括:

发端mcu和收端mcu均使用定时器连续中断,数据发送和接收过程都在定时器中断过程中完成;发端mcu定时器和收端mcu定时器设置相同速率的定时中断;

发端mcu的数据发送过程包括:

1)将数据送到发送区,等待发送;

2)检测发送区是否有数据,如有,则由发端mcu定时器的定时中断过程控制数据发送;每n个定时中断的时间相应只发送一位数据至发端mcu的i/o端口,先发送起始位,然后依次发送载荷数据的每一位,最后发送停止位;n≥3;

收端mcu的数据接收过程包括:

1)由收端mcu定时器的定时中断过程控制数据接收:每次定时中断检测收端mcu的i/o端口,当检测到起始位,收端mcu定时器的定时中断过程控制接收i/o端口上的每一位数据;

2)连续接收各数据位,并合成数据,然后送到接收区。

更优地,收端mcu在第一次检测到起始位后,下一次定时中断再检测并确认起始位后,才开始接收后续的数据。

进一步地,发端mcu定时器的定时中断过程控制数据发送,具体包括:

步骤s1,发端mcu的每一次定时中断,发送计数器累加1;

步骤s2,判断数据发送是否结束,若是则进行步骤s3,若否则进行步骤s6;

步骤s3,检查发送区是否有数据,若有则进行步骤s4,若否则进行步骤s7;

步骤s4,发送计数器置0,重新计数;

步骤s5,发送起始位,转步骤s7;

步骤s6,按发送计数器的计数发送数据下一位;每n个定时中断的时间相应发送一位数据;

步骤s7,一次定时中断完成。

进一步地,收端mcu定时器的定时中断过程控制数据接收,具体包括:

步骤r1,收端mcu的每一次定时中断,接收计数器累加1;

步骤r2,判断一帧数据是否接收结束,若是则进行步骤r3,若否则进行步骤r6;

步骤r3,判断是否检测到起始位,若是则进行步骤r4,若否则进行步骤r11;

步骤r4,接收计数器置0,重新计数;

步骤r5,准备接收数据;转步骤r11;

步骤r6,判断接收计数器计数是否为1,若是则进行步骤r7,若否则进行步骤r9;

步骤r7,判断是否检测到起始位,若是则进行步骤r11,若否则进行步骤r8;

步骤r8,认定无数据,数据接收结束,转步骤r11;

步骤r9,按接收计数器的计数接收数据下一位;每n个定时中断的时间相应接收一位数据;

步骤r10,将接收到的每位数据发送到接收区;

步骤r11,一次定时中断完成。

更进一步地,步骤r9中,以每n个定时中断的时间中接收计数器的中间值对应的时刻进行数据接收。

本发明的优点在于:

1)使用mcu上的通用i/o端口通信,节省了通信资源。

2)对于多组i/o端口通信可以使用同一个定时器。

3)可实现全双工,半双工等通信方式以及可以自定义方式通信。

附图说明

图1为本发明的微处理器间i/o端口通信示意图。

图2为本发明的软件流程示意图。

图3为本发明的定时器中断流程中数据发送示意图。

图4为本发明的定时器中断流程中数据接收示意图。

图5为本发明的定时中断控制数据发送与接收示意图。

具体实施方式

下面结合具体附图和实施例对本发明作进一步说明。

如图1所示,本发明提出的微处理器间i/o端口通信方法,可以使用一根通信线实现半双工通信,也可以使用两根通信线实现全双工通信等;

发端mcu和收端mcu均使用定时器连续中断,以产生一个稳定的波特率;数据发送和接收过程都在定时器中断过程中完成;为了保证通信发送和接收的正确,发端mcu定时器和收端mcu定时器设置相同速率的定时中断;

为了保证通信接收的正确,定时器连续定时中断的速率是数据波特率的3倍或以上;以3倍为例,发端mcu每3次定时中断只发送一位数据,收端mcu每3次定时中断只接收一位数据;所述数据包括起始位、载荷数据、停止位;

发端mcu的软件控制数据发送过程:

1)将数据送到发送区,等待发送;发送区是发端mcu中内存的一个区域;

2)检测发送区是否有数据,如有,则由发端mcu定时器的定时中断过程控制数据发送;每n个定时中断的时间相应只发送一位数据至发端mcu的i/o端口,先发送起始位,然后依次发送载荷数据的每一位,最后发送停止位;n≥3,以保证通信接收正确;

以8比特载荷数据为例,加上起始位、停止位,所要发送的一帧数据共有10比特;以上起始位、载荷数据的每一位、停止位按顺序出现在发端mcu与收端mcu的i/o端口之间通信线上;

收端mcu的软件控制数据接收过程:

1)由收端mcu定时器的定时中断过程控制数据接收:每次定时中断检测收端mcu的i/o端口;当检测到起始位,收端mcu定时器的定时中断过程控制接收i/o端口上的每一位数据;

当n≥3时,可以在第一次检测到起始位后,下一次定时中断再检测并确认起始位后,才开始接收后续的数据;起始位可以约定是低电平0;

例如n=3时,发端mcu发送的一帧数据,在前3个定时中断对应的那段时间中,始终将起始位放在发端i/o端口,通信线上也连续在3个定时中断的时间中出现起始位;收端mcu第一次检测到起始位后,下一次定时中断再去检测并确认起始位,才正式开始接收后续的各位数据;

2)连续接收各数据位,并合成数据,然后送到接收区。

以下详细说明发端mcu定时器的定时中断过程控制数据发送,以及收端mcu定时器的定时中断过程控制数据接收;

如图3所示,发端mcu定时器的定时中断过程控制数据发送,具体包括:

步骤s1,发端mcu的每一次定时中断,发送计数器累加1;

发送一帧数据需要连续多次定时中断才能完成;

步骤s2,判断数据发送是否结束,若是则进行步骤s3,若否则进行步骤s6;

此步骤主要判断一帧数据是否已经发送完,若发完了,则进行新的一帧数据发送;

步骤s3,检查发送区是否有数据,若有则进行步骤s4,若否则进行步骤s7;

步骤s4,发送计数器置0,重新计数;

步骤s5,发送起始位,转步骤s7;

步骤s6,按发送计数器的计数发送数据下一位;每n个定时中断的时间相应发送一位数据;

以每3个定时中断的时间相应发送一位数据为例,发送计时器分别为3、6、9、12、15、18、21、24、27依次发送8位载荷数据及停止位;具体如图5所示;

步骤s7,一次定时中断完成。

经过连续的多次定时中断,数据全部发送;

如图4所示,收端mcu定时器的定时中断过程控制数据接收,具体包括:

步骤r1,收端mcu的每一次定时中断,接收计数器累加1;

步骤r2,判断一帧数据是否接收结束,若是则进行步骤r3,若否则进行步骤r6;

步骤r3,判断是否检测到起始位,若是则进行步骤r4,若否则进行步骤r11;

步骤r4,接收计数器置0,重新计数;

步骤r5,准备接收数据;转步骤r11;

步骤r6,判断接收计数器计数是否为1,若是则进行步骤r7,若否则进行步骤r9;

步骤r7,判断是否检测到起始位,若是则进行步骤r11,若否则进行步骤r8;

步骤r8,认定无数据,数据接收结束,转步骤r11;

步骤r9,按接收计数器的计数接收数据下一位;每n个定时中断的时间相应接收一位数据;

优选地,以每n个定时中断的时间中接收计数器的中间值对应的时刻进行数据接收,以保证接收数据的正确性;

以3个定时中断的时间发送、接收一位数据为例:接收计数器分别为4、7、10、13、16、19、22、25、28接收8位载荷数据及停止位;例如,接收计数器为4时,对于收端mcu,接收bit1位的载荷数据;

步骤r10,将接收到的每位数据发送到接收区;

步骤r11,一次定时中断完成。

经过连续的多次定时中断,数据接收完成;

上述通信方法,当两个mcu间设有两根通信线时,可实现全双工通信,当两个mcu间设有一根通信线时,可实现半双工通信。

最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1