模拟SPI协议时序

  SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制。

  在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE)。

  所以,在以下的介绍中,都是默认单片机是主机模式进行说明的。

  SPI总线相对于IIC总线,无总裁机制,无应答机制。

  SPI常用的四线制分别是,MISO(主入从出)、MOSI(主出从入)、SCK(同步时钟线)、CS(片选线,也有是NSS)。

  主从机之间典型的接线方式如下所示:

  

  按照时钟线的时钟极性(CPOL)和相位(CPHA),将SPI总线区分成4种工作方式。

  具体区分如下:

  当时钟极性(CPOL==0)时:表示时钟线空闲状态为低电平;

  当时钟极性(CPOL==1)时:表示时钟线空闲状态为高电平;

  当时钟相位(CPHA==0)时:表示数据在时钟的第一个边沿输出;

  当时钟相位(CPHA==1)时:表示数据在时钟的第二个边沿输出;

  如上所示,CPOL和CPHA两两组合,可表示4种工作方式,假设配置CPOL=0,CPHA0,表示数据线在空闲时处于低电平,主机数据在时钟的第一个边沿(也就是上升沿被输出),在第二个边沿(也就是下降沿被读入)。

  需要注意的是,主机的配置必须根据从机设计,例如,从机是上升沿输出,下降沿输入。那么,主机在配置的过程当中,必须采用上升沿输出,下降沿输入,即SPI0工作方式。

  采用I/O端口模拟SPI协议时序,可以很好地加深对于SPI总线的理解。

  SPI写时序模拟:

 1 void SPI_write(unsigned char dat)
 2 {
 3         unsigned char temp;
 4         for(temp=0x80;temp!=0;temp>>=1)
 5         {
 6                 SCK=0;
 7                 if(temp&dat==0)
 8                 {
 9                         MOSI=0;
10                 }
11                 else
12                 {
13                         MOSI=1;
14                 }
15                 SPI_delay(); //让MOSI稳定
16                 SCK=1;
17         }
18 }

  SPI读时序模拟:

 1 unsigned char SPI_read(void)
 2 {
 3         unsigned char temp;
 4         unsigned char dat;
 5         for(temp=0x80;temp!=0;temp>>=1)
 6         {
 7                 SCK=1;
 8                 SPI_delay();  //让SCK稳定
 9                 SCK=0;
10                 if(MISO==1)
11                 {
12                         dat|=temp;
13                 }
14                 else
15                 {
16                         dat&=~temp;
17                 }
18         }
19         return dat;
20 }

  

时间: 2024-10-05 16:17:50

模拟SPI协议时序的相关文章

模拟IIC协议时序

IIC是飞利浦公司开发的两线式串行总线,主要应用在单片机和外围电子器件之间的数据通讯. IIC总线优点是节约总线数,稳定,快速,是目前芯片制造上非常流行的一种总线,大多数单片机已经片内集成了IIC总线接口,无需用户自己模拟,只需配置相关寄存器即可使用,但是,为了更好地理解IIC总线协议,可以自行按照IIC时序图进行模拟,加深理解. IIC总线有两条串行线,其一是时钟线SCK,其二是数据线SDA. 在寻常的应用之中,单片机常常作为主机,外围器件作为从机使用. 每一个从机器件都拥有唯一的一个地址,这

使用软件模拟spi 时序时注意点

软件模拟 spi 时序有以下几个点需要注意: cs 使能后到第一个 sck 边沿需要延时. 最后一个sck 边沿到下一个 cs 需要延时. sck 的高电平和低电平本身需要维持时间. mosi 需要先把数据放上去,然后启动上升沿,然后延时 sck 高电平的时间. 在延时了 sck 高电平的时间后,读取 miso 的电平,然后启动下降沿,然后延时 sck 低电平的时间. 原文地址:https://www.cnblogs.com/ramlife/p/11743022.html

模拟I2C协议学习点滴之原理框架

I2C是一种串行总线协议. 目前几种常用的串行总线有UART.SPI和I2C协议.UART协议的总线只有两条,发送(Transmit:TX)和接收(Receive:RX),没有时钟信号,这就要求两位数据的间隔要相同,它传送数据有严格的规定,每个数据以相同的位串形式传送,每个位串由起始位.数据位.奇偶位校验和停止位组成.SPI有三线和四线模式,四条总线分别为SCLK(时钟).MISO(主器件数据输入,从器件数据输出).MOSI(主器件数据输出,从器件数据输入).SS(从器件使能信号),SPI总线由

[SPI]SPI协议详解

转自:https://my.oschina.net/freeblues/blog/67400 1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了

SPI 协议的理解

一.SPI介绍 1.1技术性能: 采用主从模式,一般仅支持单Master--多Slave.时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前--底位在后(MSB first).接口有两条单向数据线,为全双工通信. 各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,EEPROM,FlashROM,A/D转换器.D/A转换器.LED/LED显示驱动器.I/O接口芯片.实时时钟.UART收发器 1.2接口定义:  SPI接口共有4根信号线,分别是:设备选择线.时钟

SPI协议

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM92

GPIO模拟SPI

上次用gpio模拟i2c理解i2c协议,同样的,我用gpio模拟spi来理解spi协议. 我用的是4线spi,四线分别是片选.时钟.命令/数据.数据. 数据在时钟上升沿传递,数据表示的是数据还是命令由命令/数据线决定. 开始条件: void spi_start(void) { gpio_config(GPIO_CS, GPIO_OUTPUT); udelay(SPI_SPEED_DURATION); gpio_set(GPIO_CS, 0);/* start condition */ udela

51单片机SPI协议与应用实例

-------------------------------------------- SPI总线 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 参考链接: http://blog.csdn.net/fly__chen/article/detail

spi协议->裸机程序->master驱动程序分析

SPI协议参考: SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html SPI总线协议及SPI时序图详解 http://blog.163.com/sunshine_linting/blog/static/44893323201181482335951 一.概述 SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上