您的位置 首页 元件

单片机软件模仿SPI接口

SPI(SerialPeripheralInterfacer串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外围扩展芯片之间

SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外围扩展芯片之间的串行衔接,现已开展成为一种工业规范,现在,各半导体公司推出了许多的带有SPI接口的具有各式各样功用的芯片,如RAM,EEPROM,FlashROM,A/D转换器、D/A转换器、LED/LED显现驱动器、I/O接口芯片、实时时钟、UART收发器等等,为用户的外围扩展供给了极端灵敏而价廉的挑选。因为SPI总线接口只占用微处理器四个I/O口线,选用SPI总线接口能够简化电路没计,节约许多惯例电路中的接口器材和I/O口线,进步规划的可靠性。

现以 AT89C205l单片机模仿SPI总线操作串行EEPROM 93CA6为例,如图1所示,介绍运用单片机的I/O口经过软件模仿SPI总线的完成办法。在这里,仅介绍读指令的时序和运用子程序。

93C46存储器SPI总线的作业原理

93CA6作为从设备,其SPI接口运用4条I/O口线:串行时钟线(SK)、输出数据线DO、输入数据线DI和高电平有用的从机挑选线CS。其数据的传输格局是高位(MSB)在前,低位(LsB)在后。93C46的SPI总线接口读指令时序如图2所示。

软件模仿SPI接口的完成办法

关于不带SPI串行总线接口的AT89C2051单片 机来说,能够运用软件来模仿SPI的操作,图1所示 为AT89C2051单片机与串行EEPROM 93C46的硬件 衔接图,其间,P1.0模仿SPI主设备的数据输出端 SDO,P1.2模仿SPI的时钟输出端SCK,P1.3模仿 SPI的从机挑选端SCS,P1.1模仿SPI的数据输入 SDI。
上电复位后首要先将P1.2(SCK)的初始状况设置为0(闲暇状况)。
读操作:AT89C2051首要经过P1.0口发送1位开始位(1),2位操作码(10),6位被读的数据地址(A5A4A3A2A1A0),然后经过P1.1口读1位空位(0),之后再读l6位数据(高位在前)。
写操作:AT89C2051首要经过P1.0口发送1位开始位(1),2位操作码(01),6位被写的数据地址(A5A4A3A2A1A0),之后经过P1.0口发送被写的l6位数据(高位在前),写操作之前要发送写答应指令,写之后要发送写制止指令。
写答应操作(WEN)):写操作首要发送1位开始位(1),2位操作码(00),6位数据(11XXXX)。

写制止操作(WDS)):写操作首要发送1位开始位(1),2位操作码(00),6位数据(00XXXX)。
下面介绍用C51模仿SPI的子程序。
[cpp]view plaincopyprint?
  1. //首要界说好I/O口
  2. sbitSDO=P1^0;
  3. sbitSDI=P1^1;
  4. sbitSCK=P1^2;
  5. sbitSCS=P1^3;
  6. sbitACC_7=ACC^7;
  7. unsignedintSpiRead(unsignedcharadd)
  8. {
  9. unsignedchari;
  10. unsignedintdatal6;
  11. add&=0x3f;
  12. add|=0x80;
  13. SDO=1;
  14. SCK=0;
  15. SCK=1;
  16. for(i=0;<8;i++)
  17. {
  18. if(add&0x80==1)
  19. SDO=1;
  20. else
  21. SDO=0;
  22. SCK=0;
  23. SCK=1;
  24. add<<=1;
  25. }
  26. SCK=1;
  27. SCK=0;
  28. datal6<<=1;
  29. for(i=0;<16;i++)
  30. {
  31. SCK=1;
  32. _nop_();
  33. if(SDI==1)
  34. datal6|=0x01;
  35. SCK=0;
  36. datal6<<=1;
  37. }
  38. returndatal6;
  39. }

关于不同的串行接口外围芯片,它们的时钟时序是不同的。上述子程序是针对在SCK的上升沿输入(接纳)数据和在下降沿输出(发送)数据的器材。这些子程序也适用于在串行时钟)的上升沿输入和下降沿输出的其它各种串行外围接口芯片,只要在程序中改动P1.2(SCK)的输出电平次序进行相应调整即可。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/256040.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部