总线控制器及实现多主机通信的方法

文档序号:6471615阅读:187来源:国知局
专利名称:总线控制器及实现多主机通信的方法
技术领域
本发明涉及总线技术,尤其涉及一种总线控制器及利用总线控制器实现多主机通
信的方法。
背景技术
随着嵌入式技术和总线技术的发展,涌现出众多应用于嵌入式设备内部的串行总
线,较为典型的有:CAN、UART、SPI、I2C。对比如下表
CANUARTSPII2C
应用情况广泛应用于汽车 电子产品中的电 子设备之间的通 讯广泛应用于各 种电子产品的 CPU间通讯广泛应用 于CPU与 外设间通 讯广泛应用于 CPU与外设间 通讯
可靠性高高中中
硬件成本高低低低
总线控制器 在CPU上的 集成情况仅在部分DSP和 ARM等高端芯 片上集成从低端到高端 芯片都有集成从低端到 高端芯片 都有集成部分高端芯片 没有集成
软件协议复杂简单简单中等
总线架构多主机通讯又寸, 一主多从又寸, 一主多从一主多从, 多主机通讯
通讯速率高中中低(集成高速模 式的芯片较少 且可靠性较低)
通讯距离长中短短 由上表可以看出,对于总线长度在5米内的嵌入式整机设备,UART总线具有优异 的性能价格比和简单易用的特点,因此是单片机应用系统中应用最广泛的总线。但是,由于
4绝大多数UART总线控制器不支持多主机通讯,因此在复杂系统中往往需要选用集成2 4 个UART接口的芯片,或者在多个CPU间设定层级关系,由担当通讯节点的CPU负责上下级 间通讯的传递。由此可见,UART总线的应用在复杂系统中遇到了技术上的瓶颈。
因此需要一种有效方案来解决UART总线在复杂系统应用中的问题。

