时钟极性与spi通信原理_第1页
时钟极性与spi通信原理_第2页
时钟极性与spi通信原理_第3页
时钟极性与spi通信原理_第4页
时钟极性与spi通信原理_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。 利用51单片机实现SPI总线通信 一:题目及要求 1:基本内容 1.1:理解51单片机和SPI总线通信的特性和工作原理; 1.2:以51单片机为核心分别设计SPI总线通信发送及接收电

2、路; 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:利用Pr

3、otues软件仿真,观察结果; 5:顺利仿真后,下载到开发板实现串行通信功能。三:设计过程及内容 1:SPI总线简介 SPI ( Serial Peripheral Interface 串行外设接口) 总线是Motorola公司推出的一种同步串行接口技术。SPI总线系统是一种同步串行外设接口,允许MCU(微控制器)与各种外围设备以串行方式进行通信、数据交换。外围设备包括FLASHRAM、A/ D 转换器、网络控制器、MCU 等。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在

4、越来越多的芯片集成了这种通信协议。其工作模式有两种:主模式和从模式。SPI是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。也就是SPI是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一般4根就够基本通讯了(不算电源线)。同时传输速度也很高。一般来说要求主设备要有SPI控制器(也可用模拟方式),就可以与基于SPI的芯片通讯了。 利用SPI总线可在软件的控制下构成各种系统。如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从IO设备所构成的各种系统等。在大多数应用场合,可使用1个MCU作为主控机来控制数据,并向

5、1个或几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。 当一个主控机通过SPI与几种不同的串行IO芯片相连时,必须使用每片的允许控制端,这可通过MCU的IO端口输出线来实现。但应特别注意这些串行IO芯片的输入输出特性:首先是输入芯片的串行数据输出是否有三态控制端。平时未选中芯片时,输出端应处于高阻态。若没有三态控制端,则应外加三态门。否则MCU的MISO端只能连接1个输入芯片。其次是输出芯片的串行数据输入是否有允许控制端。因为只有在此芯片允许时,SCK脉冲才把串行数据移入该芯片;在禁止时,SCK对芯片无影响。若没有

6、允许控制端,则应在外围用门电路对SCK进行控制,然后再加到芯片的时钟输入端;当然,也可以只在SPI总线上连接1个芯片,而不再连接其它输入或输出芯片。 SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。 2:SPI总线工作原理 SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器。外围设备、网络控制器、LCD显示驱动器、A/D转换器和MCU

7、等。接口包括以下四种信号: (1)MOSI 主器件数据输出,从器件数据输入; (2)MISO 主器件数据输入,从器件数据输出; (3)SCLK 时钟信号,由主器件产生; (4) SS 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)。 在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。 3:电路设计 设计的电路,利用两片AT89C52芯片,一片做为发送模块,一片做为接收模块。分别编写发送和接收程序,实现数据的发送和接受。通过LED显示接收到的数据。通过示波器观察输出的波形。 4:编写程序 根据设计好的电路及题目要求分别编写数据发送程序和数

8、据接收程序。 :数据发送程序 #define uchar unsigned char #define uint unsigned int#define ulong unsigned long /- #include #include /- sbit SPICLK = P10; /s时钟信号sbit MOSI = P11; /主器件数据输出,从器件数据输入sbit MISO = P12; /主器件数据输入,从器件数据输出sbit SS = P13; /从器件使能信号void Dat_Transmit(uchar dat) /发送数据程序 uchar i,datbuf; datbuf=dat; S

9、S=1; while(SS); for(i=0;i8;i+) while(SPICLK); if(datbuf&0x80) MISO=1; else MISO=0; datbuf=(datbuf1); while(SPICLK); void main(void) uchar i; while(1) for(i=0;i10;i+) Dat_Transmit(i); /2.数据接收程序#define uchar unsigned char #define uint unsigned int#define ulong unsigned long/ - #include #include/- sbit

10、 SPICLK = P10;/时钟信号sbit MOSI = P11; /主器件数据输出,从器件数据输入sbit MISO = P12;/主器件数据输入,从器件数据输出sbit SS = P13;/从器件使能信号/- void Nop(void) void Delay(uchar t)while(t-);uchar Data_Receive(void)/数据接收程序uchar i,dat=0,temp;bit bt; SPICLK=1;MISO=1;SS=0;/选中器件Nop();Nop();for(i=0;i8;i+) SPICLK=1; Nop(); Nop(); Nop(); SPICLK=0; Nop(); Nop(); bt=MISO; if(bt) temp=0x01; else temp=0x00; dat=(dat1); dat=(dat|temp); SS=1;SPICLK=1;return dat;void main(void)uchar exdat;uchar i=0; uchar code table10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F;P2=0;wh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论