CN109783431B - 微处理器间i/o端口通信方法 - Google Patents

微处理器间i/o端口通信方法 Download PDF

Info

Publication number
CN109783431B
CN109783431B CN201910136683.6A CN201910136683A CN109783431B CN 109783431 B CN109783431 B CN 109783431B CN 201910136683 A CN201910136683 A CN 201910136683A CN 109783431 B CN109783431 B CN 109783431B
Authority
CN
China
Prior art keywords
data
receiving
sending
mcu
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910136683.6A
Other languages
English (en)
Other versions
CN109783431A (zh
Inventor
李佳
陈琰
赵翔
倪隆
张为
曲晓青
朱兆鹰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dongguan Leina Intelligent Technology Co ltd
Original Assignee
Dongguan Leina Intelligent Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dongguan Leina Intelligent Technology Co ltd filed Critical Dongguan Leina Intelligent Technology Co ltd
Priority to CN201910136683.6A priority Critical patent/CN109783431B/zh
Publication of CN109783431A publication Critical patent/CN109783431A/zh
Application granted granted Critical
Publication of CN109783431B publication Critical patent/CN109783431B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

本发明提供一种微处理器间I/O端口通信方法,包括:发端MCU和收端MCU均使用定时器连续中断;发端MCU定时器和收端MCU定时器设置相同速率的定时中断;发端MCU的数据发送过程包括:将数据送到发送区,等待发送;检测发送区是否有数据,如有,则由发端MCU定时器的定时中断过程控制数据发送;每n个定时中断的时间相应只发送一位数据至发端MCU的I/O端口;n≥3;收端MCU的数据接收过程包括:由收端MCU定时器的定时中断过程控制数据接收:每次定时中断检测收端MCU的I/O端口,当检测到起始位,收端MCU定时器的定时中断过程控制接收I/O端口上的每一位数据;连续接收各数据位,并合成数据,然后送到接收区。本发明可节省MCU通信资源。

Description

微处理器间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间设有一根通信线时,可实现半双工通信。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (3)

1.一种微处理器间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,一次定时中断接收部分完成。
2.如权利要求1所述的微处理器间I/O端口通信方法,其特征在于,
步骤R9中,以每n个定时中断的时间中接收计数器的中间值对应的时刻进行数据接收。
3.如权利要求1所述的微处理器间I/O端口通信方法,其特征在于,
定时器连续定时中断的速率是数据波特率的3倍或以上。
CN201910136683.6A 2019-02-25 2019-02-25 微处理器间i/o端口通信方法 Active CN109783431B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910136683.6A CN109783431B (zh) 2019-02-25 2019-02-25 微处理器间i/o端口通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910136683.6A CN109783431B (zh) 2019-02-25 2019-02-25 微处理器间i/o端口通信方法

Publications (2)

Publication Number Publication Date
CN109783431A CN109783431A (zh) 2019-05-21
CN109783431B true CN109783431B (zh) 2023-02-07

Family

ID=66486385

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910136683.6A Active CN109783431B (zh) 2019-02-25 2019-02-25 微处理器间i/o端口通信方法

Country Status (1)

Country Link
CN (1) CN109783431B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4608630A (en) * 1980-09-23 1986-08-26 Robert Bosch Gmbh Method and apparatus for transmitting data words asynchronously from one microprocessor to another in form of timing intervals
CN101471787A (zh) * 2007-12-25 2009-07-01 希姆通信息技术(上海)有限公司 基于无线通信模块的软件模拟uart的方法
CN101556567A (zh) * 2009-05-18 2009-10-14 中国华录·松下电子信息有限公司 微处理器之间的串行通信方法
CN102546843A (zh) * 2012-01-17 2012-07-04 厦门雅迅网络股份有限公司 一种通过软件模拟实现多个uart通信接口的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4608630A (en) * 1980-09-23 1986-08-26 Robert Bosch Gmbh Method and apparatus for transmitting data words asynchronously from one microprocessor to another in form of timing intervals
CN101471787A (zh) * 2007-12-25 2009-07-01 希姆通信息技术(上海)有限公司 基于无线通信模块的软件模拟uart的方法
CN101556567A (zh) * 2009-05-18 2009-10-14 中国华录·松下电子信息有限公司 微处理器之间的串行通信方法
CN102546843A (zh) * 2012-01-17 2012-07-04 厦门雅迅网络股份有限公司 一种通过软件模拟实现多个uart通信接口的方法

Also Published As

Publication number Publication date
CN109783431A (zh) 2019-05-21

Similar Documents

Publication Publication Date Title
CN101404556B (zh) 一线总线的通讯方法
CN104714920A (zh) 一种自适应波特率的信号接收方法
EP1070410B1 (en) Automatic speed detection for asynchronous serial communications
JPS6043941A (ja) 多重アクセスデ−タ通信システム
TWI408931B (zh) 資料通訊裝置、及通訊控制方法、以及程式産品
CN103986610A (zh) 通讯接口匹配方法、装置及控制器
CN102970300B (zh) 一种异步通信方法
CN104852825A (zh) 总线通讯测试方法及系统
CN104317762A (zh) 一种fpga自适应控制rs485芯片收发方向的方法
CN108259134A (zh) 一种基于afp协议的数据传输方法
CN106130856A (zh) 一种自适应波特率rs485通讯协议
CN109783431B (zh) 微处理器间i/o端口通信方法
JPS62161236A (ja) 直列デ−タ通信方式
JPH11243590A (ja) 無線通信システム
CN113792003A (zh) 单总线通信单元、系统及方法
CN106656702B (zh) 智能冗余串行总线的时序控制方法
CN110099028A (zh) 一种串口数据传输的方法及装置
CN110535621A (zh) 一种串口通讯波特率校正装置及其校正方法
CN113794538A (zh) 一种高效率的双机通讯反馈方法
CN114760222A (zh) 一种用于100base-T1 PHY芯片的链路断开检测方法及其装置
CN110505607B (zh) 基于蓝牙安全设备的通信方法、蓝牙芯片及蓝牙安全设备
CN106788947A (zh) 基于433MHz的全双工无线通信模块
US7334040B2 (en) Method of transmission between two processors of a radio communication unit
CN107346294B (zh) 基于spi协议的数据流控系统及方法
CN101345682B (zh) 智能电器串行总线的智能电器的工作方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant