SPI介绍_spi协议介绍
SPI介绍由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“spi协议介绍”。
SPI总线学习
1、SPI总线速度:
波特率可以高达5Mbps,具体速度大小取决于SPI硬件。
例如,Xicor公司的SPI串行器件传输速度能达到5MHz;
ATMEL的AT45DB021B,20 MHz Max Clock Frequency;
LPC2214的SPI,最大数据位速率为输入时钟速率的1/8。
2、SPI简介:
同步外设接口(SPI)是由摩托罗拉公司开发的全双工同步串行总线,该总线 量用在与EEPROM、ADC、FLASH和显示驱动器之类的慢速外设器件通信。SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主 设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而 完成数据的交换。通讯时,数据由MOSI输出,MISO 输入,数据在时钟的上 升或下降沿由MOSI 输出,在紧接着的下降或上升沿由MISO 读入,这样经过 8/16 次时钟的改变,完成8/16 位数据的传输。
在一次数据传输过程中,接口上只能有一个主机和一个从机能够通信。并且,主机总是向从机发送一个字节数据,而从机也总是向主机发送一个字节数据。该总线通信基于主-从配置。它有4个信号:
MOSI:主出/从入
MISO:主入/从出
SCK:串行时钟
SS:从属选择。即CS(从使能信号),CS 决定了唯一的与主设 备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备 通过产生移位时钟来发起通讯。
在SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲,摩托罗拉没有定义任何通用SPI的时钟 规范。然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个 参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的 时钟相位。CPOL和CPHA的设置决定了数据取样的时钟.3、例子:
LPC2214有两个SPI接口。
SPI 从机选择信号是一个低有效信号,用于指示被选择参与数据传输的从机。每个从机都有各自特定的从机选择输入信号。在数据处理之前,SSEL 必须为低电平并在整个处理过程中保持低电平。如果在数据传输中SSEL 信号变 为高电平,传输将被中止。这种情况下,从机返回到空闲状态并将任何接收到 的数据丢弃。对于这样的异常没有其它的指示。该信号不直接由主机驱动。可 通过软件使用一个通用I/O 口来驱动。
注:配置为SPI 主机的LPC2114/2124/2212/2214 必须选择一个合适的管脚用作 SSEL 功能并使其保持高电平,只有这样,器件才能真正执行主机的功能。
例程:XFT-8001部分SPI软体;
/*----定义SPI相关控制器的控制位(SPCR)----*/
#defineMSTR BIT5/*-----主模式控制----#defineBIT50x00000020*/ #define CPOLBIT4/*-----时钟极性控制----#define BIT40x00000010*/ #defineCPHA BIT3/*-----时钟相位控制----*/
#defineLSBF BIT6/*-----移位方向控制----*/
#defineSCKP0_4/*------串行时钟-------*/
#defineMISO P0_5/*------主入从出-------*/
#defineMOSI P0_6/*------主出从入------*/
#defineSSEL_ADP0_16/*----从机选择SPI脚---*/
#define FLASH_CS P0_19
void SpiInit(uint8 x)
{
switch(x)
{
case FLASHSPI://按照flash的要求初始化SPIS0SPCCR = 0x00000036;//约400KHz的时钟频率S0SPCCR=Fpclk/SPI频率S0SPCR= MSTR;//主控制器,模式选择0break;
case SDSPI://按照SD卡的要求初始化SPI
S0SPCCR= 0x0000000E;
S0SPCR= MSTR;
break;
case HC595SPI://按照595的要求初始化SPIbreak;
}
}
/*****************************************************************
******
** 函数名称: SpiSendData()
** 功能描述:用SPI总线发送数据,由于SPI的特点,SPI在发送数据的时候,也在接收数据;如果仅仅要求接收数据,也要发送数据,不然没有SCK时钟
** 输 入:x:SPI将要发送的数据
** 输 出:返回接收的数据
** 全局变量:无
** 调用模块:无
** 日 期:2006年11月12日
************************************/
uint8 SpiSendData(uint8 x)
{ S0SPDR = x;
while((S0SPSR&0x80)==0);
return S0SPDR;
}
/*************************
** 函数名称: EraseFlashBlock()
** 功能描述:擦除单个block的数据, 可以擦除器件中的任何一个指
定编号的block块,完成擦除之后要读取状态位来判断是否擦除完毕 **在片选信号CS的上升沿开始擦除
** 输 入:addr:要擦除的块编号,对于AT45DB021B而言,范围
从0~127
** 输 出:无
** 全局变量:无
** 调用模块:无
** 日 期:2007年5
SPI基础介绍 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,......
刀豆文库小编为你整合推荐3篇cpi和spi是什么意思,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
SPI:进度绩效指标,挣值与计划价值之比。反映了项目团队利用时间的效率。CPI:成本绩效指标,指预算费用与实际费用之比。。反映了项目团队利用资金的效率。扩展资料项目管理计算中......
SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提......
文 章来源 莲山 课 件 w w w.5Y k J.c oM 软件模拟引言随着信息社会的发展,网络和信息家电越来越地出现在人们的生活中。人们普通要求将家庭内的所有家用电器与Internet连接......
