CN106126467B - 基于Local Bus总线的多路RS422串口通信方法 - Google Patents

基于Local Bus总线的多路RS422串口通信方法 Download PDF

Info

Publication number
CN106126467B
CN106126467B CN201610544401.2A CN201610544401A CN106126467B CN 106126467 B CN106126467 B CN 106126467B CN 201610544401 A CN201610544401 A CN 201610544401A CN 106126467 B CN106126467 B CN 106126467B
Authority
CN
China
Prior art keywords
bus
multichannel
interrupt
chip
channel
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
CN201610544401.2A
Other languages
English (en)
Other versions
CN106126467A (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.)
Hunan Hanbo Wei Electronic Technology Ltd Co
Original Assignee
Hunan Hanbo Wei Electronic Technology Ltd Co
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 Hunan Hanbo Wei Electronic Technology Ltd Co filed Critical Hunan Hanbo Wei Electronic Technology Ltd Co
Priority to CN201610544401.2A priority Critical patent/CN106126467B/zh
Publication of CN106126467A publication Critical patent/CN106126467A/zh
Application granted granted Critical
Publication of CN106126467B publication Critical patent/CN106126467B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4286Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种基于Local Bus总线的多路RS422串口通信方法,该方法基于多路RS422串口通信装置以及实时操作***VxWorks实现,所述方法具体包括:调用操作***的标准API函数来实现与上层应用的相互通信;设置Local Bus总线;设置多路RS422驱动程序;采用中断服务触发相应通道的RS422转换芯片进行数据通信。本发明能够便捷地实现实时嵌入式***中的多路串口通信任务,在降低总线资源消耗的基础上,提高***开发与调试效率。

Description

