模拟IIC和SPI的时序分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

模拟IIC和SPI的时序分析IIC(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送(半双工),高速IIC总线一般可达400kbps以上。I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。//产生IIC开始信号voidIIC_Start(void){SDA_OUT();//sda线输出IIC_SDA=1;IIC_SCL=1;delay_us(4);IIC_SDA=0;//START:whenCLKishigh,DATAchangeformhightolowdelay_us(4);IIC_SCL=0;//钳住I2C总线,准备发送或接收数据}结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。//产生IIC停止信号voidIIC_Stop(void){SDA_OUT();//sda线输出IIC_SCL=0;IIC_SDA=0;//STOP:whenCLKishighDATAchangeformlowtohighdelay_us(4);IIC_SCL=1;IIC_SDA=1;//发送I2C总线结束信号delay_us(4);}应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。//产生ACK应答voidIIC_Ack(void){IIC_SCL=0;SDA_OUT();IIC_SDA=0;delay_us(2);IIC_SCL=1;IIC_SCL=0;delay_us(2);}这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。数据传送格式:字节传送与应答:每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。字节传送与应答:4、在总线的一次数据传送过程中,可以有以下几种组合方式:a、主机向从机发送数据,数据传送方向在整个传送过程中不变:也就是主机写方式注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。A表示应答,A非表示非应答(高电平)。S表示起始信号,P表示终止信号。//IIC发送一个字节//返回从机有无应答//1有应答//0无应答voidIIC_Send_Byte(u8txd){u8t;SDA_OUT();IIC_SCL=0;//拉低时钟开始传输数据for(t=0;t8;t++){IIC_SDA=(txd&0x80)7;txd=1;delay_us(2);//IIC_SCL=1;delay_us(2);IIC_SCL=0;delay_us(2);}}b、主机在第一个字节后,立即从从机读数据.也就是主机读方式//读一个字节ack=1时发送ACK,ack=0时,发送nACKu8IIC_Read_Byte(unsignedcharack){unsignedchari,receive=0;SDA_IN();//sda设置为输入for(i=0;i8;i++){IIC_SCL=0;delay_us(2);IIC_SCL=1;receive=1;if(READ_SDA)receive++;delay_us(1);}if(!ack)IIC_NAck();//不产生应答elseIIC_Ack();//产生应答returnreceive;}c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。CPOL是用来决定SCK时钟信号空闲时的电平,CPOL=0,空闲电平为低电平,CPOL=1时,空闲电平为高电平。CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样,CPHA=1,在每个周期的第二个时钟沿采样。SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线(1)MOSI:主器件数据输出,从器件数据输入(2)MISO:主器件数据输入,从器件数据输出(3)SCLK:时钟信号,由主器件产生(4)/SS:从器件使能信号,由主器件控制(片选)(一般低电平有效)SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。在SCLK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。u8SPI1_ReadWriteByte(u8TxData){while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET){}//SPI_I2S_SendData(SPI1,TxData);//while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET){}//returnSPI_I2S_ReceiveData(SPI1);//}

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功