CN103914414A - 基于i/o端口的spi模拟方法和装置 - Google Patents
基于i/o端口的spi模拟方法和装置 Download PDFInfo
- 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
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端口,具备内部上拉电阻,其输出缓冲器具备对称的驱动特性,可以吸收或者输出大电流。系统复位时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。
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)
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)
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的方法 |
-
2012
- 2012-12-30 CN CN201210592710.9A patent/CN103914414A/zh active Pending
Patent Citations (3)
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)
Title |
---|
张经爱 等: "基于MSP430的模拟SPI串口通信的实现", 《计算机工程与设计》 * |
Cited By (4)
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 |