CN103914414A - 基于i/o端口的spi模拟方法和装置 - Google Patents

基于i/o端口的spi模拟方法和装置 Download PDF

Info

Publication number
CN103914414A
CN103914414A CN201210592710.9A CN201210592710A CN103914414A CN 103914414 A CN103914414 A CN 103914414A CN 201210592710 A CN201210592710 A CN 201210592710A CN 103914414 A CN103914414 A CN 103914414A
Authority
CN
China
Prior art keywords
port
spi
sck
numerical value
mosi
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
Application number
CN201210592710.9A
Other languages
English (en)
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.)
Aisino Corp
Original Assignee
Aisino Corp
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 Aisino Corp filed Critical Aisino Corp
Priority to CN201210592710.9A priority Critical patent/CN103914414A/zh
Publication of CN103914414A publication Critical patent/CN103914414A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明实施例提供一种使用I/O端口扩展SPI的方法,利用嵌入式处理器和具有输出缓冲器I/O端口,具有输出缓冲器I/O端口为嵌入式处理器集成的输入输出端口,且该端口不是SPI,使用软件编程的方式实现I/O端口对SPI的模拟。由于采用上述技术方案,本发明具有的优点和积极效果是:方便灵活地扩展嵌入式处理器与外设的连接方法。

Description