基于Local Bus总线的多路RS422串口通信方法
技术领域
本发明涉及实时嵌入式通信技术领域,特别是一种串口通信方法。
背景技术
串口通信具有传输距离远、传输稳定、简单实用等特点,已被广泛应用于工业控制、数据采集、网络通信等领域。在这些应用领域中,有的***往往需要实现多路串口通信来实现不同的控制和信息采集等不同的需求,例如将某一路串口用于采集数据,而另外一路串口用于发送控制命令等。另外,在基于串口的通信设备研发过程中,经常需要监视通信双方的数据收发交互情况,特别是在军用控制***中,对于数据收发的准确性和实时性有着严格的要求,因此对于嵌入式实时***还需要知道通信双方收发数据的准确时间,往往需要精确到毫秒甚至微秒级别。
在目前的嵌入式***开发中,考虑到成本等各方面的因素,CPU本身提供了对于串口通信端口的支持,一般是支持一到二路串口的支持。因此,在需要多于两路串口的应用中,必须要在硬件中增加相关通信芯片来扩展串口。在CPU与扩展芯片之间的连接方式有基于GPIO的连接方式以及基于PCI或PCIe总线连接方式;其中,通过基于GPIO的连接方式去实现CPU与扩展芯片之间连接不仅存在软件工作量很大,而且在实时性方面要实现起来有难度;基于PCI或PCIe总线连接方式,则需要消耗PCI或PCIe总线资源。
发明内容
本发明需要解决的技术问题是提供一种多路串口通信方法,能够便捷地实现实时嵌入式***中的多路串口通信任务,在降低总线资源消耗的基础上,提高***开发与调试效率。
为解决上述技术问题,本发明所采取的技术方案如下。
基于Local Bus总线的多路RS422串口通信方法, 该方法基于多路RS422串口通信装置以及实时操作***VxWorks实现,多路RS422串口通信装置包括CPU最小***、UART芯片、晶振电路以及N个RS422转换芯片,所述UART芯片与CPU最小***之间通过Local Bus总线连接,UART芯片与RS422转换芯片之间通过差分信号线连接;晶振电路与UART芯片连接;
所述方法具体包括以下步骤:
A.CPU最小***调用操作***所规定的标准用户接口层API函数与上层应用相互通信;
B.设置UART芯片与CPU最小***之间的Local Bus总线;
C.设置多路RS422驱动程序;
D.采用中断服务触发相应通道的RS422转换芯片进行数据通信。
上述基于Local Bus总线的多路RS422串口通信方法,步骤B中的Local Bus总线包括控制总线、地址总线和数据总线,控制总线包括LCS片选信号线、INT中断控制线、ER/W读写使能信号以及RST复位信号线。
上述基于Local Bus总线的多路RS422串口通信方法,步骤C具体包括以下步骤:
C1.初始化UART芯片参数;
C2.设置每个通道设备的中断连接;
C3.RS422驱动函数注册;
C4.在VxWorks操作***中为每个通道创建相应设备并与相应的RS422转换芯片关联。
上述基于Local Bus总线的多路RS422串口通信方法,步骤C1中所述的UART芯片参数包括通信模式、中断号、波特率以及晶振参数。
上述基于Local Bus总线的多路RS422串口通信方法,步骤C3中所述的RS422驱动函数包括Open,Close,Read,Write和Ioctrl函数。
上述基于Local Bus总线的多路RS422串口通信方法,步骤C4具体包括以下步骤:
C41.为每个通道设置不同的中断号;
C42.关联中断号与中断函数;
C43.调用RS422驱动函数注册到操作***中;
C44.与相应的RS422转换芯片关联。
上述基于Local Bus总线的多路RS422串口通信方法,步骤D所述中断服务具体包括以下步骤:
D1.获取引发中断的通道号i;
D2.关闭i通道中断;
D3.读取UART芯片i通道的IIS状态寄存器,获取UART芯片中的中断类型;
D4.根据中断类型进行相应数据处理;
D5.数据处理完成后,打开i通道中断。
上述基于Local Bus总线的多路RS422串口通信方法,步骤D4包括以下内容:
D41.判断中断信号是否异常,如中断信号异常,进行异常处理;如中断信号正常,则进行步骤D42;
D42.CPU最小***指令判断是否接收有效中断,如是,进行数据接收;如否,则进行步骤D43;
D43. CPU最小***指令判断是否发送有效中断,如是,进行数据发送;如否,打开i通道中断。
由于采用了以上技术方案,本发明所取得技术进步如下。
本发明能够便捷地实现实时嵌入式***中的多路串口通信任务,具有易于扩展、实时性强、软件开发工作量大幅减少的优点,能够满足***多层次需求。另外,本发明的应用,能够在降低总线资源消耗的基础上,提高***的开发与调试效率。
附图说明
图1为本发明的整体流程图;
图2为本发明所述多路RS422驱动设置的流程图;
图3为本发明所述中断服务程序的流程图。
具体实施方式
下面将结合附图和具体实施例对本发明进行进一步详细说明。
一种基于Local Bus总线的多路RS422串口通信方法, 该方法基于多路RS422串口通信装置以及实时操作***VxWorks实现。
本发明中的多路RS422串口通信装置包括CPU最小***、UART芯片、晶振电路以及N个RS422转换芯片, UART芯片与CPU最小***之间通过Local Bus总线连接,UART芯片与RS422转换芯片之间通过差分信号线连接;晶振电路与UART芯片连接。
CPU最小***即Local Bus控制器,用于控制Local Bus总线;本实施例中优选CS51单片机。UART 芯片完成数据收发的串、并转换。RS422转换芯片选择全双工高速RS422 通信接口转换芯片,具有输出短路保护功能以及接收失效保护功能,通过减少由长线引起的内部信号干扰来增加可靠通信的距离与速度。晶振电路用于为UART 芯片提供数据传送的时钟,
Local Bus总线也称为CPU总线, 根据高低位地址线序的差异,又可分为MotorolaCPU总线和Intel CPU总线。由于Local Bus总线是直接从60X总线上通过桥片分出来的,所以它和60X总线是同步同频的,进行数据数据读写时与60X总线共享带宽,不需要内核提供额外的处理。
Local Bus总线包括三部分控制总线、地址总线和数据总线。
控制总线,包括LCS片选信号线、INT中断控制线、ER/W读写使能信号以及RST复位信号线。LCS片选信号线用于选择相应的UART芯片;由于多路RS422串口通信装置设置了N个RS-422通道,则需要有N条不同的LCS片选信号线来连接CPU最小***和UART芯片,因此每一条LCS片选信号线对应一个RS-422通道的选择;当关联某通道的片选信号为低电平时表示该通道被选中,即CPU最小***可以对其进行读写操作。INT中断信号线用于在UART芯片中某通道的接收数据缓冲器接收到有效数据或者发送缓冲器满或其它异常事件产生时产生中断事件,告知CPU最小***,然后由CPU最小***产生中断响应;由于N个RS-422通道也需要有N条不同的中断信号线,不同的中断信号表示不同的UART芯片通道产生中断事件。ER/W读写使能信号,低电平有效,读写使能信号为低电平时,表示在进行读或者写操作,在异步传输模式下,它与片选信号线配合对读或者写数据进行采样。RST复位信号线实现UART芯片的复位。
地址总线用于选择UART芯片中的寄存器。由于UART芯片访问空间很小,只有8个寄存器地址,因此可以使用三根地址总线来连接CPU最小***和UART芯片,当某通道片选信号变为低电平,即某通道被选定后,通过LA0~LA2来实现该通道中不同寄存器的访问,从而实现RS-422串口数据收发或其它工作。
数据总线用于实现CPU最小***与UART芯片的数据传输,为双向数据传输。根据UART芯片模式,数据总线的数据位宽有8位或16位之分,根据数据位宽的多少,数据总线信号线也相应改变。当发送数据时,将CPU最小***写入UART芯片发送FIFO 中的并行数据转换成串行数据,并通过RS422转换芯片发送出去;当接收数据时, 将RS422转换芯片接收到的外部串行数据转换成并行数据存入UART 芯片的接收FIFO 中, 供CPU读取。
多路RS422串口通信方法的整体流程如图1所示,具体包括以下步骤。
A.CPU最小***调用操作***所规定的标准用户接口层API函数与上层应用相互通信,为上层应用提供服务。
本发明的通信方法是基于实时操作***VxWorks实现的,故以字符设备的形式向VxWorks操作***的 I/O层注册读写和控制函数。其对上层应用注册的读写和控制函数如下:RS422Open:RS422设备打开函数,对应应用层接口函数open;RS422Close:RS422设备关闭函数,对应应用层接口函数close;RS422Read,:RS422设备字符读取函数,对应应用层接口函数read;RS422Write:RS422设备字符发送函数,对应应用层接口函数write;RS422Ioctrl:RS422设备控制函数,对应应用层接口函数ioctl函数。
如果是写操作,在I/O层调用write函数写设备时,RS422Write函数要主动调用底层RS422驱动程序的相关函数来发送字符数据。如果是读操作,RS422Read函数则直接在缓冲区中读取字符;当缓冲区为空时,如果是阻塞方式需要等待,如果是非阻塞方式则立即返回错误;该缓冲区的填充是由底层RS422驱动程序通过中断方式进行,当底层驱动接受到一个字符时,产生中断,然后提供回调函数将字符写入缓冲区中以供上层应用读取。
B.设置UART芯片与CPU最小***之间的Local Bus总线。
C.设置多路RS422驱动程序。
C1.初始化UART芯片参数;UART芯片参数包括通信模式、中断号、波特率以及晶振参数。
C2.设置每个通道设备的中断连接。
C3.RS422驱动函数注册;RS422驱动函数包括Open,Close,Read,Write和Ioctrl函数。
C4.在VxWorks操作***中为每个通道创建相应设备,并与相应的RS422转换芯片关联。
步骤C的流程如图2所示,具体包括以下操作。
C41.为每个通道设置不同的中断号。
C42.关联中断号与中断函数。
C43.调用RS422驱动函数注册到操作***中。
C44.与相应的RS422转换芯片关联。
D.采用中断服务触发相应通道的RS422转换芯片进行数据通信。主要包括向上层提供回调函数注册功能,例如启动发送数据函数;完成不同通道的通信设置,主要是设置地址空间映射,通过访问不同地址区间实现对不同通道的访问;控制通道进行字符接收和发送及其他硬件配置工作。本发明通过中断方式迸行数据的接收和发送,当然也可采用轮询方式进行数据接收和发送。
为实现回调函数的注册,定义数据结构为RS422DRV_FUNCS结构体,该结构体中所有成员都是函数指针,RS422转换芯片的设置对应函数完成相应功能,并将这些函数地址对RS422DRV_FUNCS结构体进行初始化,然后通知给UART芯片。
地址空间映射是指将Local Bus总线设备的访问转换到CPU最小***的内存空间中。Local Bus内部事务地址只能为32位,所以所有片选必须落在4G窗口之内。当一个内存事务被指派到LBC上时,内部事务地址就跟每个BANK的地址信息相比较,相应的芯片就跟该BANK关联起来,直到事务结束。对应每个BANK的寄存器主要有两个,一个是Base Register(缩称BR),BR寄存器包含BANK所对应的基地址和类型;另外一个是Option Register(缩称OR),OR寄存器主要设置BANK的大小和访问属性。通过对Local Bus寄存器进行设置后,便能通过访问特定地址空间实现挂在总线上设备的片选和其它操作。
其中,步骤D中的中断服务流程如图3所示,具体包括以下操作。
D1.获取引发中断的通道号i;
D2.关闭i通道中断;
D3.读取UART芯片i通道的IIS状态寄存器,获取UART芯片中的中断类型;
D4.根据中断类型进行相应数据处理;
D41.判断中断信号是否异常,如中断信号异常,进行异常处理并恢复中断状态;如中断信号正常,则进行步骤D42;
D42. CPU最小***指令判断是否接收有效中断,如是,进行数据接收,将UART芯片FIFO中的数据读入到***中,然后再调用回调函数将数据放到CPU最小***相应的缓存中;如否,则进行步骤D43;
D43. CPU最小***指令判断是否发送有效中断,如是,进行数据发送UART芯片的发送寄存器发送数据;如否,打开i通道中断。
D5.数据处理完成后,打开i通道中断,继续等待下一个中断信号。
本发明应用过程中,只需重复步骤D即可,即当有读/写操作请求时,采用中断服务触发相应通道的RS422转换芯片进行数据通信即可。

