跳转到主要内容

SPI

【视频】Microchip:AVR® Insights — 第12集 — SPI

judy /

在本视频中,我们将介绍AVR®串行外设接口模块,即SPI模块。
凭借AVR® SPI,可在器件和外部外设元件之间进行高速同步数据传输。他可以作为主站或从站工作,采用小尾数或大尾数位顺序,并且可配置时钟速度。
<embed src="https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=8640…; allowFullScreen="true" quality="high" width="480" height="400" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash"></embed>

SPI总线协议及SPI时序图详解

kelly /

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。

SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束 中断标志;写冲突保护;总线竞争保护等。

SPI总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为广泛的是SPI0和SPI3方式。

SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传 输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI主模块和与之通信的外设音时钟相位和极性应该一致。

好文:细谈I2C和SPI总线协议

kelly /

作者:ce123

<strong>IICvs SPI</strong>

现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。

IIC 开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互联方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互联微控制器和外围设备的。要实现内存映射,设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。

实战经验 | 一例SPI从机通讯异常的分析

cathy /

01、前言

客户在项目中使用STM32F750作为SPI从机,将主机下发的数据通过其它通讯接口转发,非常简单的功能,但是在通讯过程中时常会出现数据转发不全的现象,且会出现SPI OVERRUN的错误。

02、原因分析

2.1 代码逻辑

主机要下发数据前,通过一个IO口拉低,触发从机的EXTI下降沿中断,来通知从机准备接收来自主机的数据,从机启动SPI的DMA接收;随后主机开始下发不定长的数据;主机发送完数据后,经过足够的延时后,再将这个IO拉高,使从机产生一个上升沿中断,从而中止SPI的传输。从触发下降沿到开始下发数据,以及从触发上升沿后到下一次的下降沿的时序,都是通过主机的时序控制逻辑来保证预留足够的时间。

代码逻辑如下: