CN113448898A - 一种使用uart实现多功能低速io的设备和方法 - Google Patents
一种使用uart实现多功能低速io的设备和方法 Download PDFInfo
- Publication number
- CN113448898A CN113448898A CN202110999787.7A CN202110999787A CN113448898A CN 113448898 A CN113448898 A CN 113448898A CN 202110999787 A CN202110999787 A CN 202110999787A CN 113448898 A CN113448898 A CN 113448898A
- Authority
- CN
- China
- Prior art keywords
- data
- uart
- converting
- layer module
- bus
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000002093 peripheral effect Effects 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 27
- 238000004891 communication Methods 0.000 claims abstract description 25
- 230000008569 process Effects 0.000 claims abstract description 16
- 230000005540 biological transmission Effects 0.000 claims description 38
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 230000000694 effects Effects 0.000 abstract description 8
- 238000011161 development Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 101710176296 Switch 2 Proteins 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种使用UART实现多功能低速IO的设备和方法。本发明包括上层模块和底层模块,还包括用于连接上层模块与底层模块的中间层模块;上层模块为处理芯片U1,处理芯片U1支持UART通信协议;底层模块包括多种外设设备,多种外设设备分别采用不同的低速IO;中间层模块包括第一连接单元、多个第二连接单元和控制单元,其中,第一连接单元,与处理芯片U1连接,用于传输第一数据;多个第二连接单元,分别与多种外设设备连接,用于传输第二数据;控制单元,用于接收第一数据和第二数据,并将第一数据转换为第二数据输出或将第二数据转换为第一数据输出。具有能够节省上层设备中逻辑资源,减少驱动程序编写过程的技术效果。
Description
技术领域
本发明涉及一种传输设备,特别涉及一种使用UART实现多功能低速IO的设备和方法。
背景技术
IO设备通常是物理上相互独立的设备,它们一般通过通信总线(或电缆)与IO控制器连接。最初的单总线架构将CPU、主存和IO模块连接到同一组总线上,结构简单,易于扩充;传统三级总线架构,主存和Cache通过主存总线传送数据,主存总线和扩展总线上的IO设备之间传送数据通过扩展总线接口缓冲;多级总线架构。支持CPU、主存和多个IO通道之间的数据传送,支持IO通道和IO控制器,以及IO控制器和外设。
现有技术根据每类IO外设的需求量,来确定各种低速IO设备控制器的数量。包括常规通用UART控制器在内,还需在Intel CPU中集成尽可能多的GPIO、I2C、SPI、CAN等各类型的低速IO控制器,并且需为上述各类IO控制器开发专门的驱动程序。
现有技术存在下列问题:由于接口的不统一,需要在CPU中集成尽可能多的IO控制器,会极大浪费逻辑资源;低速IO一般需要开发专用的子驱动程序,若是外设设备发生变动,就意味着需重新编写驱动程序。
发明内容
本发明的目的在于克服现有技术中所存在的上述不足,节省CPU中的逻辑资源和减少驱动程序的编写过程,提供一种使用UART实现多功能低速IO的方法和设备。
为了实现上述发明目的,本发明提供了以下技术方案:
一方面
提供一种使用UART实现多功能低速IO的设备,包括以下步骤,
包括上层模块和底层模块,还包括用于连接上层模块与底层模块的中间层模块;所述上层模块包括处理芯片U1,所述处理芯片U1支持URAT通信协议;所述底层模块包括多种外设设备,多种所述外设设备采用不同的低速IO;
所述中间层模块包括第一连接单元、多个第二连接单元和控制单元,其中,
第一连接单元,与处理芯片U1连接,用于传输第一数据;
多个第二连接单元,分别与多个外设设备连接,用于传输第二数据;
控制单元,用于接收第一数据和第二数据,并将第一数据转换为第二数据输出或将第二数据转换为第一数据输出。
通过采用上述方案,上层模块和底层模块在进行数据交换时,上层模块与底层模块之间通过中间层模块连接,中间层模块中的控制单元能够将第一数据转换为第二数据输出,将第一数据转换为第二数据输出,信息完成了从高速UART数据到低速IO数据的转换;在转换过程中,处理芯片U1与所有外设设备唯一的通信接口是UART,由于UART接口是标准通信总线接口,所以在处理芯片U1中不需要专门开发驱动程序;且外设设备使用的低速IO与中间层模块连接,在添加外设设备或减少外设设备时,均不用在上层模块中改变驱动程序;具有能够节省上层设备中逻辑资源,减少驱动程序编写过程的效果。
优选地,所述第一连接单元为URAT总线,包括标准的UART总线或虚拟的UART总线。
优选地,所述第二连接单元包括GPIO总线、I2C总线、SPI总线和CAN总线。
优选地,所述控制单元包括控制芯片U2,所述控制芯片U2内设置有多个用于控制低速IO 的IO控制器,包括GPIO控制器、I2C控制器、SPI控制器和CAN控制器。
优选地,多个所述IO控制器均包括控制逻辑单元、变换器和缓冲器,其中,
所述控制逻辑单元,用于解析第二数据中所包含的控制信息、状态信息和数据,并输出相应的控制逻辑到外设设备;
所述变换器,用于在电信号形式和其他形式的设备数据之间进行转换;
所述缓冲器,用于保存转换过程中产生的数据信息。
另一方面
提供一种使用UART实现多功能低速IO的方法,包括以下步骤,
S1,获取上层模块输出的第一数据或底层模块输出的第二数据,所述第一数据和第二数据均包括控制信息、状态信息和数据;
S2,使用控制单元解析第一数据,通过控制信息获取其传输方向,所述控制信息中包含了第一数据所控制的外设设备,并将第一数据转换为第二数据,通过第二连接单元将第二数据传输到相应的外设设备;
S3,将第二数据转换为第一数据,通过第一连接单元传输到处理芯片U1。
通过采用上述技术方案,在进行数据传输时,从底层模块流向上层模块的信息即为第二数据,从上层模块流向底层模块的信息即为第一数据;第二数据首先通过低速IO从底层模块中输出,然后将第二数据转换为第一数据,就能够通过UART将第二数据传输到上层模块中,完成第二数据的传输。第一数据从上层模块中输出后,首先对其进行解析,就能够从第一数据中所包含的控制信息得到第一数据的传输目的地,也就是传输方向,获取到传输方向后,就能够通过相应的低速IO将第一数据传输到底层设备中,完成第一数据的传播。在第一数据和第二数据的传输过程中,因为使用了控制单元来对第一数据和第二数据进行一个转换,所以在上层模块和底层模块进行的数据交换过程中,并不需要上层模块具有各种低速IO的IO控制器,从而减少了上层模块中逻辑资源的浪费,从而达到节省逻辑资源的效果。
优选地,所述底层设备包括支持GPIO数据传输协议、I2C数据传输协议、SPI数据传输协议或CAN数据传输协议的外设设备。
优选地,所述传输方向为上层设备传输到GPIO、I2C、SPI或CAN低速IO的方向。
优选地,所述将第一数据转换为第二数据的方法包括但不限于:UART数据转GPIO数据的方法、UART数据转I2C数据的方法、UART数据转SPI数据的方法或UART数据转CAN数据的方法。
优选地,所述将第二数据转换为第一数据的方法包括但不限于:GPIO数据转UART数据的方法、I2C数据转UART数据的方法、SPI数据转UART数据的方法或CAN数据转UART数据的方法。
与现有技术相比,本发明的有益效果:1、上层模块和底层模块在进行数据交换时,上层模块与底层模块之间通过中间层模块连接,中间层模块中的控制单元能够将第一数据转换为第二数据输出,将第一数据转换为第二数据输出,信息完成了从高速UART数据到低速IO数据的转换;在转换过程中,处理芯片U1与所有外设设备唯一的通信接口是UART,由于UART接口是标准通信总线接口,所以在处理芯片U1中不需要专门开发驱动程序;且外设设备使用的低速IO与中间层模块连接,在添加外设设备或减少外设设备时,均不用在上层模块中改变驱动程序;具有能够节省上层设备中逻辑资源,减少驱动程序编写过程的效果。
2、在进行数据传输时,从底层模块流向上层模块的信息即为第二数据,从上层模块流向底层模块的信息即为第一数据;第二数据首先通过低速IO从底层模块中输出,然后将第二数据转换为第一数据,就能够通过UART将第二数据传输到上层模块中,完成第二数据的传输。第一数据从上层模块中输出后,首先对其进行解析,就能够从第一数据中所包含的控制信息得到第一数据的传输目的地,也就是传输方向,获取到传输方向后,就能够通过相应的低速IO将第一数据传输到底层设备中,完成第一数据的传播。在第一数据和第二数据的传输过程中,因为使用了控制单元来对第一数据和第二数据进行一个转换,所以在上层模块和底层模块进行的数据交换过程中,并不需要上层模块具有各种低速IO的IO控制器,从而减少了上层模块中逻辑资源的浪费,从而达到节省逻辑资源的效果。
附图说明
图1为本发明的系统结构示意图。
图2为本发明中IO控制器的结构示意图。
具体实施方式
下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
实施例1
本实施例提供一种使用UART实现多功能低速IO的设备,参照图1,包括上层模块和底层模块,其中,上层模块为处理芯片U1,也就是系统架构中的CPU;在本实施中选用IntelE3900系列。底层模块即需要与CPU进行数据交互的多种外设设备,多种外设设备分别采用多种不同的低速IO进行通信,包括采用GPIO的外设设备,例如LED和电源开关等;采用I2C总线的外设设备,例如距离传感器、重力传感器、磁力传感器、光电传感器、电池和显示配置接口等;采用SPI总线的外设设备,例如FLASH和LORA芯片等;采用CAN总线的工业CAN设备。
在工业制造中,为了节约成本,这些外设设备均只支持GPIO数据传输协议、I2C数据传输协议、SPI数据传输协议或CAN数据传输协议中的一种,外设设备只能够通过这些低速IO与CPU进行通信;而在CPU中,为了能够与这些外设设备进行通信,需要集成尽可能多的的IO控制器,这极大的浪费了CPU的逻辑资源,且会导致CPU的引脚增多;且GPIO、I2C和SPI的控制器一般需要开发子驱动程序,增大了开发难度。
为了节省逻辑资源,降低开发难度。在上层模块和底层模块之间设置了中间层模块,中间层模块用于连接上层模块和底层模块,且中间层模块能够将上层模块输出的第一数据转换为第二数据,并将其输出到底层模块中,将底层模块输出的第二数据转换为第一数据,并将其输出到上层模块中。
其中,第一数据即封装后的UART格式的数据,第二数据包括的GPIO格式数据、I2C格式数据、SPI格式数据或CAN格式数据中的一种;第一数据仅能够通过UART总线进行传输,第二数据能够通过GPIO总线、I2C总线、SPI总线或CAN总线中的一种进行传输。
中间层模块包括第一连接单元、多个第二连接单元和控制单元,其中,第一连接单元与处理芯片U1连接,用于传输第一数据;多个第二连接单元分别与多个外设设备连接,用于传输第二数据;控制单元,用于接收第一数据和第二数据,并将第一数据转换为第二数据输出或将第二数据转换为第一数据输出。
在本实施例中,第一连接单元为URAT总线,包括标准的UART总线或虚拟的UART总线。由于UART是标准通信总线接口,所以使用第一连接单元连接上层模块与中间层模块时,在上层模块和中间层模块中均不需要开发驱动程序,使用UART中线来连接上层模块和中间层模块具有使用简单,成本较低的效果。在大多的CPU中,均具有标准的UART总线接口,若是没有UART总线接口,也能够使用USB模拟UART,也就是虚拟的UART总线。
第二连接单元为多种低速IO,因为外设设备的通信只能依赖于低速IO,所以第二连接单元的中的低速IO的类别由外设设备的种类决定,在本实施例中,包含GPIO总线、I2C总线、SPI总线和CAN总线等。
控制单元包括控制芯片U2,在本实施例中,控制芯片U2采用型号为STM32F103的MCU,在控制芯片U2中,设置有用于与上层模块连接的UART接口,也设置有多个与底层模块连接的低速IO接口,且在控制芯片U2中还设置有多个IO控制器,IO控制器用于控制低速IO,包括GPIO控制器、I2C控制器、SPI控制器和CAN控制器等,多个IO控制器能分别控制多个低速IO。
控制芯片U2中的操作系统能够与IO控制器交互,互传数据;而IO控制器通过低速IO与外设设备进行数据、状态和控制信息的传输交换。
如图2所示,多个IO控制器均包括包括控制逻辑单元、变换器和缓冲器,其中,控制逻辑单元用于解析第二数据中所包含的控制信息、状态信息和数据,并输出相应的控制逻辑到外设设备;变换器用于在电信号形式和其他形式的设备数据之间进行转换;缓冲器用于保存转换过程中产生的数据信息。
例如,在将GPIO格式数据传输到LED灯的过程中,首先处理芯片U1中的应用层输出第一数据,第一数据中封装了GPIO读写命令和UART数据,第一数据通过UART输出到控制芯片U2中,控制芯片U2在接收到第一数据后,解析第一数据。在GPIO的使用中,一般会使用到读写命令,则第一数据解析后会包括GPIO写操作命令、GPIO读操作命令和读命令返回数据包;其中,GPIO写操作命令主要包括:
CMS:命令的起始位置;
ED:命令的结束位置;
GPH:命令发送方向是从HOST到LED;
GPD:命令的发送方向是从LED到HOST;
Gpioindex:要控制的GPIO具体引脚;
Level:读取到的或要设定的GPIO电平值。
在解析的过程中,主要需要获取第一数据中包含了哪些数据;获取GPIO格式数据的传输方向是通过判断第一数据中是否包含GPH命令或GPD命令来获取,若是包含了GPH命令,则为处理芯片U1传输到外设设备的方向,若是包含了GPD命令,则为外设设备传输到处理芯片U1的方向。在GPIO格式数据中,控制信息即Gpioindex命令,状态信息即Level命令。
解析完成后,通过控制信息,控制芯片U2能够获取到需要控制的具体引脚,再通过Level命令获取需要输出的电平,通过变换器输出相应的电压数值,则LED接收到控制电压后,能够完成相对应的控制动作。
通过设置中间层模块,实现了与Intel CPU平台解耦,将UART与CAN、GPIO、I2C或SPI外设封装成一个UART模块,处理芯片U2隐藏了下级子接口的访问细节,向Intel CPU提供统一的软件协议即UART通信协议。其中处理芯片U2内部集成IO控制器,以处理芯片U2作为中间层,向上通过标准的UART总线控制器或虚拟的UART控制器总线与上层模块IntelCPU进行通信,向下通过内部集成的GPIO总线、I2C总线、SPI总线和CAN总线分别与外设设备进行连接和通信。
由于IO外设设备控制细节复杂,需要上层设备中使用的Windows操作系统提供专门的驱动程序进行控制,通过采用本实施例的技术方案,能够对用户程序屏蔽设备控制的细节,减少驱动程序的编写;且在控制中,应用程序与具体IO物理设备无关,系统增减或变更设备时不需要修改Windows驱动程序;以达到节省CPU中的逻辑资源和减少驱动程序编写过程的效果。
实施例2
一种使用UART实现多功能低速IO的方法,包括以下步骤,
S1,获取上层模块输出的第一数据或底层模块输出的第二数据,第一数据和第二数据均包括控制信息、状态信息和数据;
S2,使用控制单元解析第一数据,通过控制信息获取其传输方向,传输方向为上层设备传输到GPIO、I2C、SPI或CAN等低速IO的方向。控制信息中包含了第一数据所控制的外设设备,通过解析第一数据,就能够获取到传输方向。解析完成后,将第一数据转换为第二数据,将第一数据转换为第二数据的方法包括但不限于:UART数据转GPIO数据的方法、UART数据转I2C数据的方法、UART数据转SPI数据的方法或UART数据转CAN数据的方法。
S3,将第二数据转换为第一数据,通过第一连接单元传输到处理芯片U1。
将第二数据转换为第一数据的方法包括但不限于:GPIO数据转UART数据的方法、I2C数据转UART数据的方法、SPI数据转UART数据的方法或CAN数据转UART数据的方法。
无论是将第二数据转换为第一数据还是将第一数据转换为第二数据,均依赖于控制芯片U2中的程序,主要是各类总线与下级设备之间的数据交互、状态控制;以及上层设备与控制芯片U2之间的通信,如何发送命令,命令怎么定义。
在第二数据为GPIO格式的数据时,在控制芯片U2内部的访问方法属于芯片内部规则,能够在eds手册及官方指导书上获取,本实施例不再做具体的描述。针对具体应用的底层接口封装,例如,控制LED1、LED2、 LED3、开关1、开关2和开关3;其包括,Led1OnOff(boolOnOff),控制Led1的亮灭;Led2OnOff(bool OnOff),控制Led2的亮灭;Led3OnOff(boolOnOff),控制Led3的亮灭;Switch1OnOff(bool OnOff),打开或关闭开关1;Switch2OnOff(bool OnOff),打开或关闭开关2;Switch3OnOff(bool OnOff),打开或关闭开关3;GpioControl(int gpioIndex, bool OnOff),该函数可以控制任何开关的状态,可以向协议层只开放这个函数,好处是即使后期设计发生改变可以把代码的修改部分控制在该层次,这样做将提高MCU的移植性。
在协议层的GPIO通信协议制订,对于GPIO来说,最基础的操作就是设置GPIO电平和读取GPIO电平,所以我们至少封装以下三个GPIO命令,它们的格式如下:
写GPIO命令: CMS-GPH-[GpioIndex]-[Level]-ED;
读GPIO命令: CMS-GPH-[GpioIndex]-ED;
读命令返回数据包:CMS-GPD-[Level]-ED;
CMS: 命令的起始位置;
ED:命令的结束位置;
GPH: 表示命令发送方向是从HOST到设备;
GPD:表示命令发送方向是从设备到HOST;
GpioIndex:要控制的GPIO具体引脚;
Level: 读取到的或要设定的GPIO电平值。
GPIO完成一次数据通信的完整流程:应用层打开正确的串口并发出封装了GPIO控制命令的串口数据,MCU接收到数据后解析出GPIO命令并调用上文所提供的底层接口来操作GPIO实现具体的功能。
例如:设置LED1为打开状态,串口写入命令: CMS-GPH-0-1-ED;设置开关2为关闭状态,串口写入命令: CMS-GPH-4-0-ED;读取开关3的开关状态,串口写入命令: CMS-GPH-5-ED。
当第二数据为I2C格式的数据时,若控制芯片U2上的I2C总线连接了显示配置芯片、电池及EEPROM;单片机内部I2C通信协议属于行业规范,官方有相关的开发SDK提供,本文不做讲述。这里只介绍针对上述应用的底层接口封装协议,如下:Byte Eeprom_Read(intregAddr),读取任意地址的EEPROM数据;Byte Eeprom_Write(int regAddr,byte data),向EEPROM任意位置写入数据;bool Lcd_SetColorDepth(int colorDepth),设置LCD色深;Byte Lcd_GetColorDepth()
获取LCD当前色深;bool Lcd_SetPwmMode(int pwmode),设置LCD背光由CPU或转换芯片控制;Byte Lcd_GetPwmMode(),获取当前LCD背光控制模式;bool Lcd_SetBrightness(int brightness),如果当前背光由转换芯片控制,该函数设置背光亮度;Byte Lcd_GetBrightness(),获取LCD背光亮度;Byte Lcd_Read(int regAddr),读取Lcd转换芯片指定地址的寄存器值;Byte Lcd_Write(int regAddr,byte data),设置Lcd转换芯片指定地址的寄存器值;bool Bat_Read(int regAddr),读取电池寄存器值;Int Bat_GetDesignCap(),获取电池设计容量;Int Bat_GetRemainCap(),获取电池剩余容量;IntBat_GetDesignVolt(),获取电池设计电压;Int Bat_GetCurrent(),获取电池当前电流;Int I2C_Read(int slaveAddr,int regAddr),Int I2C_Write(int slaveAddr,intregAddr,int data),以上两个函数实现I2C总线读写,可以完成对任意I2C设备进行数据访问,在使用时需要向协议层开放这两个函数。
在如何将I2C通信命令封装成串口数据以及命令的格式定义。处理芯片U1端的应用程序参考这里的协议构建和控制芯片U2联系的通道。对于I2C来说,最基础的操作是读写从设备寄存器内容,所以我们至少封装以下三个I2C命令,
包括以下命令:
设置I2C设备寄存器值:CMS-I2CH-[SlaveAddress]-[RegAddr]-[wData]-ED;
I2C设备读命令: CMS-I2CH-[ SlaveAddress]- [RegAddr]-ED;
读命令返回的数据包格式:CMS-I2CD-[rData]-ED;
CMS: 命令的起始位置;
ED:命令的结束位置;
I2CH: 表示命令发送方向是从HOST到设备;
I2CD:表示命令发送方向是从设备到HOST;
SlaveAddress:I2C从设备地址,I2C总线下可以连接多个从设备,没有设备的地址不一样,如果要操作特定设备,需要正确填写设备的从地址;
RegAddr:要读写的寄存器地址;
wData:要写入的寄存器值;
rData:表示读取到的寄存器值。
完成一次I2C总线数据通信的完整流程:应用层打开正确的串口并发出封装了I2C读写命令的串口数据,MCU接收到数据后解析出I2C命令并调用章节上文中提供的底层接口来操作I2C总线实现具体的功能。
例如:
向EEPROM寄存器地址0x52写入0x55,串口写入命令:CMS-I2CH-18-52-55-ED;
设置LCD背光由CPU背光总线控制,串口写入命令:CMS-I2CH-12-A5-80-ED。
当第二数据为CAN格式的数据时,在控制芯片U2中,也就是STM32F103内部集成完整的CAN控制器,软件标准兼容CAN2.0B. 因此控制芯片U2实现了CAN通信的完整解决方案,所以这里移除了底层实现而只在底层CAN之上加一层协议层。实现这一层主要是为了保持与上层设备的访问接口保持一致,便于代码编写以及维护和移植。
对于CAN来说,最基础的操作就是读写以及速度配置,所以我们至少封装两个以上的CAN命令,它们包括:
CAN数据发送命令:CMS-CANH-W-[wString]-ED;
接收CAN数据命令,CMS-CANH-R-ED;
CAN数据包,CMS-CAND-[GetString]-ED;设置CAN通信速度,
CMS-CANH-SPEED:[speed]-ED;
其中,
CMS:命令的起始位置;
ED:命令的结束位置;
CANH:表示指令的方向是从HOST到MCU;
CAND: 表示指令的方向是从MCU到HOST;
W: 指示这是一个写命令;
R::指示这是一个读命令;
SPEED:[speed]:设定CAN总线的速度;
wString:表示要发送到CAN总线上的字符串;
CAND:标识CAN包是一个数据包;
GetString:接收到的CAN字符串。
完成一次CAN总线数据通信的完整流程:处理芯片U1的应用层打开正确的串口并发出封装了CAN读写命令的串口数据,控制芯片U2接收到数据后解析出CAN命令并调用CAN底层接口完成通信。
例如:
CAN总线发送数据“uuuuuuuuu”,串口写入命令: CMS-CANH-W-uuuuuuuuu-ED;
接收CAN数据,串口写入命令:CMS-CANH-R-ED;
串口收到MCU的反馈信息:CMS-CAND-[GetString]-ED。
通过采用上述方法,能够使用实施例1中的系统完成上层模块与底层模块之间的数据交换。具有以下效果:不用单独开发windows驱动程序,所有设备唯一的通信接口是标准串口可以做到平台无关;将MCU以及下级设备封装做成一个串口模块,可以在不同平台之间随意切换而不用做任何软件修改;应用层实现简单,只需要打开串口发送命令即可,不需要兼容各种不同驱动的访问接口。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种使用UART实现多功能低速IO的设备,包括上层模块和底层模块,其特征在于,还包括用于连接上层模块与底层模块的中间层模块;所述上层模块为处理芯片U1,所述处理芯片U1支持UART通信协议;所述底层模块包括多种外设设备,多种所述外设设备分别采用不同的低速IO;
所述中间层模块包括第一连接单元、多个第二连接单元和控制单元,其中,
第一连接单元,与处理芯片U1连接,用于传输第一数据;
多个第二连接单元,分别与多种外设设备连接,用于传输第二数据;
控制单元,用于接收第一数据和第二数据,并将第一数据转换为第二数据输出或将第二数据转换为第一数据输出。
2.根据权利要求1所述的一种使用UART实现多功能低速IO的设备,其特征在于,所述第一连接单元为URAT总线,包括标准的UART总线或虚拟的UART总线。
3.根据权利要求1所述的一种使用UART实现多功能低速IO的设备,其特征在于,所述底层模块包括支持GPIO数据传输协议、I2C数据传输协议、SPI数据传输协议或CAN数据传输协议的外设设备。
4.根据权利要求3所述的一种使用UART实现多功能低速IO的设备,其特征在于,所述第二连接单元包括GPIO总线、I2C总线、SPI总线和CAN总线。
5.根据权利要求3所述的一种使用UART实现多功能低速IO的设备,其特征在于,所述控制单元包括控制芯片U2,所述控制芯片U2内设置有多个用于控制低速IO 的IO控制器,包括GPIO控制器、I2C控制器、SPI控制器和CAN控制器。
6.根据权利要求5所述的一种使用UART实现多功能低速IO的设备,其特征在于,多个所述IO控制器均包括控制逻辑单元、变换器和缓冲器,其中,
所述控制逻辑单元,用于解析第二数据中所包含的控制信息、状态信息和数据,并输出相应的控制逻辑到外设设备;
所述变换器,用于在电信号形式和其他形式的设备数据之间进行转换;
所述缓冲器,用于保存转换过程中产生的数据信息。
7.一种使用UART实现多功能低速IO的方法,其特征在于,包括以下步骤,
S1,获取上层模块输出的第一数据或底层模块输出的第二数据,所述第一数据和第二数据均包括控制信息、状态信息和数据;
S2,使用控制单元解析第一数据,通过控制信息获取其传输方向,所述控制信息中包含了第一数据所控制的外设设备,并将第一数据转换为第二数据,通过第二连接单元将第二数据传输到相应的外设设备;
S3,将第二数据转换为第一数据,通过第一连接单元传输到处理芯片U1。
8.根据权利要求7所述的一种使用UART实现多功能低速IO的方法,其特征在于,所述传输方向为上层设备传输到GPIO、I2C、SPI或CAN低速IO的方向。
9.根据权利要求8所述的一种使用UART实现多功能低速IO的方法,其特征在于,所述将第一数据转换为第二数据的方法包括但不限于:UART数据转GPIO数据的方法、UART数据转I2C数据的方法、UART数据转SPI数据的方法或UART数据转CAN数据的方法。
10.根据权利要求7所述的一种使用UART实现多功能低速IO的方法,其特征在于,所述将第二数据转换为第一数据的方法包括但不限于:GPIO数据转UART数据的方法、I2C数据转UART数据的方法、SPI数据转UART数据的方法或CAN数据转UART数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110999787.7A CN113448898A (zh) | 2021-08-30 | 2021-08-30 | 一种使用uart实现多功能低速io的设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110999787.7A CN113448898A (zh) | 2021-08-30 | 2021-08-30 | 一种使用uart实现多功能低速io的设备和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448898A true CN113448898A (zh) | 2021-09-28 |
Family
ID=77818828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110999787.7A Pending CN113448898A (zh) | 2021-08-30 | 2021-08-30 | 一种使用uart实现多功能低速io的设备和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448898A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201263157Y (zh) * | 2008-08-20 | 2009-06-24 | 广州致远电子有限公司 | 一种小型嵌入式UART接口转CAN-bus网络模块 |
CN104794088A (zh) * | 2015-04-22 | 2015-07-22 | 成都为开微电子有限公司 | 一种多接口总线转换扩展芯片设计 |
CN205862322U (zh) * | 2016-06-21 | 2017-01-04 | 浪潮集团有限公司 | 一种基于fpga的spi/i2c接口转换器 |
CN106951381A (zh) * | 2017-03-21 | 2017-07-14 | 成都为开微电子有限公司 | 一种uart扩展芯片及实现方法 |
CN209373587U (zh) * | 2019-03-29 | 2019-09-10 | 江西安百川电气有限公司 | 一种通讯接口电路 |
WO2020103099A1 (zh) * | 2018-11-22 | 2020-05-28 | 北京比特大陆科技有限公司 | 数据处理装置 |
CN111666242A (zh) * | 2020-06-09 | 2020-09-15 | 湖南泽天智航电子技术有限公司 | 一种基于飞腾平台lpc总线的多路通信系统 |
-
2021
- 2021-08-30 CN CN202110999787.7A patent/CN113448898A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201263157Y (zh) * | 2008-08-20 | 2009-06-24 | 广州致远电子有限公司 | 一种小型嵌入式UART接口转CAN-bus网络模块 |
CN104794088A (zh) * | 2015-04-22 | 2015-07-22 | 成都为开微电子有限公司 | 一种多接口总线转换扩展芯片设计 |
CN205862322U (zh) * | 2016-06-21 | 2017-01-04 | 浪潮集团有限公司 | 一种基于fpga的spi/i2c接口转换器 |
CN106951381A (zh) * | 2017-03-21 | 2017-07-14 | 成都为开微电子有限公司 | 一种uart扩展芯片及实现方法 |
WO2020103099A1 (zh) * | 2018-11-22 | 2020-05-28 | 北京比特大陆科技有限公司 | 数据处理装置 |
CN209373587U (zh) * | 2019-03-29 | 2019-09-10 | 江西安百川电气有限公司 | 一种通讯接口电路 |
CN111666242A (zh) * | 2020-06-09 | 2020-09-15 | 湖南泽天智航电子技术有限公司 | 一种基于飞腾平台lpc总线的多路通信系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101276488B (zh) | 一种可实现智能can总线通信的车载记录仪 | |
US7725630B2 (en) | Protocol adapter for passing diagnostic messages between a host computer and vehicle networks operating in a J1989 or J1708 protocol | |
CN101000597A (zh) | 一种基于AMBA总线的嵌入式Java处理器IP核 | |
CN107911391A (zh) | 一种基于fpga的axi协议与spi协议转换的方法 | |
CN103259542B (zh) | 用于模数转换器的低延时模间触发器串行接口 | |
CN106571657A (zh) | 终端、转换器以及连接转换系统和方法 | |
CN107977212A (zh) | 支持多种通讯方式的高速烧录器 | |
CN102801818B (zh) | 基于ZigBee技术的传感器通用接口采集系统 | |
CN111931442B (zh) | Fpga内嵌flash控制器及电子装置 | |
CN108304336A (zh) | 一种信号处理装置和方法 | |
CN205563260U (zh) | 基于智慧工厂的多功能数据采集器及采集系统 | |
CN117278890B (zh) | 光模块访问方法、装置、系统、电子设备及可读存储介质 | |
CN102637453A (zh) | 一种包括串行输入输出接口的相变存储器 | |
CN202038816U (zh) | 一种基于arm cortex-m3芯片的仪表 | |
CN112187368A (zh) | 一种基于qsfp28封装的10通道mlg光模块 | |
CN108920193A (zh) | Fpga和cpu间sdio通信接口实现方法、及装置 | |
CN109525472B (zh) | 一种总线通讯转换电路、装置及系统 | |
CN106980587A (zh) | 一种通用输入输出时序处理器及时序输入输出控制方法 | |
CN113448898A (zh) | 一种使用uart实现多功能低速io的设备和方法 | |
CN201312329Y (zh) | 基于at89c51为处理器的lon-can网关设备 | |
Corcoran | Two wires and 30 years: A tribute and introductory tutorial to the I2C two-wire bus | |
CN100373369C (zh) | 控制器及多个可编程逻辑器件的组合访问装置及方法 | |
CN106502911A (zh) | 多终端接入装置 | |
CN101344874B (zh) | 控制i2c器件的方法及装置 | |
CN201812284U (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210928 |