一种适应多种不同设备的SPI总线控制方法技术

技术编号:28373389 阅读:38 留言:0更新日期:2021-05-08 00:00
本发明专利技术公开了一种适应多种不同设备的SPI总线控制方法,包括初始化主控制器Master的SPI总线接口,将片选控制信号采用GPIO口单独定义;配置与片选控制信号相连的GPIO为普通输出引脚功能;依次对每个Slave器件执行:根据Slave器件的属性,配置主控制器Master的SPI通信模块的配置寄存器的参数值;通过片选控制信号实现主控制器Master与Slave器件数据的发送和接收,完成通信后置高所有Slave器件的片选控制信号,结束SPI通信模块的工作。本发明专利技术利用Master自带的SPI接口来实现兼容多种SPI特性外围器件的通信需求,不占用多余的GPIO口。

【技术实现步骤摘要】
一种适应多种不同设备的SPI总线控制方法
本专利技术涉及数据传输
,具体的说,是一种适应多种不同设备的SPI总线控制方法。
技术介绍
SPI总线是一种全双工同步串行端口,广泛应用在MCU、DSP、FPGA等主控制器(Master)与EEPROM、Flash、ADC芯片等外围设备之间。其特点是通过MOSI和MISO线路可同步且高速完成数据收发。SPI总线中仅有一个主器件,以及一或多个从器件。某些主控制器,其本身仅一个SPI接口,而系统却需要主控制器能与多个SPI设备通信。若所有外围SPI器件的传输特性完全一致,则Master的单SPI口就可满足通信要求;若多个从器件的SPI特性各不相同,则Master的单SPI就无法满足通信要求。为了解决单SPI口无法兼容多个不同特性设备的通信问题,目前的解决方法是,用主控制器的通用输入输出口(GPIO)配合软件,实现模拟SPI通信。此方法一方面会占用较多的输入输出口,另方面模拟SPI在普适度、通信效率、抗干扰性、中断接收功能等方面无法达到自带SPI通信的优良效果。
技术实现思路
本专利技术的目的在于提供一种适应多种不同设备的SPI总线控制方法,用于解决现有技术中采用模拟SPI通信解决单SPI接口无法兼容多个不同特性设备会占用较多的输入输出口以及在通信效率、抗干扰性、中断接收功能方面效果不佳的问题。本专利技术通过下述技术方案解决上述问题:一种适应多种不同设备的SPI总线控制方法,包括:步骤S1:初始化主控制器Master的SPI总线接口,包括MOSI(SPIBusMasterOutput/SlaveInput,SPI总线主输出/从输入)、MISO(SPIBusMasterInput/SlaveOutput,SPI总线主机输入/从机输出)和SPICLK(时钟信号,由主控制器产生),将片选控制信号采用其他GPIO口单独定义;步骤S2:配置SPI总线上所有Slave器件的片选控制信号相连的GPIO为普通输出引脚功能;步骤S3:根据与SPI总线接口通信的Slave器件的顺序,依次对每个Slave器件执行如下操作:根据与主控制器Master通讯的Slave器件的属性,配置主控制器Master的SPI通信模块的配置寄存器的参数值;配置寄存器包括发送缓冲寄存器和接收数据寄存器;通过片选控制信号实现主控制器Master与Slave器件数据的发送和接收,完成主控制器Master与Slave器件的数据通信;如:最先与SPI接口通信的是Slave1器件,则根据Slave1器件的属性,配置Master的SPI通信模块的参数;通过控制Slave1器件的片选控制信号CS1的使能/失效,完成与Slave1器件的数据通信,数据阶段通信完成后,使slave1器件的片选控制信号CS1失效,再根据下一个与主控制器Master通信的Slave器件的属性,重新配置Master的SPI通信模块的参数值,再次通过片选控制信号的使能/失效,完成Slave器件与主控制器Master的通信,其他Slave器件的通信采用同样进行;所有Slave器件的SPI通信完成后,进入下一步;步骤S4:置高所有Slave器件的片选控制信号,关中断,结束SPI通信模块的工作。本专利技术相对于现有技术中采用GPIO模拟SPI口而言,占用端口少、研发耗时短,无论在主控制器资源占用,还是实现难易程度和系统可靠性上,本专利技术都更具优势。通过片选控制信号实现主控制器Master与Slave器件数据的发送和接收具体为:步骤A1:置低该Slave器件的片选控制信号,向发送缓冲寄存器写入数据,启动与该Slave器件的通信进程,在时钟节拍下一位一位的移位,同时通过MISO接收数据,发送完毕,中断标志位置1;步骤A2:在数据传输完成后读取接收缓冲区,将数据存储到接收数据寄存器中;步骤A3:重复步骤A1和步骤A2,直到与该Slave器件的阶段通信全部完成;将该Slave器件的片选控制信号置高。所述配置寄存器的参数值包括相位、极性、波特率、单次发送位数、主从选择、高位先传与否和中断使能。本专利技术与现有技术相比,具有以下优点及有益效果:(1)本专利技术利用Master自带的SPI接口来实现兼容多种SPI特性外围器件的通信需求,不占用多余的GPIO口。(2)本专利技术相比模拟SPI的方法,方法简单、主控制器资源占用少、实现容易和系统可靠性高。(3)本专利技术适用于一主对多个不同SPI特性的从器件,从器件数量可根据实际需要超过两个以上,且从器件的SPI特性可完全不相同,适用于比如通信频率、相位、极性不同且无法兼容的场景。(4)本专利技术中主器件连接多个从器件,为每一个从器件配置一个片选信号,主器件仅对选中的从器件进行通信,不会发生数据冲突和传输线干扰,系统结构更简单更易于实现。附图说明图1为本专利技术第一种实施方式的流程图;图2为本专利技术的原理框图。具体实施方式下面结合实施例对本专利技术作进一步地详细说明,但本专利技术的实施方式不限于此。实施例1:结合图2所示,某品牌电池管理系统,主控制器采用某款32bitDSP芯片,自带一个SPI接口;系统有两片电池数据采样芯片(1#Slave和2#Slave)、两片铁电存储器芯片(3#Slave和4#Slave)均是通过SPI与主控制器Master进行数据传输,也即SPI总线上有1主4从。其中:采样芯片的SPI特性为:空闲时CLK(实际工作时的时钟)为高电平,在第二个时钟边沿输出数据;最高有效位MSB先发高位,单次发送16位,最快1Mbps的传输速率。存储器芯片的SPI特性为:空闲时CLK为高或低电平,在第一个时钟边沿输出数据,MSB先发高位,单次发送8位,最快40Mbps的传输速率。为达到系统对电池参数既能采样又可存储的目的,结合附图1所示,可按以下步骤解决:步骤1,对主控制器的自带SPI口完成GPIO(GeneralPurposeI/OPorts,通用输入/输出端口),通用输入输出口)的初始化,包括MOSI、MISO和SPICLK的初始化定义;步骤2,将四个GPIO口分别定义为1#~4#芯片的使能信号CS1、CS2、CS3、CS4,并将CS1、CS2、CS3、CS4初始化为高,即置1;步骤3,根据采样芯片的SPI属性,初始化Master的SPI极性(CLKPOLARITY)为“1”,相位(CLK_PHASE)为“0”,波特率(Baudrate)为“500Khz”,发送字节位数(SPICHAR)为“15”、主从选择(MASTER_SLAVE)为“1”、接收中断使能(SPIRXINTA)为“1”;并完成其他功能模块的初始化;步骤4,置低CS1,向发送缓冲寄存器SPITXBUF写入数据,启动与1#的SPI通信,先发送最高位;在SPICLK节拍下一位一位移到MOSI;同时接收数据通过从出主入接收数据。移位完毕,中断标志位置本文档来自技高网...

【技术保护点】
1.一种适应多种不同设备的SPI总线控制方法,其特征在于,包括:/n步骤S1:初始化主控制器Master的SPI总线接口,包括MOSI、MISO和SPICLK,将片选控制信号采用其他GPIO口单独定义;/n步骤S2:配置SPI总线上所有Slave器件的片选控制信号相连的GPIO为普通输出引脚功能;/n步骤S3:根据与SPI总线接口通信的Slave器件的顺序,依次对每个Slave器件执行如下操作:/n根据与主控制器Master通讯的Slave器件的属性,配置主控制器Master的SPI通信模块的配置寄存器的参数值;配置寄存器包括发送缓冲寄存器和接收数据寄存器;/n通过片选控制信号实现主控制器Master与Slave器件数据的发送和接收,完成主控制器Master与Slave器件的数据通信;/n步骤S4:置高所有Slave器件的片选控制信号,关中断,结束SPI通信模块的工作。/n

【技术特征摘要】
1.一种适应多种不同设备的SPI总线控制方法,其特征在于,包括:
步骤S1:初始化主控制器Master的SPI总线接口,包括MOSI、MISO和SPICLK,将片选控制信号采用其他GPIO口单独定义;
步骤S2:配置SPI总线上所有Slave器件的片选控制信号相连的GPIO为普通输出引脚功能;
步骤S3:根据与SPI总线接口通信的Slave器件的顺序,依次对每个Slave器件执行如下操作:
根据与主控制器Master通讯的Slave器件的属性,配置主控制器Master的SPI通信模块的配置寄存器的参数值;配置寄存器包括发送缓冲寄存器和接收数据寄存器;
通过片选控制信号实现主控制器Master与Slave器件数据的发送和接收,完成主控制器Master与Slave器件的数据通信;
步骤S4:置高所有Slave器件的片选控制信号,关中断,结束SPI通...

【专利技术属性】
技术研发人员:李珣李明阳黄勇李晓冬代高强
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1