发明内容
为了解决上述问题,本发明提供了一种用总线控制器及利用总线控制器实现多主 机通信的方法。 根据本发明的一个方面,提供了一种利用总线控制器实现多主机通信的方法,包 括以下步骤步骤S102,总线控制器接收来自主机的要向一个或多个从机发送数据的请 求;步骤S104,总线控制器判断所请求的一个或多个从机的通道状态,如果至少一个从机 的通道状态为非空闲,则总线控制器将主机的请求挂起,并按照预先设定的通道优先级来 查询被挂起的主机的请求,直到主机所请求的从机的通道处于空闲状态;如果从机通道空 闲,则将地址帧发送给从机;以及步骤S106,总线控制器将主机的通道与从机的通道选通, 使主机发送的数据帧发送到从机。 其中,在步骤S102中,主机通过向总线控制器发送表示从机地址的地址帧来向主 机发送请求,以选通要发送数据的总线通道。 其中,在步骤S104中,总线控制器将地址帧发送给从机后,将主机的通道状态和 从机的通道状态置为非空闲。 其中,在步骤S106中,主机发送的数据帧发送到从机后,总线控制器将主机的通 道和从机的通道的状态置为空闲。 其中,在从机处于非空闲状态时,允许主机发送数据,并将这些数据存放于总线控 制器的芯片内部或外部的数据寄存器中,待从机空闲时再将数据从数据寄存器中取出并发 送给从机。 其中,用于通讯的帧为UART帧格式。 根据本发明的另一方面,提供了一种用于实现多主机通信的总线控制器,其包括 数据接收模块,用于接收来自主机的要向一个或多个从机发送数据的请求;分析处理模块, 判断所请求的一个或多个从机的通道状态,如果从机的通道状态为非空闲,则将主机的请 求挂起,并按照预先设定的通道优先级来查询被挂起的主机的请求,直到主机所请求的从 机的通道处于空闲状态;如果从机通道空闲,则将地址帧发送给从机;以及通道选通模块, 将主机的通道与从机的通道选通,使主机发送的数据帧发送到从机。 其中,数据接收模块接收主机发送的表示从机地址的地址帧,并选通要发送数据 的总线通道。 其中,分析处理模块将地址帧发送给从机后,将主机的通道状态和从机的通道状 态置为非空闲。 其中,通道选通模块在主机发送的数据帧发送到从机后,将主机的通道和从机的 通道的状态置为空闲。 其中,总线控制器包括数据寄存器,数据寄存器位于总线控制器内部或外部,在从 机处于非空闲状态时,将主机发送的数据存放于数据寄存器中,待从机空闲时再将数据从数据寄存器中取出并发送给从机。 其中,该总线控制器,所采用的通讯的帧为UART帧格式。
本发明的技术方案具有以下有益效果 采用本发明技术方案的多CPU系统将很容易地构建系统架构,在硬件接口资源有 限的情况下( 一般的单片机、DSP、ARM芯片都只有1 2个UART接口 )不需要过多的考虑 CPU层级关系,因为各个CPU都可以通过本总线控制器向任意一个或多个CPU发送指令和数 据。扁平化、并行、全双工通讯的特点使得应用本发明的系统不存在通讯瓶颈,可以实时、高 效、直接地传输数据而不需要分级地传输。 相对于CAN、fC、SPI等总线及其总线控制器,本发明具有最高的性价比,非常适合 于有中等可靠性、较高实时性和低成本要求的嵌入式系统。 对于软件开发人员来说,UART驱动程序设计和应用非常简单,且不需要针对本发 明设计的总线控制器的功能添加复杂设计。 应该指出,以上说明和以下详细说明都是示例性的,旨在对所要求的本发明提供 进一步的说明。 除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。 下面将参照图,对本发明的其它的目的、特征和效果作进一步详细的说明。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中
图1示出了根据本发明的一个实施例的总线控制器的多个通道的示意性视图;
图2示出了根据本发明的一个实施例的总线控制器的UART帧格式;
图3示出了根据本发明的一个实施例的利用总线控制器实现的的多主机通讯流 程图;以及 图4示出了根据本发明的一个实施例的总线控制器的功能结构示意图。
具体实施例方式
下面结合附图和具体实施方式
对本发明作进一步的说明。 由于CPLD (complex programmable logic device可编程逻辑器件)或FPGA (field programmable gate array现场可编程门阵列)具有可重构、集成度高、成本低等特点,非常 适合于嵌入式系统内的逻辑电路的设计,因此本方案选择CPLD或FPGA设计总线控制器。
本发明中为总线控制器设计多个通道。在该实施例中以四个通道为例进行说明。
参照图l,在本实施例中,每个通道由TXDn和RXDn(n = 1, 2, 3, 4表示通道序号) 这两个引脚组成,TXDn表示发送端、RXDn表示接收端。其中,通道序号代表各通道通讯的 优先级,通道1的优先级最高。同时,通道序号代表该通道所连接设备的地址或地址的偏移 量,如通道1所连接设备的地址为01或Al,通道2所连接设备的地址为02或A2。且其中 通讯的帧格式为通用的UART帧格式。 图2示出了根据本发明的一个实施例的总线控制器的UART帧格式;
其中,在该帧格式中,
St为起始位,总是为低电平;
数据位为0 8 ; P :校验位,可以为奇校验或偶校验;
Sp :停止位,总是为高电平; IDLE :通信线上没有数据传输(RxD或TxD),线路空闲时必须为高电平。 图3示出了根据本发明的一个实施例的利用总线控制器实现的多主机通讯流程图。 在本实施例中,利用总线控制器实现多主机通信的方法,包括以下步骤步骤S102,总线控制器接收来自主机的要向一个或多个从机发送数据的请求;步骤S104,总线控制器判断所请求的一个或多个从机的通道状态,如果至少一个从机的通道状态为非空闲,则总线控制器将主机的请求挂起,并按照预先设定的通道优先级来查询被挂起的主机的请求,直到主机所请求的从机的通道处于空闲状态;如果从机通道空闲,则将地址帧发送给从机;以及步骤S106,总线控制器将主机的通道与从机的通道选通,使主机发送的数据帧发送到从机。 其中,在步骤S102中,主机通过向总线控制器发送表示从机地址的地址帧来向主机发送请求,以选通要发送数据的总线通道。 其中,在步骤S104中,总线控制器将地址帧发送给从机后,将主机的通道状态和从机的通道状态置为非空闲。 其中,在步骤S106中,主机发送的数据帧发送到从机后,总线控制器将主机的通道和从机的通道的状态置为空闲。 其中,在从机处于非空闲状态时,允许主机发送数据,并将这些数据存放于总线控制器的芯片内部或外部的数据寄存器中,待从机空闲时再将数据从数据寄存器中取出并发送给从机。 其中,用于通讯的帧为UART帧格式。 具体地,根据该本发明实施例的利用该总线控制器实现多主机通讯的步骤如下
1.主机向总线控制器发送1个或多个地址帧(表示从机地址的1帧数据,在数据格式上区别于数据帧),用来选通1个或多个要发送数据的总线通道; 2.总线控制器判断被选中的从机通道接收端是否空闲,如果空闲可进入第5步,否则将主机的请求挂起; 3.总线控制器按照通道优先级查询被挂起的主机请求(即,查询所被请求的通道是否空闲,其中,先查询优先级高的通道,再查询优先级低的通道),并执行第3步操作;
4.总线控制器响应主机通道,并将地址帧分别发送给相应从机,总线控制器将主机和从机通道工作状态置为非空闲; 5.主机准备发送数据帧,从机准备接收数据帧;
6.主机发送数据帧; 7.总线控制器将主机通道与从机通道选通,即将主机发送的数据帧发送给1个或
多个从机(并行、同时发送); 8.主机发送数据帧结束指令; 9.总线控制器将主机和从机通道工作状态置为空闲;
7
其中,在该方法中,所有连接在本总线控制器上的处理器都工作在多处理器模式下。 在以上的步骤中,实现了 UART总线控制器的基本功能,包括基本的UART串行通信设备功能,如全双工通讯、高精度波特率发生器、支持5 9位数据位和1或2位停止位、硬件奇偶校验、过速检测、帧错误、噪声滤波等;通道地址判断。 还实现了 UART总线控制器的扩展功能,包括优先级判断;主机通讯请求的挂起和查询;通道工作状态判断和设置;与主机、从机通讯指令的接收和发送;接收主机数据,并发送给1个或多个从机。 另外,在上述步骤中,当从机非空闲时,允许主机发送数据,并将这些数据存放于芯片内部或外部的数据寄存器(如SRAM)中,待从机空闲时再将数据从数据寄存器中取出并发送给从机。 图4示出了根据本发明的一个实施例的总线控制器的功能结构示意图。 根据本发明一实施例的总线控制器400,其包括数据接收模块402,用于接收来
自主机的要向一个或多个从机发送数据的请求;分析处理模块404,判断所请求的一个或
多个从机的通道状态,如果从机的通道状态为非空闲,则将主机的请求挂起,并按照预先设
定的通道优先级来查询被挂起的主机的请求,直到主机所请求的从机的通道处于空闲状
态;如果从机通道空闲,则将地址帧发送给从机;以及通道选通模块406,将主机的通道与
从机的通道选通,使主机发送的数据帧发送到从机。 其中,数据接收模块接收主机发送的表示从机地址的地址帧,并选通要发送数据的总线通道。 其中,分析处理模块将地址帧发送给从机后,将主机的通道状态和从机的通道状态置为非空闲。 其中,通道选通模块在主机发送的数据帧发送到从机后,将主机的通道和从机的通道的状态置为空闲。 其中,总线控制器包括数据寄存器,数据寄存器位于总线控制器内部或外部,在从机处于非空闲状态时,将主机发送的数据存放于数据寄存器中,待从机空闲时再将数据从数据寄存器中取出并发送给从机。 其中,该总线控制器,所采用的通讯的帧为UART帧格式。 采用本发明实现方案的多CPU系统将很容易的构建系统架构,在硬件接口资源有限的情况下( 一般的单片机、DSP、ARM芯片都只有1 2个UART接口 )不需要过多的考虑CPU层级关系,因为各个CPU都可以通过本总线控制器向任意一个或多个CPU发送指令和数据。扁平化、并行、全双工通讯的特点使得应用本发明的系统不存在通讯瓶颈,可以实时、高效、直接地传输数据而不需要分级地传输。 相对于CAN、fC、SPI等总线及其总线控制器,本发明具有最高的性价比,非常适合于有中等可靠性、较高实时性和低成本要求的嵌入式系统。 对于软件开发人员来说,UART驱动程序设计和应用非常简单,且不需要针对本发明设计的总线控制器的功能添加复杂设计。 优选地,可以将本发明用于呼吸机、麻醉机等复杂嵌入式系统,将人机交互系统控制CPU、气路驱动控制CPU、电源系统监控CPU、面板控制CPU、信号采集处理CPU连接在串口总线控制器上。在运行过程中,人机交互系统控制CPU可定时查询各CPU的工作状态并将 结果显示在LCD等设备的监测界面上,提供给用户或操作者查看或直接发出声光报警。信 号采集处理CPU可实时将处理后的传感器信号发送给人机交互系统控制CPU和气路驱动控 制CPU,前者将实时显示波形和参数,后者将根据控制策略实时调整执行机构。
通过实施本发明方案,大大化简了系统通讯结构,例如在显示实时性要求很高 (每5ms刷新一次)的压力、流量等传感器采集到的信号波形时,不需要信号采集处理CPU 采集到的传感器信号先传递给气路驱动控制CPU,再由它传递给人机交互系统控制CPU,而 可以由信号采集处理CPU将处理后的传感器信号同时发送给人机交互系统控制CPU和气路 驱动控制CPU。 以上仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来 说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同 替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
一种利用总线控制器实现多主机通信的方法,其特征在于包括以下步骤步骤S102,所述总线控制器接收来自主机的要向一个或多个从机发送数据的请求;步骤S104,所述总线控制器判断所请求的一个或多个从机的通道状态,如果至少一个所述从机的通道状态为非空闲,则所述总线控制器将所述主机的请求挂起,并按照预先设定的通道优先级来查询所述被挂起的所述主机的请求,直到所述主机所请求的所述从机的通道处于空闲状态;如果所述从机通道空闲,则将所述地址帧发送给所述从机;以及步骤S106,所述总线控制器将所述主机的通道与所述从机的通道选通,使所述主机发送的数据帧发送到所述从机。
2. 根据权利要求1所述的方法,其特征在于在步骤S102中,所述主机通过向所述总线控制器发送表示从机地址的地址帧来向所 述主机发送请求,以选通要发送数据的总线通道。
3. 根据权利要求1所述的方法,其特征在于在步骤S104中,所述总线控制器将所述地址帧发送给所述从机后,将所述主机的通道 状态和所述从机的通道状态置为非空闲。
4. 根据权利要求1所述的方法,其特征在于在步骤S106中,所述主机发送的数据帧发送到所述从机后,所述总线控制器将所述主 机的通道和所述从机的通道的状态置为空闲。
5. 根据权利要求1所述的方法,其特征在于在所述从机处于非空闲状态时,允许所述主机发送数据,并将这些数据存放于所述总 线控制器的芯片内部或外部的数据寄存器中,待所述从机空闲时再将数据从所述数据寄存 器中取出并发送给所述从机。
6. 根据上述权利要求1至5中任一项所述的方法,其特征在干,用于通讯的帧为UART 帧格式。
7. —种用于实现多主机通信的总线控制器,其特征在于包括数据接收模块,用于接收来自主机的要向一个或多个从机发送数据的请求; 分析处理模块,判断所请求的一个或多个从机的通道状态,如果所述从机的通道状态为非空闲,则将所述主机的请求挂起,并按照预先设定的通道优先级来查询所述被挂起的所述主机的请求,直到所述主机所请求的所述从机的通道处于空闲状态;如果所述从机通道空闲,则将所述地址帧发送给所述从机;以及通道选通模块,将所述主机的通道与所述从机的通道选通,使所述主机发送的数据帧发送到所述从机。
8. 根据权利要求7所述的总线控制器,其特征在于所述数据接收模块接收所述主机发送的表示从机地址的地址帧,并选通要发送数据的 总线通道。
9. 根据权利要求7所述的总线控制器,其特征在于所述分析处理模块将所述地址帧发送给所述从机后,将所述主机的通道状态和所述从 机的通道状态置为非空闲。
10. 根据权利要求7所述的总线控制器,其特征在于所述通道选通模块在所述主机发送的数据帧发送到所述从机后,将所述主机的通道和所述从机的通道的状态置为空闲。
11. 根据权利要求7所述的总线控制器,其特征在于还包括数据寄存器,所述数据寄存器位于所述总线控制器内部或外部,在所述从机处 于非空闲状态时,将所述主机发送的数据存放于所述数据寄存器中,待所述从机空闲时再 将所述数据从所述数据寄存器中取出并发送给所述从机。
12. 根据上述权利要求7至11中任一项所述的总线控制器,其特征在于,用于通讯的帧 为UART帧格式。
全文摘要
本发明提供了一种利用总线控制器实现多主机通信的方法,包括以下步骤步骤S102,总线控制器接收来自主机的要向一个或多个从机发送数据的请求;步骤S104,总线控制器判断所请求的一个或多个从机的通道状态,如果至少一个从机的通道状态为非空闲,则总线控制器将主机的请求挂起,并按照预先设定的通道优先级来查询被挂起的主机的请求,直到主机所请求的从机的通道处于空闲状态;如果从机通道空闲,则将地址帧发送给从机;以及步骤S106,总线控制器将主机的通道与从机的通道选通,使主机发送的数据帧发送到从机。本发明还提供了一种总线控制器。通过本发明的技术方案有效解决了UART总线在复杂系统中应用所遇到的问题。
文档编号G06F13/42GK101763333SQ20081023930
公开日2010年6月30日 申请日期2008年12月8日 优先权日2008年12月8日
发明者李敬辉, 王彦军, 迟越本 申请人:北京谊安医疗系统股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1