SPI(Serial Peripheral Interrace,串行外设接口)是摩托罗拉公司推出的一种同步串行通讯总线,用于微处理器/微控制器和外围扩展芯片之间的串行衔接,现已开展成为一种工业规范。讯通科技的PTR8000无限通讯模块就是以SPI为通讯接口的器材,咱们其优胜的功用被广泛运用于很多范畴。它的SPI接口需求占用微处理器四个I/O线。SPCE061A是凌阳公司的推出的具有语音功用的16位单片机,I/O资源丰富,但不具有SPI接口。在实践运用中,出于产品体积、本钱和可扩展性及运用场合等方面的考虑,咱们挑选二者结合组成无线通讯体系,用软件模仿办法完成SPI串口通讯,限于篇幅,仅介绍读指令的时序和运用子程序。此办法相同适用于其他不具有SPI接口的MCU与SPI接口器材的通讯。
1 SPCE061A板与PTR8000硬件衔接
图1所示为SPCE061A单片机与PTR8000的硬件衔接图。
2 PTRS000通讯模块的SPI总线的作业原理
PTR8000通讯模块作为从设备,其SPI接口运用4条I/O口线:串行时钟线SCK、输出数据线MISO、输入数据线MOSI和高电平有用的从机挑选线CSN。PTR8000的SPI总线接口读指令时序如图2所示。写指令如图3所示。
3软件模仿SPI接口的完成办法
关于不具有SPI串行总线接口的SPCE061A单片机来说,能够运用软件来模仿SPI的操作。图1中IOBl模仿SPI主设备的数据输出端SDO,IOB0模仿SPI的时钟输出端SCK,IOA4模仿SPI的从机挑选端CSN,IOB9模仿SPI的数据输入端SDI。
上电复位后首要将IOB0(SCK)的初始状况设置为0(闲暇状况)。
读操作:SPCE061A首要经过IOB1口发送1位开始位(1),2位操作码(10),6位被读的数据地址,然后经过IOB9口读1位空位,之后再读16位数据(高位在前)。
写操作:SPCE061A首要经过IOB1口发送1位开始位(1),2位操作码(01),6位被写的数据地址,之后经过IOB1口发送被写的16位数据(高位在前),写操作之前要发送写答应指令,写之后要发送写制止指令。
写答应操作(WEN):写操作首要发送l位开始位(1),2位操作码(00),6位数据(11XXXX)。
写制止操作(WDS):写操作首要发送1位开始位(1),2位操作码(00),6位数据(00XXXX)。
下面介绍用SPCE061A模仿SPI的子程序。
关于不同的串行接口外围芯片,它们的时钟时序是不同的。上述子程序是针对在SCK的上升沿输入(接纳)数据和在下降沿输出(发送)数据的器材。这些子程序也适用于在串行时钟的上升沿输入和下降沿输出的其他各种串行外围接口芯片,只要在程序中改动IOB0(SCK)的输出电平次序进行相应调整即可口。
4结 语
本文介绍了经过软件模仿SPI总线接口,完成非SPI接口单片机与SPI接口的存储器之间数据传输的完成办法,给出了用SPCE061A编写的模仿SPI串行总线读PTR8000的子程序。该办法相同适用于其他单片机、ARM、微型计算机等。