基于I/O端口的SPI模拟方法和装置
技术领域
本发明涉及一种端口模拟技术,尤其是基于输入输出端口(I/O)的串行外围设备接口(SPI)模拟技术。
背景技术
鉴于在嵌入式系统中需要集成各种外设,而嵌入式处理器本身的端口配置又具有相当的局限性。当使用同一端口类型的设备集成到一个嵌入式系统时,系统端口资源便会短缺。为更好的解决这一问题,需要使用普通I/O端口以软件编程的方式模拟SPI,扩展端口资源,提高系统兼容性。
目前大多数嵌入式处理器均具有双向可编程I/O端口,具备内部上拉电阻,其输出缓冲器具备对称的驱动特性,可以吸收或者输出大电流。系统复位时I/O端口呈现三态特性。由于多数嵌入式系统设备都是TTL电平兼容的,而TTL电平信号与集成电路连接不需要价格昂贵的线路驱动,所以通过I/O端口实现对SPI的模拟是切实可行的。通过软件编程对SPI的时序进行模拟,参照SPI通信协议有规律地操作I/O端口高低的电平变化,同时满足外部设备工作时序要求,便可以设计实现I/O模拟SPI,完成对外部设备数据的输出。
串行接口SPI允许主机和外设之间进行高速的同步数据传输。
SPI设备由主机和从机设备组成,通过MOSI(主机输出/从机输人)、MISO(主机输入/从机输出)、SCK(串行时钟)和CS(片选)进行通信。其中,主机产生SCK同步时钟信号,控制所有数据传输时序。主机通过CS信号决定主从设备之间的传输是否能够进行。主机和外设都包含串行移位寄存器。主机通过向寄存器写数据来发起传输,数据通过MOSI传给外设,同时外设将本身移位寄存器中的数据通过MISO返回给主机,便完成了一次数据传输。
发明内容
本发明的目的在于提供一种使用I/O端口扩展SPI的方法。
为实现上述目的,本发明的技术方案是:嵌入式处理器和具有输出缓冲器I/O端口,其特征是:具有输出缓冲器I/O端口为嵌入式处理器集成的输入输出端口,且该端口不是SPI,使用软件编程的方式实现I/O端口对SPI的模拟。
本发明提出了,一种基于I/O端口的SPI模拟方法,该方法包括:
定义并初始化端口:定义四个I/O端口对应SPI协议中MOSI、MISO、SCK、CS四种信号,并初始化所述端口,通过CS信号对应的I/O端口使能外部设备;
判断是否满足循环结束条件,如果为真,则跳出循环;
判断输入数据最高位数值,根据数值将代表MOSI的I/O端口置为相应的值;
将代表SCK的I/O端口电平翻转,使外部设备读入数据;
更新循环条件,输入数据向高位移1位,再次翻转代表SCK的I/O端口电平,返回判断是否满足循环结束条件步骤。
如上所述的方法,所述定义并初始化端口步骤A中,根据设置将代表SCK的I/O端口电平初始化为低电平或者高电平。
如上所述的方法,所述判断是否满足循环结束条件步骤中,为采用累加器或计数器计算发送数据的位数,判断是否发完全部数据。
如上所述的方法,所述判断输入数据最高位数值步骤中,如果输入数据最高位数值为1,则将代表MOSI的I/O端口置为1,如果输入数据最高位数值为0,则将代表MOSI的I/O端口置为0。
如上所述的方法,所述更新循环条件步骤中,为将累加器或计数器计算的数值累加1或递减1。
本发明还提出了,一种基于I/O端口的SPI端口模拟装置,该装置包括:
模块A,定义四个I/O端口对应SPI协议中MOSI、MISO、SCK、CS四种信号,并初始化所述端口,通过CS信号对应的I/O端口使能外部设备;
模块B,判断是否满足循环结束条件,如果为真,则跳出循环;
模块C,判断输入数据最高位数值,根据数值将代表MOSI的I/O端口置为相应的值;
模块D,将代表SCK的I/O端口电平翻转,使外部设备读入数据;
模块E,更新循环条件,输入数据向高位移1位,再次翻转代表SCK的I/O端口电平,返回模块B处理。
如上所述的装置,所述模块A中,根据设置将代表SCK的I/O端口电平初始化为低电平或者高电平。
如上所述的装置,所述模块B中判断是否满足循环结束条件,为采用累加器或计数器计算发送数据的位数,判断是否发完全部数据。
如上所述的装置,所述模块C中,如果输入数据最高位数值为1,则将代表MOSI的I/O端口置为1,如果输入数据最高位数值为0,则将代表MOSI的I/O端口置为0。
如上所述的装置,所述模块E中更新循环条件,为将累加器或计数器计算的数值累加1或递减1。
由于采用上述技术方案,本发明具有的优点和积极效果是:方便灵活地扩展嵌入式处理器与外设的连接方法。
附图说明
图1为本发明实施例提供的结构框图。
图中1-嵌入式处理器单元、2-I/O端口、3-外部设备
图2为本发明实施例提供的实施流程图。
具体实施方式
SPI以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时)。也是所有基于SPI的设备共有的,它们是MOSI(主机输出/从机输人)、MISO(主机输入/从机输出)、SCK(串行时钟)和CS(片选)。
(1)MOSI–SPI总线主机输出/从机输入(SPI Bus MasterOutput/Slave Input);
(2)MISO–SPI总线主机输入/从机输出(SPI Bus MasterInput/Slave Output);
(3)SCK–时钟信号,由主设备产生;
(4)CS–从设备使能信号,由主设备控制(Chip select),有的IC此pin脚叫SS。
其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,MOSI、MISO则基于此脉冲完成数据传输。数据输出通过MOSI线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
本发明是由嵌入式处理器单元1结合外部设备3使用I/O端口2相连接组成的一体装置。
本发明使用I/O端口配合软件编程的方式给出模拟SPI的方案,具体实施流程如图2所示:
步骤201:定义并初始化SPI协议中MOSI、MISO、SCK、CS四位对应的I/O端口,通过CS信号对应的I/O端口使能外部设备。例如通常情况下,将CS信号置为“0”表示选中外部设备。
步骤202:判断是否满足循环结束条件,如果为真,则跳出循环;否则,转步骤203。所述判断可以采用多种方式进行,例如可以累加器或计数器计算发送数据的位数,判断是否完成全部数据的发送。
步骤203:判断输入数据最高位是否为“1”,如果为真,则转步骤204;否则,转步骤205。发送数据是自高位向低位逐个发送的,根据输出数据的最高位数值,相应将输出的数据的管脚置为1或0。
步骤204:置代表MOSI的I/O端口为“1”。
步骤205:置代表MOSI的I/O端口为“0”。
步骤206:置代表SCK的I/O端口为“1”,拉高拉高“SCK”端,使外部设备完成一次移位过程。通常,SCK的空闲电平为低电平,外部设备在SCK的上升沿读入数据,并且移位进行存储。相反,也可以通过设置,使得SCK的空闲电平变为高电平,在下降沿读入数据。
步骤207:更新循环条件,输入数据左移1位,置代表SCK的I/O端口为“0”,返回步骤202。左移1位即表示向高位移1位,则输入数据的最高位更新为下一次即将发送的数据。
在循环进行N次之后,输入的N位数据便完成了基于MOSI位的串行输出,实现了I/O端口模拟SPI的数据传输的过程。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种基于I/O端口的SPI模拟方法,其特征在于,该方法包括:
定义并初始化端口:定义四个I/O端口对应SPI协议中MOSI、MISO、SCK、CS四种信号,并初始化所述端口,通过CS信号对应的I/O端口使能外部设备;
判断是否满足循环结束条件,如果为真,则跳出循环;
判断输入数据最高位数值,根据数值将代表MOSI的I/O端口置为相应的值;
将代表SCK的I/O端口电平翻转,使外部设备读入数据;
更新循环条件,输入数据向高位移1位,再次翻转代表SCK的I/O端口电平,返回判断是否满足循环结束条件步骤。
2.如权利要求1所述的一种基于I/O端口的SPI模拟方法,其特征在于,所述定义并初始化端口步骤中,根据设置将代表SCK的I/O端口电平初始化为低电平或者高电平。
3.如权利要求1所述的一种基于I/O端口的SPI模拟方法,其特征在于,所述判断是否满足循环结束条件步骤中,为采用累加器或计数器计算发送数据的位数,判断是否发完全部数据。
4.如权利要求1所述的一种基于I/O端口的SPI模拟方法,其特征在于,所述判断输入数据最高位数值步骤中,如果输入数据最高位数值为1,则将代表MOSI的I/O端口置为1,如果输入数据最高位数值为0,则将代表MOSI的I/O端口置为0。
5.如权利要求3所述的一种基于I/O端口的SPI模拟方法,其特征在于,所述更新循环条件步骤中,为将累加器或计数器计算的数值累加1或递减1。
6.一种基于I/O端口的SPI模拟装置,其特征在于,该装置包括:
模块A,定义四个I/O端口对应SPI协议中MOSI、MISO、SCK、CS四种信号,并初始化所述端口,通过CS信号对应的I/O端口使能外部设备;
模块B,判断是否满足循环结束条件,如果为真,则跳出循环;
模块C,判断输入数据最高位数值,根据数值将代表MOSI的I/O端口置为相应的值;
模块D,将代表SCK的I/O端口电平翻转,使外部设备读入数据;
模块E,更新循环条件,输入数据向高位移1位,再次翻转代表SCK的I/O端口电平,返回模块B处理。
7.如权利要求6所述的一种基于I/O端口的SPI模拟装置,其特征在于,所述模块A中,根据设置将代表SCK的I/O端口电平初始化为低电平或者高电平。
8.如权利要求6所述的一种基于I/O端口的SPI模拟装置,其特征在于,所述模块B中判断是否满足循环结束条件,为采用累加器或计数器计算发送数据的位数,判断是否发完全部数据。
9.如权利要求6所述的一种基于I/O端口的SPI模拟装置,其特征在于,所述模块C中,如果输入数据最高位数值为1,则将代表MOSI的I/O端口置为1,如果输入数据最高位数值为0,则将代表MOSI的I/O端口置为0。
10.如权利要求8所述的一种基于I/O端口的SPI模拟装置,其特征在于,所述模块E中更新循环条件,为将累加器或计数器计算的数值累加1或递减1。
CN201210592710.9A 2012-12-30 2012-12-30 基于i/o端口的spi模拟方法和装置 Pending CN103914414A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210592710.9A CN103914414A (zh) 2012-12-30 2012-12-30 基于i/o端口的spi模拟方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210592710.9A CN103914414A (zh) 2012-12-30 2012-12-30 基于i/o端口的spi模拟方法和装置

