CN112765079A - 一种适应多种不同设备的spi总线控制方法 - Google Patents
一种适应多种不同设备的spi总线控制方法 Download PDFInfo
- Publication number
- CN112765079A CN112765079A CN202110075282.1A CN202110075282A CN112765079A CN 112765079 A CN112765079 A CN 112765079A CN 202110075282 A CN202110075282 A CN 202110075282A CN 112765079 A CN112765079 A CN 112765079A
- Authority
- CN
- China
- Prior art keywords
- master
- spi
- slave
- chip selection
- selection control
- 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
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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0012—High speed serial bus, e.g. IEEE P1394
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
本发明公开了一种适应多种不同设备的SPI总线控制方法,包括初始化主控制器Master的SPI总线接口,将片选控制信号采用GPIO口单独定义;配置与片选控制信号相连的GPIO为普通输出引脚功能;依次对每个Slave器件执行:根据Slave器件的属性,配置主控制器Master的SPI通信模块的配置寄存器的参数值;通过片选控制信号实现主控制器Master与Slave器件数据的发送和接收,完成通信后置高所有Slave器件的片选控制信号,结束SPI通信模块的工作。本发明利用Master自带的SPI接口来实现兼容多种SPI特性外围器件的通信需求,不占用多余的GPIO口。
Description
技术领域
本发明涉及数据传输技术领域,具体的说,是一种适应多种不同设备的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(SPI Bus MasterOutput/Slave Input,SPI总线主输出/从输入)、MISO(SPI Bus Master Input/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所示,某品牌电池管理系统,主控制器采用某款32bit DSP芯片,自带一个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(General Purpose I/O Ports,通用输入/输出端口),通用输入输出口)的初始化,包括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。
步骤5,在SPI中断函数中读取SPIRXBUF,将接收到的16bit字节转存到相应的数组,重复步骤4~5,直到所有采样数据的传输完成;
步骤6,置高CS1、置低CS2;重复步骤4~5,完成与2#芯片的采样数据传输过程;
步骤7,置高CS1、CS2,根据铁电存储芯片的SPI属性,重新定义Master的CLKPOLARITY为“0”,CLK_PHASE为“0”,Baudrate为“1Mhz”、SPICHAR为“7”、MASTER_SLAVE为“1”、SPIRXINTA为“1”;
步骤8,置低CS3,写入待发送数据到Master的SPITXBUF,启动与3#芯片的SPI通信;
步骤9,在SPI中断函数中读取SPIRXBUF,将接收到的8bit字节转存到相应的数组,重复步骤8~9,直到所有存储数据的读写完成
步骤10,置高CS3、置低CS4,重复步骤8~9,完成与4#芯片的SPI通信;
步骤11,置高CS1~CS4,将中断使能SPIINTENA置为“0”,结束本次SPI通信过程。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (3)
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通信模块的工作。
2.根据权利要求1所述的一种适应多种不同设备的SPI总线控制方法,其特征在于,通过片选控制信号实现主控制器Master与Slave器件数据的发送和接收具体为:
步骤A1:置低该Slave器件的片选控制信号,向发送缓冲寄存器写入数据,启动与该Slave器件的通信进程,在时钟节拍下一位一位的移位,同时通过MISO接收数据,发送完毕,中断标志位置1;
步骤A2:在数据传输完成后读取接收缓冲区,将数据存储到接收数据寄存器中;
步骤A3:重复步骤A1和步骤A2,直到与该Slave器件的阶段通信全部完成;将该Slave器件的片选控制信号置高。
3.根据权利要求1或2所述的一种适应多种不同设备的SPI总线控制方法,其特征在于,所述配置寄存器的参数值包括相位、极性、波特率、单次发送位数、主从选择、高位先传与否和中断使能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110075282.1A CN112765079A (zh) | 2021-01-20 | 2021-01-20 | 一种适应多种不同设备的spi总线控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110075282.1A CN112765079A (zh) | 2021-01-20 | 2021-01-20 | 一种适应多种不同设备的spi总线控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112765079A true CN112765079A (zh) | 2021-05-07 |
Family
ID=75703535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110075282.1A Pending CN112765079A (zh) | 2021-01-20 | 2021-01-20 | 一种适应多种不同设备的spi总线控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765079A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419985A (zh) * | 2021-06-15 | 2021-09-21 | 珠海市一微半导体有限公司 | Spi系统自动读取数据的控制方法及spi系统 |
CN114880270A (zh) * | 2022-06-02 | 2022-08-09 | 厦门紫光展锐科技有限公司 | Spi设备及其数据传输方法 |
CN116962112A (zh) * | 2023-09-20 | 2023-10-27 | 中国船舶集团有限公司第七〇七研究所 | 基于标准spi总线连接的双机全双工数据透明传输方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508799A (zh) * | 2011-11-30 | 2012-06-20 | 北京宏思电子技术有限责任公司 | 自动控制方法、系统及usb设备 |
CN104714908A (zh) * | 2013-12-13 | 2015-06-17 | 上海华虹集成电路有限责任公司 | 支持主从模式的spi接口 |
CN206757602U (zh) * | 2017-05-24 | 2017-12-15 | 南京典格通信科技有限公司 | 一种基于SoC支持多个SPI接口标准组的装置 |
CN111897749A (zh) * | 2020-06-23 | 2020-11-06 | 中国船舶重工集团公司第七0七研究所 | 基于Quad-SPI控制器与外扩FLASH通信控制系统及方法 |
-
2021
- 2021-01-20 CN CN202110075282.1A patent/CN112765079A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508799A (zh) * | 2011-11-30 | 2012-06-20 | 北京宏思电子技术有限责任公司 | 自动控制方法、系统及usb设备 |
CN104714908A (zh) * | 2013-12-13 | 2015-06-17 | 上海华虹集成电路有限责任公司 | 支持主从模式的spi接口 |
CN206757602U (zh) * | 2017-05-24 | 2017-12-15 | 南京典格通信科技有限公司 | 一种基于SoC支持多个SPI接口标准组的装置 |
CN111897749A (zh) * | 2020-06-23 | 2020-11-06 | 中国船舶重工集团公司第七0七研究所 | 基于Quad-SPI控制器与外扩FLASH通信控制系统及方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419985A (zh) * | 2021-06-15 | 2021-09-21 | 珠海市一微半导体有限公司 | Spi系统自动读取数据的控制方法及spi系统 |
CN114880270A (zh) * | 2022-06-02 | 2022-08-09 | 厦门紫光展锐科技有限公司 | Spi设备及其数据传输方法 |
CN114880270B (zh) * | 2022-06-02 | 2024-05-28 | 厦门紫光展锐科技有限公司 | Spi设备及其数据传输方法 |
CN116962112A (zh) * | 2023-09-20 | 2023-10-27 | 中国船舶集团有限公司第七〇七研究所 | 基于标准spi总线连接的双机全双工数据透明传输方法 |
CN116962112B (zh) * | 2023-09-20 | 2023-12-15 | 中国船舶集团有限公司第七〇七研究所 | 基于标准spi总线连接的双机全双工数据透明传输方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112765079A (zh) | 一种适应多种不同设备的spi总线控制方法 | |
CN102023956B (zh) | 集成电路芯片中串行外设从器件接口结构及数据读写方法 | |
CN107015927B (zh) | 一种基于SoC支持多个SPI接口标准组的装置 | |
CN201583944U (zh) | 一种采用fpga实现基于pci总线的实时采集卡 | |
CN108228492B (zh) | 一种多通道ddr交织控制方法及装置 | |
CN102023954A (zh) | 具有多路i2c总线的装置、处理器、系统主板及工控计算机 | |
EP2466481A1 (en) | Single wire bus system | |
CN104714908B (zh) | 支持主从模式的spi接口 | |
CN104834620A (zh) | 串行外设接口spi总线电路、实现方法以及电子设备 | |
US11630796B2 (en) | Serial peripheral interface (SPI) automatic register address incrementation across data frames | |
CN112256615B (zh) | Usb转换接口装置 | |
CN111948971A (zh) | 一种智能卡管理装置及其数据转接方法 | |
CN102193888A (zh) | 数据传输系统与可编程串行外围设备接口控制器 | |
CN110855996A (zh) | 一种基于fpga的图像编解码与网络传输的方法与装置 | |
JP2024508592A (ja) | Usbインタフェースの多重化方法、回路、電子機器及び記憶媒体 | |
CN109443362A (zh) | 基于dsp和fpga的导航计算机 | |
CN103226531B (zh) | 一种双端口外设配置接口电路 | |
CN107506318A (zh) | 一种软件模拟串行数据传输装置 | |
CN109933553B (zh) | 一种控制系统及其设计方法、一组控制系统、电子装置 | |
WO2005083577A2 (en) | Integrated circuit with two different bus control units | |
CN115328845B (zh) | 一种四线串行外设接口通信协议设计的方法 | |
JPH0381862A (ja) | 車載ネットワークの通信装置及びその通信方法 | |
CN107426118B (zh) | 一种基于mdc/mdio接口的千兆以太网交换电路访问装置 | |
CN102214155A (zh) | 串口服务器 | |
CN106326172B (zh) | 一种APB总线slave接口扩展电路及其使用方法 |
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 |
Application publication date: 20210507 |
|
RJ01 | Rejection of invention patent application after publication |