0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用单片机软件模拟spi接口的操作方法

GReq_mcu168 来源:互联网 作者:佚名 2017-11-13 14:27 次阅读

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的子程序。

  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;/*6位地址*/

  12. add|=0x80;/*读操作码l0*/

  13. SDO=1;/*发送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;/*从设备时钟线下降沿后发送数据,空读1位数据*/

  27. SCK=0;

  28. datal6<<= 1;/*读16位数据*/  

  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)的输出电平顺序进行相应调整即可。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SPI接口
    +关注

    关注

    0

    文章

    240

    浏览量

    33893
  • at89c205l单片机

    关注

    0

    文章

    1

    浏览量

    1089
  • 93c46存储器
    +关注

    关注

    0

    文章

    1

    浏览量

    1250

原文标题:单片机软件模拟SPI接口—加深理解SPI总线协议

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C51软件模拟实现SPI通信接口方法

    语音合成模块带有SCI及SPI接口,如采用不带有SPI接口的AT89C51单片机,必然存在扩展接口
    发表于 05-16 07:00

    分享:51单片机IO软件模拟 SPI 总线

    通过SPI总线接口实现数据传输的实现方法,给出了MCS-51单片机汇编语言模拟
    发表于 08-31 22:38

    AVR单片机与PIC单片机IO口的操作方法有何不同?

    如何去操作51单片机IO口、AVR单片机IO口与PIC单片机IO口?哪一种IO口的操作会更简单一些?其
    发表于 07-07 07:34

    AVR单片机的端口位操作方法

    一、常规方法AVR单片机的各类教材或编程应用参考资料,对介绍的端口位操作方法不外乎宏定义及整体和某个常量相或、相与来实现某一单个位状态的改变。如:PORT&=-(1《1);等价于:PORTB&
    发表于 07-13 08:11

    51单片机通过模拟USB通信的实现方法

    基于高速51单片机模拟USB接口设计作者:廖颂文摘要:参照AVRUSB技术给出了51单片机通过模拟USB通信的实现
    发表于 08-06 07:48

    AVR单片机的端口位操作方法解析

    AVR单片机的端口位操作方法解析来源:未知•作者:工程师周亮•2018年11月22日 16:07•3708次阅读正在上传…重新上传取消​0一、常规方法AVR单片机的各类教材或编程应用参
    发表于 11-23 08:35

    软件模拟SPI时序实现25Q64读写操作方法

    软件模拟SPI时序实现25Q64读写操作单片机采用SPI/IIC通讯协议访问外围电子模块如:显示
    发表于 11-30 07:35

    单片机应用系统的设计方法分享

    实验一 单片机流水灯【实验目的】1、熟练掌握AT89C51开发板的使用方法和注意事项。2、了解简单单片机应用系统的设计方法。3、掌握应用KEIL软件
    发表于 12-01 06:24

    AVR单片机与串行AD的SPI接口设计

    为了解决信号采集系统的同步串行通讯问题,在理解AVR 单片机SPI接口的通讯原 理和方法的基础上,分析了AVR 单片机
    发表于 02-18 16:07 211次下载
    AVR<b class='flag-5'>单片机</b>与串行AD的<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>设计

    详细图文剖析STM32单片机串口一键下载电路与操作方法

    在此介绍STM32单片机串口一键下载电路与操作方法详解。
    的头像 发表于 12-31 23:07 4.6w次阅读
    详细图文剖析STM32<b class='flag-5'>单片机</b>串口一键下载电路与<b class='flag-5'>操作方法</b>

    软件模拟SPI时序实现25Q64读写操作

    软件模拟SPI时序实现25Q64读写操作单片机采用SPI/IIC通讯协议访问外围电子模块如:显示
    发表于 11-20 12:06 6次下载
    <b class='flag-5'>软件</b><b class='flag-5'>模拟</b><b class='flag-5'>SPI</b>时序实现25Q64读写<b class='flag-5'>操作</b>

    51单片机去读取JY61陀螺仪的数据操作方法

    51单片机去读取JY61陀螺仪的数据操作方法
    发表于 11-23 16:20 10次下载
    51<b class='flag-5'>单片机</b>去读取JY61陀螺仪的数据<b class='flag-5'>操作方法</b>

    软件模拟SPI时序实现25Q64读写操作

    软件模拟SPI时序实现25Q64读写操作单片机采用SPI/IIC通讯协议访问外围电子模块如:显示
    发表于 12-22 19:14 15次下载
    <b class='flag-5'>软件</b><b class='flag-5'>模拟</b><b class='flag-5'>SPI</b>时序实现25Q64读写<b class='flag-5'>操作</b>

    单片机软件模拟SPI接口的解决方案

    电子发烧友网站提供《单片机软件模拟SPI接口的解决方案.pdf》资料免费下载
    发表于 10-13 11:31 2次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>软件</b><b class='flag-5'>模拟</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的解决方案

    单片机spi接口的使用方法有哪些(spi接口和串口的区别)

    如果单片机没有硬件SPI模块,或者需要额外的IO引脚来实现多个SPI设备的通信,可以使用软件SPI模拟
    的头像 发表于 11-10 16:38 1103次阅读