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

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

3天内不再提示

利用单片机的I/O口通过软件模拟SPI总线的实现方法

GReq_mcu168 来源:玩转单片机 2020-09-02 11:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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. sbit SDO=P1^0;3. sbit SDI=P1^1;4. sbit SCK=P1^ 2;5. sbit SCS=P1^3;6. sbit ACC_7= ACC^7;7. unsigned int SpiRead(unsigned char add) 8. { 9. unsigned char i;10. unsigned int datal6;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. return datal6;39. }  对于不同的串行接口外围芯片,它们的时钟时序是不同的。上述子程序是针对在SCK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件。这些子程序也适用于在串行时钟)的上升沿输入和下降沿输出的其它各种串行外围接口芯片,只要在程序中改变P1.2(SCK)的输出电平顺序进行相应调整即可。

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

    关注

    6078

    文章

    45589

    浏览量

    673899
  • 微处理器
    +关注

    关注

    11

    文章

    2440

    浏览量

    86164
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1900

    浏览量

    102171

原文标题:单片机软件模拟SPI接口

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    两个MCU之间快速传输数据的方法

    简单、软件编程容易等特点,但目前大多数低端的单片机不具备硬件SPI/I2C外设。 3、可以利用软件
    发表于 01-19 07:07

    单片机系统设计方法

    、接地、提高信噪比、滤波以及电压保护等软件抗于扰主要是通过软件的合理编制降低单片机系统对干扰的灵敏度。解决的技术有指令冗余技术、软件陷阱技术
    发表于 01-06 06:23

    中颖电子8位单片机I/O设置介绍

    在嵌入式系统设计中,单片机I/O端口设置是基础且关键的一环。今天我们来详细解析中颖电子8位单片机I/
    的头像 发表于 12-30 09:37 896次阅读
    中颖电子8位<b class='flag-5'>单片机</b>的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>设置介绍

    单片机的入门准备

    基础,学习单片机就只要花几周的时间就能上手。但学习单片机时,主要从单片机的寄存器开始,其中特殊功能寄存器是重点,学会之后,就可以学习单片机的基础部分了,主要是四个部分:
    发表于 12-22 07:39

    汽车级SPI总线I/O扩展器TXE81XX-Q1:特性、应用与设计要点

    汽车级SPI总线I/O扩展器TXE81XX-Q1:特性、应用与设计要点 在汽车电子系统中,随着功能的不断增加和复杂度的提升,对通用并行输入/输出(I
    的头像 发表于 12-15 15:20 519次阅读

    汽车级SPI总线I/O扩展器TXE81XX-Q1:特性、应用与设计指南

    汽车级SPI总线I/O扩展器TXE81XX-Q1:特性、应用与设计指南 在汽车电子系统日益复杂的今天,对于I/
    的头像 发表于 12-15 15:05 673次阅读

    TXE81XX 16 位和 24 位 SPI 总线 I/O 扩展器:特性与应用全解析

    TXE81XX 16 位和 24 位 SPI 总线 I/O 扩展器:特性与应用全解析 在电子设计领域,I/
    的头像 发表于 12-15 14:50 540次阅读

    单片机硬件设计原则,抗干扰常用方法

    方法。提高敏感器件抗干扰性能的常用措施如下: 布线时尽量减少回路环的面积,以降低感应噪声。 布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦合噪声。 对于单片机闲置的I/
    发表于 12-09 06:30

    单片机系统硬件的调试方法

    单片机的系统硬件调试,通常有静态调试和动态调试两种不同,前者是通过目测、万能表测试、加电检查、联机检查的方法,在加电于样机之前.对样机的型号规格,以及安装要求等进行核对,同时检查 电源 系统.防止
    发表于 12-03 06:10

    如何巧妙甚至避免单片机的干扰问题

    平衡功耗与抗干扰能力。 2、利用数字电路降低阻抗 将I/O与其他数字电路输出脚相连,利用数字电路的低阻抗特性,提升抗干扰能力。 在工
    发表于 11-26 06:48

    单片机原理及应用详解

    单片机(Microcontroller Unit, MCC)  是一种集成计算机核心功能(CPU、存储器、I/O接口等)的微型芯片,广泛应用于嵌入式系统中。以下是其原理及应用的详细介绍: 一、
    的头像 发表于 08-11 13:57 2828次阅读

    单片机的储存优点是什么

    场景。深圳市安凯星科技有限公司在单片机应用开发中,充分利用这些储存优点,为拓邦、朗科、安徽龙多等客户打造了高效稳定的解决方案。 1.集成度高,节省硬件空间 单片机将程序存储器(ROM)、数据存储器(RAM)与 CPU、
    的头像 发表于 07-31 10:09 831次阅读

    单片机采用什么电流输出

    能力 单片机I/O 接口直接输出的电流较小,通常在 10-20mA 范围内。这是因为其内部输出电路由小型 MOS 管或三极管构成,主要用于传输控制信号,而非直接驱动大功率设备。例如,8 位
    的头像 发表于 07-30 11:13 1319次阅读

    怎么放大单片机输出电流

    单片机作为电子系统的控制核心,其 I/O 输出电流通常较小(一般在 10-20mA 左右),难以直接驱动继电器、电机、大功率 LED 等需要较大工作电流的外设。因此,在实际应用中需
    的头像 发表于 07-25 13:47 978次阅读

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机应用开发、程序调试和性能优化具有重要意义。测量
    的头像 发表于 07-25 11:39 1093次阅读