Publications (1)

Publication Number Publication Date
CN103914414A true CN103914414A (zh) 2014-07-09

Family

ID=51040112

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210592710.9A Pending CN103914414A (zh) 2012-12-30 2012-12-30 基于i/o端口的spi模拟方法和装置

Country Status (1)

Country Link
CN (1) CN103914414A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110471865A (zh) * 2019-08-15 2019-11-19 绵阳市维博电子有限责任公司 一种模拟spi通信实现控制器与驱动器通信的方法
CN110798269A (zh) * 2019-09-24 2020-02-14 深圳震有科技股份有限公司 基于gpio实现pcm从机功能的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158855A (zh) * 2007-10-25 2008-04-09 苏州工业园区新大诚科技发展有限公司 串行接口式单片机数据采集系统
CN101847132A (zh) * 2010-05-11 2010-09-29 北京飞天诚信科技有限公司 一种实现串行flash存储器和开关复用i/o线的方法和密钥装置
CN102012877A (zh) * 2010-11-26 2011-04-13 成都智科通信技术有限公司 一种利用cpld来扩展嵌入式处理器gpio的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158855A (zh) * 2007-10-25 2008-04-09 苏州工业园区新大诚科技发展有限公司 串行接口式单片机数据采集系统
CN101847132A (zh) * 2010-05-11 2010-09-29 北京飞天诚信科技有限公司 一种实现串行flash存储器和开关复用i/o线的方法和密钥装置
CN102012877A (zh) * 2010-11-26 2011-04-13 成都智科通信技术有限公司 一种利用cpld来扩展嵌入式处理器gpio的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张经爱 等: "基于MSP430的模拟SPI串口通信的实现", 《计算机工程与设计》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110471865A (zh) * 2019-08-15 2019-11-19 绵阳市维博电子有限责任公司 一种模拟spi通信实现控制器与驱动器通信的方法
CN110471865B (zh) * 2019-08-15 2021-04-02 绵阳市维博电子有限责任公司 一种模拟spi通信实现控制器与驱动器通信的方法
CN110798269A (zh) * 2019-09-24 2020-02-14 深圳震有科技股份有限公司 基于gpio实现pcm从机功能的方法及系统
CN110798269B (zh) * 2019-09-24 2021-12-10 深圳震有科技股份有限公司 基于gpio实现pcm从机功能的方法及系统

