运用4个普通I/O口模拟SPI程序源代码
/********************************************************************
函 数 名:uchar SpiReadWrite(uchar dat)
功 能:SPI发送接收一个数据
说 明:
调 用:
入口参数:
出口参数:
***********************************************************************/
uchar SpiReadWrite(uchar dat)
{
uchar i,temp;
temp=0;
SCK=0;
_nop_();
for(i=0;i<8;i++)
{
if(dat & 0x80)
{
MOSI=1;
}
else MOSI=0;
dat<<=1;
SCK=1;
_nop_();
_nop_();
_nop_();
_nop_();
temp<<=1;
if(MISO)temp++;
SCK=0;
_nop_();
_nop_();
_nop_();
_nop_();
}
return temp;
}
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的设置决定了数据取样的时钟.

浙公网安备 33010602011771号