Claims (7)

1.基于Local Bus总线的多路RS422串口通信方法,其特征在于,
该方法基于多路RS422串口通信装置以及实时操作***VxWorks实现,多路RS422串口通信装置包括CPU最小***、UART芯片、晶振电路以及N个RS422转换芯片,所述UART芯片与CPU最小***之间通过Local Bus总线连接,UART芯片与RS422转换芯片之间通过差分信号线连接;晶振电路与UART芯片连接,用于为UART芯片提供数据传送的时钟;
所述方法具体包括以下步骤:
A.CPU最小***调用操作***所规定的标准用户接口层API函数与上层应用相互通信;
B.设置UART芯片与CPU最小***之间的Local Bus总线;
C.设置多路RS422驱动程序;
C1.初始化UART芯片参数;
C2.设置每个通道设备的中断连接;
C3.RS422驱动函数注册;
C4.在VxWorks操作***中为每个通道创建相应设备并与相应的RS422转换芯片关联;
D.采用中断服务触发相应通道的RS422转换芯片进行数据通信。
2.根据权利要求1所述的基于Local Bus总线的多路RS422串口通信方法,其特征在于,步骤B中的Local Bus总线包括控制总线、地址总线和数据总线,控制总线包括LCS片选信号线、INT中断控制线、ER/W读写使能信号以及RST复位信号线。
3.根据权利要求1所述的基于Local Bus总线的多路RS422串口通信方法,其特征在于,步骤C1中所述的UART芯片参数包括通信模式、中断号、波特率以及晶振参数。
4.根据权利要求1所述的基于Local Bus总线的多路RS422串口通信方法,其特征在于,步骤C3中所述的RS422驱动函数包括Open,Close,Read,Write和Ioctrl函数。
5.根据权利要求1所述的基于Local Bus总线的多路RS422串口通信方法,其特征在于,步骤C4具体包括以下步骤:
C41.为每个通道设置不同的中断号;
C42.关联中断号与中断函数;
C43.调用RS422驱动函数注册到操作***中;
C44.与相应的RS422转换芯片关联。
6.根据权利要求1所述的基于Local Bus总线的多路RS422串口通信方法,其特征在于,步骤D所述中断服务具体包括以下步骤:
D1.获取引发中断的通道号i;
D2.关闭i通道中断;
D3.读取UART芯片i通道的IIS状态寄存器,获取UART芯片中的中断类型;
D4.根据中断类型进行相应数据处理;
D5.数据处理完成后,打开i通道中断。
7.根据权利要求6所述的基于Local Bus总线的多路RS422串口通信方法,其特征在于,步骤D4包括以下内容:
D41.判断中断信号是否异常,如中断信号异常,进行异常处理;如中断信号正常,则进行步骤D42;
D42.CPU最小***指令判断是否接收有效中断,如是,进行数据接收;如否,则进行步骤D43;
D43.CPU最小***指令判断是否发送有效中断,如是,进行数据发送;如否,打开i通道中断。
CN201610544401.2A 2016-07-12 2016-07-12 基于Local Bus总线的多路RS422串口通信方法 Active CN106126467B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610544401.2A CN106126467B (zh) 2016-07-12 2016-07-12 基于Local Bus总线的多路RS422串口通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610544401.2A CN106126467B (zh) 2016-07-12 2016-07-12 基于Local Bus总线的多路RS422串口通信方法

