SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外围扩展芯片之间的串行衔接,现已开展成为一种工业规范,现在,各半导体公司推出了许多的带有SPI接口的具有各式各样功用的芯片,如RAM,EEPROM,FlashROM,A/D转换器、D/A转换器、LED/LED显现驱动器、I/O接口芯片、实时时钟、UART收发器等等,为用户的外围扩展供给了极端灵敏而价廉的挑选。因为SPI总线接口只占用微处理器四个I/O口线,选用SPI总线接口能够简化电路没计,节约许多惯例电路中的接口器材和I/O口线,进步规划的可靠性。
93C46存储器SPI总线的作业原理
93CA6作为从设备,其SPI接口运用4条I/O口线:串行时钟线(SK)、输出数据线DO、输入数据线DI和高电平有用的从机挑选线CS。其数据的传输格局是高位(MSB)在前,低位(LsB)在后。93C46的SPI总线接口读指令时序如图2所示。
软件模仿SPI接口的完成办法
- //首要界说好I/O口
- sbit
SDO=P1^0; - sbit
SDI=P1^1; - sbit
SCK=P1^ 2; - sbit
SCS=P1^3; - sbit
ACC_7= ACC^7; - unsigned
int SpiRead(unsigned char add) - {
unsigned char i; unsigned int datal6; add&=0x3f; add |=0x80; SDO=1; SCK=0; SCK=1; for(i=0;<8;i++) { if(add&0x80==1) SDO=1; else SDO=0; SCK=0; SCK=1; add<<= 1; } SCK=1; SCK=0; datal6<<= 1; for(i=0;<16;i++) { SCK= 1; _nop_(); if(SDI==1) datal6|=0x01; SCK =0; datal6< < =1; } return datal6; - }