SPI总线在51系列单片机系统中的实现

发布者:RadiantBlossom最新更新时间:2009-01-18 来源: 国外电子元器件关键字:单片机  SPI串行总线  总线接口 手机看文章 扫描二维码
随时随地手机看文章


1 引言
    SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设备包括 FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS (有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需3~4位数据线和控制线即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8~16位地址线、2~3位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。由此可见,在MCS51系列等不具有SPI接口的单片机组成的智能仪器和工业测控系统中,当传输速度要求不是太高时,使用SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能。
2 SPI总线的组成
    利用SPI总线可在软件的控制下构成各种系统。如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构成的各种系统等。在大多数应用场合,可使用1个MCU作为主控机来控制数据,并向1个或几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。
    SPI总线接口系统的典型结构如图1所示。


  当一个主控机通过SPI与几种不同的串行I/O芯片相连时,必须使用每片的允许控制端,这可通过MCU的I/O端口输出线来实现。但应特别注意这些串行I/O芯片的输入输出特性:首先是输入芯片的串行数据输出是否有三态控制端。平时未选中芯片时,输出端应处于高阻态。若没有三态控制端,则应外加三态门。否则MCU的MISO端只能连接1个输入芯片。其次是输出芯片的串行数据输入是否有允许控制端。因为只有在此芯片允许时,SCK脉冲才把串行数据移入该芯片;在禁止时,SCK对芯片无影响。若没有允许控制端,则应在外围用门电路对SCK进行控制,然后再加到芯片的时钟输入端;当然,也可以只在SPI总线上连接1个芯片,而不再连接其它输入或输出芯片。

3 在MCS51系列单片机中的实现方法
    对于不带SPI串行总线接口的MCS51系列单片机来说,可以使用软件来模拟 SPI的操作,包括串行时钟、数据输入和数据输出。对于不同的串行接口外围芯片,它们的时钟时序是不同的。对于在SCK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,一般应将其串行时钟输出口P1.1的初始状态设置为1,而在允许接口后再置P1.1为0。这样,MCU在输出1位SCK时钟的同时,将使接口芯片串行左移,从而输出1位数据至MCS51单片机的P1.3口(模拟MCU的MISO线),此后再置P1.1为1,使MCS51系列单片机从P1.0(模拟 MCU的MOSI线)输出1位数据(先为高位)至串行接口芯片。至此,模拟1位数据输入输出便宣告完成。此后再置P1.1为0,模拟下1位数据的输入输出……,依此循环8次,即可完成1次通过SPI总线传输8位数据的操作。对于在SCK的下降沿输入数据和上升沿输出数据的器件,则应取串行时钟输出的初始状态为0,即在接口芯片允许时,先置P1.1为1,以便外围接口芯片输出1位数据(MCU接收1位数据),之后再置时钟为0,使外围接口芯片接收1位数据(MCU发送1位数据),从而完成1位数据的传送。

  图2所示为MCS51系列单片机与存储器X25F008(E2PROM)的硬件连接图,有关X25F008的详细资料可参考有关文献〔1〕。图2中,P1.0模拟MCU的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P1.3模拟SPI的数据输入端(MISO)。下面介绍用MCS51单片机的汇编语言模拟SPI串行输入、串行输出和串行输入/输出的3个子程序。实际上,这些子程序也适用于在串行时钟的上升沿输入和下降沿输出的其它各种串行外围接口芯片(如A/D转换芯片、网络控制器芯片、LED显示驱动芯片等)。对于下降沿输入、上升沿输出的各种串行外围接口芯片,只要改变P1.1的输出电平顺序,即先置P1.1为低电平,之后再次置P1.1为高电平,再置P1.1为低电平……,则这些子程序也同样适用。
3.1 MCU串行输入子程序SPIIN
    从X25F008的SPISO线上接收8位数据并放入寄存器R0中的应用子程序如下:

3.2 MCU串行输出子程序SPIOUT
  将MCS51单片机中R0寄存器的内容传送到X25F008的SPISI线上的程序如下:

3.3 MCU串行输入/输出子程序SPIIO
  将MCS51单片机R0寄存器的内容传送到X25F008的SPISI中,同时从X25F008的SPISO接收8位数据的程序如下:


4 结束语
    本文介绍了通过SPI总线接口实现数据传输的实现方法,给出了用MCS51单片机汇编语言模拟SPI串行总线的输入、输出,输入/输出以传送8位数据的子程序。实际上,也可以根据SPI串行总线的操作时序特点来在MCS96系列、ATMEL89系列等单片机上实现SPI总线的接口。

关键字:单片机  SPI串行总线  总线接口 引用地址:SPI总线在51系列单片机系统中的实现

上一篇:新唐科技推出8位微控制器N79E352
下一篇:利用单片机PWM信号对舵机进行驱动控制

推荐阅读最新更新时间:2024-03-16 12:24

快速 4A 单节锂离子电池 SMBus 充电器 无需微控制器
2006 年 6 月 26 日 - 北京 - 凌特公司( Linear Technology Corporation )推出快速、精确智能电池充电控制器 LTC4101 ,该器件有无主微控制器都可工作。该 IC 完全符合 Rev. 1.1 SMBus 规范,并满足了智能电池系统( SBS )二级( Level 2 )充电功能的要求。 LTC4101 为 3V 至 5.5V 充电电压而优化,适用于单节锂离子电池和 3 至 4 节镍化学电池充电。它能够以高达 4A 的电流快速充电,电压准确度为 0.8% ,电流准确度为
[新品]
采用MSP430单片机的可穿戴式血糖仪电路设计
  介绍了一种便携式血糖仪的设计。该设计主要从低功耗及精确性的角度出发,以MSP430系列单片机为核心,葡萄糖氧化酶电极为测试传感器,较快地测试出血糖浓度。此外,所设计的血糖仪还具有储存功能,有助于用户查看血糖浓度历史值和变化趋势。   血糖测试电路:在酶电极两端滴入血液后,会产生自由电子。由于电极两端存在激励电压,就会有定向电流流过电极。该激励电压是由ADC模块提供的1.5V稳压通过电阻分压而产生的,大约在300mV左右,它能产生μA级别的定向电流。由于A/D转换模块测量的是电压,所以需要将该定向电流转换成电压,并且进行一定的放大。本系统采用图2所示的电路来实现电流到电压的转换和放大。运算放大器LM358的反相端连接血糖试纸
[单片机]
采用MSP430<font color='red'>单片机</font>的可穿戴式血糖仪电路设计
单片机T0方式2实现简单时钟
单片机源程序如下: //按4X4键盘的F键 进入设定状态 //E D 键是前后移动键 //C按键是调整数值按键 #include reg52.h #define uchar unsigned char sbit key_h=P1^0; sbit key_m=P1^1; sbit key_s=P1^2; unsigned char Tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //段码表 unsigned int h,m,s,counter; void delay1ms(unsigned int i) { unsigned char j; while(i-
[单片机]
<font color='red'>单片机</font>T0方式2实现简单时钟
嵌入式系统设计方法的演化—从单片机到单片系统
摘要:在介绍嵌入式系统设计方法变化背景的基础上,综述嵌入式系统设计方法的不同层次,从单片 机应用到单片系统设计的演化,并提出了发展战略。 关键词:嵌入式系统 设计 单片系统(SOC) 硬件描述语言(HDL) IP内核 一、嵌入式系统设计方法变化的背景 嵌入式系统设计方法的演化总的来说是因为应用需求的牵引和IT技术的推动。 1.随着微电子技术的不断创新和发展,大规模集成电路的集成度和工艺水平不断提高。硅材料与人类智慧的结合,生产出大批量的低成本、高可靠性和高精度的微电子结构模块,推动了一个全新的技术领域和产业的发展。在此基础上发展起来的器件可编程思想和微处理(器)技术可以用软件来改变和实现硬件的功能。微处理器和各种可编程大规模集成专用
[嵌入式]
使用单片机实现语音报警系统的设计资料说明
1 硬件电路设计(图) 系统工作过程: 单片机AT89C51采集设备的各种信息,根据不同设备和传感器,可以是压力、流量、温湿度、电压、电流等,然后与预先存储在单片机内的阈值比较,若超出正常范围,则通过电话机拨号电路拨打维护人员的固定或移动电话,等待拨通后再控制ISD4004构成的数码语音电路播放相对应的故障信息。维护人员听到信息后根据故障优先级作相应处理。 1.1 语音电路 ISD4004语音芯片是由美国ISD公司推出的新产品,单片录放语音时间8-16min,操作简单,音质好。芯片内含振荡器、防混滤波器;平滑滤波器、自动静噪、音频放大器及高密度多电平闪烁存贮阵列。芯片设计是基于所有操作必须由微控制器控制,操作命令通过串行通
[单片机]
使用<font color='red'>单片机</font>实现语音报警系统的设计资料说明
两路学习型风扇遥控开关带自然风 单片机源程序+电路
电 路原理图如下: 制作说明: 这个电路采用15W104单片机通过红外遥控器控制电风扇。 在初次使用时,首先进行按键学码。 学码方法:找一个闲置的红外遥控器,选择两个好用的按键,按住其中一个遥控 按键不放约6秒,蜂鸣器响一声,表明学习完成。同样方法学习另外一个遥控按键。 正常使用时,短按一下已学习的按键即可控制对应的开关反转,蜂鸣器会响一声。 第一个学习的按键为风扇开关,开后吹风3小时会自动关闭,防止长开。第二个学 习的按键为自然风开关,自然风启动后电扇吹7秒停3秒,再按关闭自然风。由于使用 延时控制,开自然风后遥控反应会延迟。 如果需要换别的遥控按键或另外一个遥控器,重新上述操作,即可删除
[单片机]
两路学习型风扇遥控开关带自然风 <font color='red'>单片机</font>源程序+电路
ROHM旗下开发出内置D级功放与音频播放功能微控制器
仅1枚芯片即可轻松实现音频播放功能!有助于电子设备的小型化、电池的长寿化、安全性的提高。 【ROHM半导体(上海)有限公司 7月29日上海讯】ROHM集团旗下的LAPIS Semiconductor开发出内置高效D级功放与音频播放功能的低功耗微控制器“ML610Q304”。 ML610Q304以8bit低功耗微控制器为基础,集语音合成电路、高效D级功放、非易失性存储器、振荡电路于1枚芯片,仅需连接扬声器即可实现音频播放功能。 通过硬件实现了音频播放功能,因此无需给微控制器的系统控制处理增加负担即可轻松实现高音质的音频播放。另外,新搭载了高效D级功放,在保持必要音量的条件下,与以往产品相比,播放
[单片机]
ROHM旗下开发出内置D级功放与音频播放功能<font color='red'>微控制器</font>
基于单片机和PWM控制方法调速实现无刷控制器检测设计
引言 伴随着城市化进程,人们生活的交通距离不断扩大,代替燃油汽车和自行车的电动车的普及大幅度的提高了电力资源的利用效率,促进了国民经济的健康发展。电动自行车以电力作动力,骑行中不产生污染,无损于空气质量。从改善人们的出行方式、保护环境和经济条件许可情况等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。电动自行车所用直流电机分为有刷电机和无刷电机两种。其中有刷电机控制较简单。但其易磨损的电刷带来维修保养工作量相对较大、使用寿命相对较短等缺点。而直流无刷电机本身没有易磨损部件,电机寿命长,维修保养工作量小。但直流无刷电机采用电子换向原理工作,其控制过程比有刷电机复杂得多,因此对控制器质量的要求也高得多。 目前电动自行车采
[单片机]
基于<font color='red'>单片机</font>和PWM控制方法调速实现无刷控制器检测设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved