利用51单片机实现SPI总线通信.wps
- 文档编号:2586506
- 上传时间:2022-11-02
- 格式:WPS
- 页数:7
- 大小:61.50KB
利用51单片机实现SPI总线通信.wps
《利用51单片机实现SPI总线通信.wps》由会员分享,可在线阅读,更多相关《利用51单片机实现SPI总线通信.wps(7页珍藏版)》请在冰豆网上搜索。
利用51单片机实现SPI总线通信利用51单片机实现SPI总线通信一:
题目及要求一:
题目及要求1:
基本内容1.1:
理解51单片机和SPI总线通信的特性和工作原理;1.2:
以51单片机为核心分别设计SPI总线通信发送及接收电路;1.3:
熟练应用C语言或汇编语言编写程序;1.4:
应用Protues软件完成仿真,仿真结果需包括示波器波形,通过一定的方式(如LED灯、LED显示器等)显示发送和接受数据结果;1.5:
下载程序到开发板,实现串口通信功能(选做);1.6:
提交设计报告。
2:
基本要求本设计采用三线式SPI总线,一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO。
时钟极性CPOL=0,时钟相位CPHA=0。
二:
设计思路二:
设计思路1:
掌握51单片机和SPI总线通信的工作原理;2:
利用1中的原理设计SPI总线通信发送和接受电路;3:
编程模拟SPI时序,包括串行时钟、数据输入和输出;4:
利用Protues软件仿真,观察结果;5:
顺利仿真后,下载到开发板实现串行通信功能。
三:
设计过程及内容三:
设计过程及内容1:
SPI总线简介SPI(SerialPeripheralInterface串行外设接口)总线是Motorola公司推出的一种同步串行接口技术。
SPI总线系统是一种同步串行外设接口,允许MCU(微控制器)与各种外围设备以串行方式进行通信、数据交换。
外围设备包括FLASHRAM、A/D转换器、网络控制器、MCU等。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现2在越来越多的芯片集成了这种通信协议。
其工作模式有两种:
主模式和从模式。
SPI是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。
也就是SPI是一种规定好的通讯方式。
这种通信方式的优点是占用端口较少,一般4根就够基本通讯了(不算电源线)。
同时传输速度也很高。
一般来说要求主设备要有SPI控制器(也可用模拟方式),就可以与基于SPI的芯片通讯了。
利用SPI总线可在软件的控制下构成各种系统。
如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从IO设备所构成的各种系统等。
在大多数应用场合,可使用1个MCU作为主控机来控制数据,并向1个或几个从外围器件传送该数据。
从器件只有在主机发命令时才能接收或发送数据。
其数据的传输格式是高位(MSB)在前,低位(LSB)在后。
当一个主控机通过SPI与几种不同的串行IO芯片相连时,必须使用每片的允许控制端,这可通过MCU的IO端口输出线来实现。
但应特别注意这些串行IO芯片的输入输出特性:
首先是输入芯片的串行数据输出是否有三态控制端。
平时未选中芯片时,输出端应处于高阻态。
若没有三态控制端,则应外加三态门。
否则MCU的MISO端只能连接1个输入芯片。
其次是输出芯片的串行数据输入是否有允许控制端。
因为只有在此芯片允许时,SCK脉冲才把串行数据移入该芯片;在禁止时,SCK对芯片无影响。
若没有允许控制端,则应在外围用门电路对SCK进行控制,然后再加到芯片的时钟输入端;当然,也可以只在SPI总线上连接1个芯片,而不再连接其它输入或输出芯片。
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
2:
SPI总线工作原理SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。
SPI有三个寄存器分别为:
控制寄存器SPCR,状态寄存器SPSR,数据寄存器。
外围设备、网络控制器、LCD显示驱动器、A/D转换器和MCU等。
3接口包括以下四种信号:
(1)MOSI主器件数据输出,从器件数据输入;
(2)MISO主器件数据输入,从器件数据输出;(3)SCLK时钟信号,由主器件产生;(4)SS从器件使能信号,由主器件控制,有的IC会标注为CS(Chipselect)。
在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。
3:
电路设计设计的电路,利用两片AT89C52芯片,一片做为发送模块,一片做为接收模块。
分别编写发送和接收程序,实现数据的发送和接受。
通过LED显示接收到的数据。
通过示波器观察输出的波形。
4:
编写程序根据设计好的电路及题目要求分别编写数据发送程序和数据接收程序。
:
数据发送程序#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong/-#include#include/-sbitSPICLK=P10;/时钟信号sbitMOSI=P11;/主器件数据输出,从器件数据输入sbitMISO=P12;/主器件数据输入,从器件数据输出sbitSS=P13;/从器件使能信号voidDat_Transmit(uchardat)/发送数据程序uchari,datbuf;datbuf=dat;4SS=1;while(SS);for(i=0;i8;i+)while(SPICLK);if(datbuf&0x80)MISO=1;elseMISO=0;datbuf=(datbuf1);while(SPICLK);voidmain(void)uchari;while
(1)for(i=0;i10;i+)Dat_Transmit(i);:
数据接收程序#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong/-#include5#include/-sbitSPICLK=P10;/时钟信号sbitMOSI=P11;/主器件数据输出,从器件数据输入sbitMISO=P12;/主器件数据输入,从器件数据输出sbitSS=P13;/从器件使能信号/-voidNop(void);voidDelay(uchart)while(t-);ucharData_Receive(void)/数据接收程序uchari,dat=0,temp;bitbt;SPICLK=1;MISO=1;SS=0;/选中器件Nop();Nop();for(i=0;i8;i+)SPICLK=1;Nop();6Nop();Nop();SPICLK=0;Nop();Nop();bt=MISO;if(bt)temp=0x01;elsetemp=0x00;dat=(dat1);dat=(dat|temp);SS=1;SPICLK=1;returndat;voidmain(void)ucharexdat;uchari=0;ucharcodetable10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;P2=0;while
(1)exdat=Data_Receive();P0=tableexdat;for(i=0;i200;i+)7Delay(200);5:
电路仿真将数据发送程序生成的HEX文件载入到发送数据的模块,将数据接收程序生成的HEX文件载入到接收数据的模块。
在输出端口连接LED灯等到输出信息,利用示波器观察输出波形。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 51 单片机 实现 SPI 总线 通信