Publications (2)

Publication Number Publication Date
CN106126467A CN106126467A (zh) 2016-11-16
CN106126467B true CN106126467B (zh) 2018-12-21

Family

ID=57283745

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610544401.2A Active CN106126467B (zh) 2016-07-12 2016-07-12 基于Local Bus总线的多路RS422串口通信方法

Country Status (1)

Country Link
CN (1) CN106126467B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10313157B2 (en) * 2017-04-25 2019-06-04 Realtek Semiconductor Corp. Apparatus and method for multiplexing multi-lane multi-mode data transport
CN109766308A (zh) * 2019-01-15 2019-05-17 湖南泽天智航电子技术有限公司 一种基于localbus总线的多路onewire通信***
CN113468081B (zh) * 2021-07-01 2024-05-28 福建信息职业技术学院 基于ebi总线的串口转udp的装置及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101989244A (zh) * 2009-08-05 2011-03-23 华为技术有限公司 一种信号转换装置、方法及通信设备
JP2012221461A (ja) * 2011-04-14 2012-11-12 Ricoh Co Ltd 半導体集積回路
CN103092787A (zh) * 2011-10-28 2013-05-08 中国航天科工集团第三研究院第八三五七研究所 一种基于PowerPC架构的多功能低功耗总线通讯模块
CN103248526A (zh) * 2012-02-08 2013-08-14 迈普通信技术股份有限公司 实现带外监控管理的通信设备、方法及主从切换方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101989244A (zh) * 2009-08-05 2011-03-23 华为技术有限公司 一种信号转换装置、方法及通信设备
JP2012221461A (ja) * 2011-04-14 2012-11-12 Ricoh Co Ltd 半導体集積回路
CN103092787A (zh) * 2011-10-28 2013-05-08 中国航天科工集团第三研究院第八三五七研究所 一种基于PowerPC架构的多功能低功耗总线通讯模块
CN103248526A (zh) * 2012-02-08 2013-08-14 迈普通信技术股份有限公司 实现带外监控管理的通信设备、方法及主从切换方法