Similar Documents

Publication Publication Date Title
CN101706552B (zh) 支持芯片不同引脚封装的可配置式片上测试模块
CN101329663A (zh) 一种实现管脚分时复用的装置及方法
CN101477504B (zh) 数据传输系统及数据传输方法
CN100386754C (zh) 对usb接口设备进行操作的装置及方法
CN203733117U (zh) 接口连接主处理器与从处理器的系统
CN110532211B (zh) 总线系统
CN103454996A (zh) 主从机系统及其控制方法
KR101460665B1 (ko) 메모리 인터페이스를 사용한 SoC 디바이스 검증 모델
CN102866683B (zh) 一种信号转换装置及自动测试系统
CN102122156B (zh) 一种新型i/o总线
CN110858182A (zh) 集成电路、总线系统以及其控制方法
CN110597745A (zh) 一种交换机系统多主多从i2c通信实现方法和装置
CN101876825B (zh) 小型plc的人机界面装置
WO2016076963A1 (en) System and method for preparing partially reconfigurable circuit designs
CN101769988B (zh) 芯片调试方法、系统和调试模块
CN202111685U (zh) 可扩展的开关矩阵板
CN104238517A (zh) 一种profibus-dpv1通信主站及方法
CN105373511A (zh) 一种与多个光模块可同时通信的装置和方法
CN103914414A (zh) 基于i/o端口的spi模拟方法和装置
CN107239423A (zh) 一种基于扩展iic接口的装置
CN104142905B (zh) 一种扩展集成电路总线iic的方法及设备
CN106292544A (zh) 基于pcie接口硬件板卡及其总线控制方法及系统
CN105068962A (zh) I2c控制器访问方法及系统
CN207367195U (zh) 一种iic接口扩展板
CN204065816U (zh) 一种profibus-dpv1通信主站

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into 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: 20140709