Also Published As

Publication number Publication date
CN106126467A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
US6185630B1 (en) Device initializing system with programmable array logic configured to cause non-volatile memory to output address and data information to the device in a prescribed sequence
CN100471156C (zh) 数据总线桥接器及其工作方法
CN103064805B (zh) Spi控制器及通信方法
CA2041741C (en) Terminal server architecture
CN109710548A (zh) 一种dma控制数据传输方法、***及设备
CN106126467B (zh) 基于Local Bus总线的多路RS422串口通信方法
CN101587462B (zh) 高速数据通信链路中的usb数据传输装置及其数据传输方法
CN111666242B (zh) 一种基于飞腾平台lpc总线的多路通信***
CN102420877B (zh) 一种多模式高速智能异步串口通信模块及实现方法
WO2012143953A2 (en) Optimized multi-root input output virtualization aware switch
EP0496177A1 (en) Method of transmitting data by buffer chaining between a host computer and a communication controller
US6094436A (en) Integrated multiport switch having shared media access control circuitry
CN109062847A (zh) 片上***、用于rs485串口通讯的ip核及其控制方法
CN109766308A (zh) 一种基于localbus总线的多路onewire通信***
CN105993148B (zh) 网络接口
CN102185833A (zh) 一种基于fpga的fc i/o并行处理方法
CN110471880A (zh) 一种基于FPGA支持Label号筛选的ARINC429总线模块及其数据传输方法
JPH09167127A (ja) ハードウェアとソフトウェアの間でのデータ転送を調整するための方法及び装置
CN110188059A (zh) 数据有效位统一配置的流控式fifo缓存结构及方法
CN102567278A (zh) 一种片上多核数据传输方法和装置
CN111736115A (zh) 基于改进型sgdma+pcie的mimo毫米波雷达高速传输方法
CN110971621B (zh) 基于sdio接口的嵌入式多cpu互联电路、互联方法及驱动方法
US7610415B2 (en) System and method for processing data streams
CN104022963A (zh) 多种通信方式并存的通信方法及装置
CN101447988A (zh) 一种基于fpga的千兆数据通信卡

Legal Events

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