翻译资料1——SPI的访问
- 格式:doc
- 大小:224.50 KB
- 文档页数:10
◆ SPI 工作原理总结① 硬件上为4根线。
② 主机和从机都有一个串行移位寄存器,主机通过向它的SPI 串行寄存器写入一个字节来发起一次传输。
③ 串行移位寄存器通过MOSI 信号线将字节传送给从机,从机也将自己的串行移位寄存器中的内容通过MISO 信号线返回给主机。
这样,两个移位寄存器中的内容就被交换。
④ 外设的写操作和读操作是同步完成的。
如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
◆ SPI 接口简介SPI:Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。
SPI ,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,主要应用在 EEPROM ,FLASH ,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。
STM32F4 的 SPI 功能很强大, SPI 时钟最高可以到 37.5Mhz ,支持 DMA 。
◆ SPI 内部结构简明图移位寄存器移位寄存器SPI 时钟发生器MISO MOSI SCLKVDDCS CS主机(Master)从机(Slave)SPI 接口一般使用4条线通信:MISO 主设备数据输入,从设备数据输出。
MOSI 主设备数据输出,从设备数据输入。
SCLK 时钟信号,由主设备产生。
CS从设备片选信号,由主设备控制。
◆SPI接口框图⏹STM32 SPI接口可配置为支持SPI协议或者支持I2S音频协议,默认是SPI模式。
可以通过软件切换到I2S方式。
27.2.1 SPI 特性● 基于三条线的全双工同步传输● 基于双线的单工同步传输,其中一条可作为双向数据线● 8 位或16 位传输帧格式选择● 主模式或从模式操作● 多主模式功能● 8 个主模式波特率预分频器(最大值为f PCLK/2)● 从模式频率(最大值为f PCLK/2)● 对于主模式和从模式都可实现更快的通信● 对于主模式和从模式都可通过硬件或软件进行NSS 管理:动态切换主/从操作● 可编程的时钟极性和相位● 可编程的数据顺序,最先移位MSB或LSB● 可触发中断的专用发送和接收标志● SPI 总线忙状态标志● SPI TI 模式● 用于确保可靠通信的硬件CRC 功能:—在发送模式下可将CRC 值作为最后一个字节发送—根据收到的最后一个字节自动进行CRC 错误校验● 可触发中断的主模式故障、上溢和CRC 错误标志● 具有DMA 功能的1字节发送和接收缓冲器:发送和接收请求时钟相位和时钟极性通过SPI_CR1 寄存器中的CPOL 和CPHA 位,可以用软件选择四种可能的时序关系。
创作编号:GB8878185555334563BT9125XW创作者:凤呜大王*UM0427用户手册32位基于ARM微控制器STM32F101xx与STM32F103xx固件函数库介绍本手册介绍了32位基于ARM微控制器STM32F101xx与STM32F103xx的固件函数库。
该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
该函数库还包括每一个外设的驱动描述和应用实例。
通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。
因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。
每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。
所有的驱动源代码都符合“Strict ANSI-C”标准(项目于范例文件符合扩充ANSI-C标准)。
我们已经把驱动源代码文档化,他们同时兼容MISRA-C 2004标准(根据需要,我们可以提供兼容矩阵)。
由于整个固态函数库按照“Strict ANSI-C”标准编写,它不受不同开发环境的影响。
仅对话启动文件取决于开发环境。
该固态函数库通过校验所有库函数的输入值来实现实时错误检测。
该动态校验提高了软件的鲁棒性。
实时检测适合于用户应用程序的开发和调试。
但这会增加了成本,可以在最终应用程序代码中移去,以优化代码大小和执行速度。
想要了解更多细节,请参阅Section 2.5。
因为该固件库是通用的,并且包括了所有外设的功能,所以应用程序代码的大小和执行速度可能不是最优的。
对大多数应用程序来说,用户可以直接使用之,对于那些在代码大小和执行速度方面有严格要求的应用程序,该固件库驱动程序可以作为如何设置外设的一份参考资料,根据实际需求对其进行调整。
简朴描述:SPI 和I2C这两种通信方式都是短距离旳,芯片和芯片之间或者其他元器件如传感器和芯片之间旳通信。
SPI和IIC是板上通信,IIC有时也会做板间通信,但是距离甚短,但是超过一米,例如某些触摸屏,手机液晶屏那些很薄膜排线诸多用IIC,I2C能用于替代原则旳并行总线,能连接旳多种集成电路和功能模块。
I2C是多主控总线,因此任何一种设备都能像主控器同样工作,并控制总线。
总线上每一种设备均有一种独一无二旳地址,根据设备它们自己旳能力,它们可以作为发射器或接受器工作。
多路微控制器能在同一种I2C总线上共存这两种线属于低速传播;ﻫ而UART是应用于两个设备之间旳通信,如用单片机做好旳设备和计算机旳通信。
这样旳通信可以做长距离旳。
UART和,UART就是我们指旳串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范畴不会很长,约10米左右,UART长处是支持面广,程序设计构造很简朴,随着USB旳发展,UART也逐渐走向下坡;SmBus有点类似于USB设备跟计算机那样旳短距离通信。
ﻫ简朴旳狭义旳说SPI和I2C是做在电路板上旳。
而UART和SMBUS是在机器外面连接两个机器旳。
具体描述:1、UART(TX,RX)就是两线,一根发送一根接受,可以全双工通信,线数也比较少。
数据是异步传播旳,对双方旳时序规定比较严格,通信速度也不是不久。
在多机通信上面用旳最多。
2、SPI(CLK,I/O,O,CS)接口和上面UART相比,多了一条同步时钟线,上面UART旳缺陷也就是它旳长处了,对通信双方旳时序规定不严格不同设备之间可以很容易结合,并且通信速度非常快。
一般用在产品内部元件之间旳高速数据通信上面,如大容量存储器等。
3、I2C(SCL,SDA)接口也是两线接口,它是两根线之间通过复杂旳逻辑关系传播数据旳,通信速度不高,程序写起来也比较复杂。
一般单片机系统里重要用来和24C02等小容易存储器连接。
SPI总线协议介绍 ⼀、概述 SPI = Serial Peripheral Interface,是串⾏外围接⼝设备,是⼀种⾼速,全双⼯,同步的通信总线。
常规只占⽤四根线,节约了芯⽚管脚,PCB的布局省空间。
优点: ⽀持全双⼯,push-pull的驱动性能相⽐open-drain信号完整性更好。
⽀持⾼速(100MHz以上)。
协议⽀持字节长不限于8bits,可根据应⽤特点灵活选择消息字长 硬件连接简单。
缺点: 相⽐I2C多两根线。
没有寻址机制,只能靠⽚选选择不同设备。
没有从设备接收ACK,主设备对于发送成功与否不得⽽知。
典型应⽤只⽀持单主控 相⽐RS232 RS485和CAN总线,SPI传输距离短 ⼆、硬件结构 SPI总线定义两个及以上设备间的数据通信,提供时钟的设备为主设备Master,接收时钟的设备为从设备Slave; 信号定义如下: SCK :Serial Clock 串⾏时钟 MOSI:Master Ouput,Slave Input 主发从收信号 MISO:Master Input,Slave Input主收从发信号 SS/CS:Slave Select⽚选信号 电路连接如下: 单个主设备和单个从设备: 单个主设备和多个从设备: 三、寄存器类型 摩托罗拉定义的SPI寄存器包括: SPI Control Register 1 控制寄存器1 SPI Control Register 2 控制寄存器2 SPI Baud Rate Register 波特率寄存器 SPI Status Register(SPISR) 状态寄存器(只读其余均可读可写) SPI Data Register(SPIDR)数据寄存器 通过往寄存器中写⼊不同的值,设置SPI模块的不同属性 四、SPI传输模式 SPI通信有四种模式,简单地讲就是设置SCLK时钟信号线的那种信号为有效信号 通过设置控制寄存器SPICR1中的CPOL和CPHA位,将SPI可以分成四种传输模式 时钟极性CPOL,即Clock Polarity,决定时钟空闲时状态电平。
SPI、I2C、UART三种串⾏总线协议的区别和SPI接⼝介绍(转)SPI、I2C、UART三种串⾏总线协议的区别第⼀个区别当然是名字:SPI(Serial Peripheral Interface:串⾏外设接⼝);I2C(INTER IC BUS)UART(Universal Asynchronous Receiver Transmitter:通⽤异步收发器)第⼆,区别在电⽓信号线上:SPI总线由三条信号线组成:串⾏时钟(SCLK)、串⾏数据输出(SDO)、串⾏数据输⼊(SDI)。
SPI总线可以实现多个SPI设备互相连接。
提供SPI串⾏时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。
主从设备间可以实现全双⼯通信,当有多个从设备时,还可以增加⼀条从设备选择线。
如果⽤通⽤IO⼝模拟SPI总线,必须要有⼀个输出⼝(SDO),⼀个输⼊⼝(SDI),另⼀个⼝则视实现的设备类型⽽定,如果要实现主从设备,则需输⼊输出⼝,若只实现主设备,则需输出⼝即可,若只实现从设备,则只需输⼊⼝即可。
I2C总线是双向、两线(SCL、SDA)、串⾏、多主控(multi-master)接⼝标准,具有总线仲裁机制,⾮常适合在器件之间进⾏近距离、⾮经常性的数据通信。
在它的协议体系中,传输数据时都会带上⽬的设备的设备地址,因此可以实现设备组⽹。
如果⽤通⽤IO⼝模拟I2C总线,并实现双向传输,则需⼀个输⼊输出⼝(SDA),另外还需⼀个输出⼝(SCL)。
(注:I2C资料了解得⽐较少,这⾥的描述可能很不完备)UART总线是异步串⼝,因此⼀般⽐前两种同步串⼝的结构要复杂很多,⼀般由波特率产⽣器(产⽣的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,⼀根⽤于发送,⼀根⽤于接收。
显然,如果⽤通⽤IO⼝模拟UART总线,则需⼀个输⼊⼝,⼀个输出⼝。
第三,从第⼆点明显可以看出,SPI和UART可以实现全双⼯,但I2C不⾏;第四,看看⽜⼈们的意见吧!wudanyu:I2C线更少,我觉得⽐UART、SPI更为强⼤,但是技术上也更加⿇烦些,因为I2C需要有双向IO的⽀持,⽽且使⽤上拉电阻,我觉得抗⼲扰能⼒较弱,⼀般⽤于同⼀板卡上芯⽚之间的通信,较少⽤于远距离通信。
SPI协议翻译专有名词第一章、简介图1-1概述了SPI的基本架构。
SPI的主要组成部分是状态、控制盒数据寄存器,移位逻辑,波特率发生器,主从控制逻辑和端口控制逻辑。
图1-1 SPI框图1.1概述SPI模块允许在MCU和外设之间进行双工,同步,串行通信。
软件可投票决定SPI的状态标志或者说SPI的操作可以被中断。
1.2特性SPI包含这些独特的特性:(1)主模式和从模式(2)双向模式(3)从选择输出(4)CPU的模式错误标志中断能力(5)双缓冲数据寄存器(6)串行时钟的极性和相位可编程(7)对SPI在等待模式期间的操作控制1.3各种模式的操作SPI有三种工作模式,运行,等待和停止模式。
(1)运行模式这个是基本运行模式(2)等待模式SPI运行在等待模式的时候是一个可配置的低功耗的模式,被SPICR2中的SPISWAI位控制。
在等待模式下,如果SPIWAI位是清0的,SPI就像运行在运行模式下一样。
如果SPIWAI位是置位的,SPI就会进入功率保持状态,SPI的时钟产生被关闭。
如果SPI被配置成一个主机,任何传输都被停止,但是当CPU进入运行模式的时候将重新开始。
如果SPI被配置成一个从机,接收和传输一个byte继续,所以从机一直与主机保持同步。
(3)停止模式SPI在这个模式下为了减少功耗是保守的(低功耗)。
如果SPI被配置成一个主机,任何传输都会被停止,当CPU进入运行模式后会继续。
如果SPI 被配置成一个从机,接收和传输一个byte继续,所以从机一直保持与主机同步。
这些只是高层面上的说明,详细的模式操作说明被包含在4.8低功耗模式设置。
第二章、外部信号说明2.1概述本节列出的名称和端口包括所有输入和输出,或者各种可能性,芯片之间的连接。
SPI模块有4个外引脚。
2.2 详细的信号的描述2.2.1 MOSI当SPI被配置成主机时这个引脚被用于传输数据,被配置成从机的时候这个引脚被用于接收数据。
2.2.2 MISO当SPI被配置成从机时这个引脚被用于传输数据,被配置成主机的时候这个引脚被用于接收数据。
SPI的接口及其应用2010-09-01 00:10:29| 分类:ARM及程序设计| 标签:|字号大中小订阅1 SPI接口的特点目前很多单片机都配置有SPI、I2C或UART等串行接口。
在SPI、I2C及UART三种串行接口一般情况下速度最快的是SPI。
I2C接口由于是二线协议速度很难超过1MHz/ Bit,而UART工作在方式0(8位移位寄存器)时时钟速度为系统时钟的十二分之一(Fosc/12),而SPI接口时钟速度一般为系统时钟的四分之一(Fosc/4)。
典型SPI接口结构如图1所示。
串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。
SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。
SPI可以同时发出和接收串行数据。
它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。
这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。
当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。
发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。
主SPI的时钟信号(SCK)使传输同步。
SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。
图2和图3中还给出了SPI总线工作的四种方式及SPI总线接口的时序。
SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。
STM32---SPI通信的总结(库函数操作)本文主要由7项内容介绍SPI并会在最后附上测试源码供参考:1.SPI的通信协议2.SPI通信初始化(以STM32为从机,LPC1114为主机介绍)3.SPI的读写函数4.SPI的中断配置5.SPI的SMA操作6.测试源码7.易出现的问题及原因和解决方法一、SPI的通信协议SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。
SPI 接口一般由4根线组成,CS片选信号(有的单片机上也称为NSS),SCLK时钟信号线,MISO数据线(主机输入从机输出),MOSI数据线(主机输出从机输入),CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟信号来发起通讯。
通讯时主机的数据由MISO输入,由MOSI 输出,输入的数据在时钟的上升或下降沿被采样,输出数据在紧接着的下降或上升沿被发出(具体由SPI的时钟相位和极性的设置而决定)。
二、以STM32为例介绍SPI通信1.STM32f103 带有3个SPI模块其特性如下:2SPI 初始化初始化SPI 主要是对SPI要使用到的引脚以及SPI通信协议中时钟相位和极性进行设置,其实STM32的工程师已经帮我们做好了这写工作,调用库函数,根据自己的需要来修改其中的参量来完成自己的配置即可,主要的配置是如下几项:●引脚的配置SPI1的SCLK, MISO ,MOSI分别是PA5,PA6,PA7引脚,这几个引脚的模式都配置成GPIO_Mode_AF_PP 复用推挽输出(关于GPIO 的8种工作模式如不清楚请自己百度,在此不解释),如果是单主单从,CS引脚可以不配置,都设置成软件模式即可。
●通信参数的设置1.SPI_Direction_2Lines_FullDuplex把SPI设置成全双工通信;2.在SPI_Mode 里设置你的模式(主机或者从机),3.SPI_DataSize是来设置数据传输的帧格式的SPI_DataSize_8b是指8位数据帧格式,也可以设置为SPI_DataSize_16b,即16位帧格式4.SPI_CPOL和SPI_CPHA是两个很重要的参数,是设置SPI通信时钟的极性和相位的,一共有四种模式在库函数中CPOL有两个值SPI_CPOL_High(=1)和SPI_CPOL_Low ( =0). CPHA有两个值SPI_CPHA_1Edge (=0) 和SPI_CPHA_2Edge(=1)CPOL表示时钟在空闲状态的极性是高电平还是低电平,而CPHA则表示数据是在什么时刻被采样的,手册中如下:我的程序中主、从机的这两位设置的相同都是设置成1,即空闲时时钟是高电平,数据再第二个时钟沿被采样,实验显示数据收发都正常。
SPI总线通俗易懂讲解SPI总线MOTOROLA公司的SPI总线的基本信号线为3根传输线,即SI、SO、SCK。
传输的速率由时钟信号SCK决定,SI为数据输入、SO为数据输出。
采用SPI总线的系统如图8-27所示,它包含了一个主片和多个从片,主片通过发出片选信号-CS来控制对哪个从片进行通信,当某个从片的-CS信号有效时,能通过SI接收指令、数据,并通过SO发回数据。
而未被选中的从片的SO端处于高阻状态。
图8-27 SPI总线的系统主片在访问某一从片时,必须使该从片的片选信号有效;主片在SCK信号的同步下,通过SI线发出指令、地址信息;如需将数据输出,则接着写指令,由SCK同步在SI线上发出数据;如需读回数据,则接着读指令,由主片发出SCK,从片根据SCK的节拍通过SO发回数据。
因而对具有SPI接口的从片器件来讲,SCK、SI是输入信号,SO是输出信号。
SCK 用于主片和从片通信的同步。
SI用于将信息传输到器件,输入的信息包括指令、地址和数据,指令、地址和数据的变化在SCK的低电平期间进行,并由SCK信号的上升沿锁存。
SO用于将信息从器件传出,传出的信息包括状态和数据,信息在SCK信号的下降沿移出。
Microchip公司的25XX系列的串行E2PROM采用了SPI总线,该系列器件的性能如表8-2所示。
表8-2 Microchip公司的25XX系列的串行E2PROM型号25XX04025XX08025XX16025XX320容量4K(512 X 8bit)8K(1024 X 8bit)16K(4096 X 8bit)32K(4096 X 8bit)地址信号A0~A8A0~A9A0~A10A0~A11以25XX320为例,该器件是4K字节的E2PROM,结构如图8-28所示,接口信号为SCK、SI和SO,此外还具有-CS、-WP、-HOLD信号线。
其中-CS为器件选中信号,当此信号为低电平时器件被选中,高电平时器件处于等待状态。
SPI总线简介SPI总线基本概念SPI ( Serial Peripheral Interface ———串行外设接口) 总线是Motorola公司推出的一种同步串行接口技术。
SPI总线系统是一种同步串行外设接口,允许MCU 与各种外围设备以串行方式进行通信、数据交换。
外围设备包括FLASHRAM、A/ D 转换器、网络控制器、MCU 等。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
其工作模式有两种:主模式和从模式。
SPI是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。
也就是SPI是一种规定好的通讯方式。
这种通信方式的优点是占用端口较少,一般4根就够基本通讯了(不算电源线)。
同时传输速度也很高。
一般来说要求主设备要有SPI控制器(也可用模拟方式),就可以与基于SPI的芯片通讯了。
SPI总线系统结构SPI 系统可直接与各个厂家生产的多种标准外围器件直接接口,一般使用4 条线:串行时钟线(SCK) 、主机输入/ 从机输出数据线MISO(DO)、主机输出/ 从机输入数据线MOSI (DI)和低电平有效的从机选择线CS。
MISO和MOSI用于串行接收和发送数据,先为MSB(高位),后为LSB(低位)。
在SPI设置为主机方式时,MISO是主机数据输入给,MOSI 是主机数据输出线。
SCK用于提供时钟脉冲将数据一位位地传送。
SPI总线器件间传送数据框图如图3所示:图3 SPI总线器件间传送数据框图SPI总线的接口特性利用SPI总线可在软件的控制下构成各种系统。
如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构成的各种系统等。
在大多数应用场合,可使用1个MCU作为主控机来控制数据,并向1个或几个从外围器件传送该数据。
总线SPI解释关于SPI解释Serial Peripheral Interface BusFrom Wikipedia, the free encyclopediaThe Serial Peripheral Interface Bus or SPI (often pronounced "es-pē-ī" [IPA: ɛs pi aɪ] or "spy" [IPA: spaɪ]) bus is a synchronous serial data link standard named by Motorola that operates in full duplex mode. Devices communicate in master/slave mode where the master device initiates the data frame. Multiple slave devices are allowed with individual slave select (chip select) lines. Sometimes SPI is called a "four wire" serial bus, contrasting with three, two, and one wire serial busses.InterfaceThe SPI bus specifies four logic signals.SCLK — Serial Clock (output from master)MOSI/SIMO — Master Output, Slave Input (output from master)MISO/SOMI — Master Input, Slave Output (output from slave)SS — Slave Select (active low; output from master)Alternative naming conventions are also widely used:SCK — Serial Clock (output from master)SDI, DI, SI — Serial Data InSDO, DO, SO — Serial Data OutnCS, CS, nSS, STE — Chip Select, Slave Transmit Enable (active low; output from master)The SDI/SDO (DI/DO, SI/SO) convention requires that SDO on the master be connected to SDI on the slave, and vice-versa.SPI port pin names for particular IC products may differ from those depicted in these illustrations.OperationThe SPI bus can operate with a single master device and with one or more slave devices.If a single slave device is used, the SS pin may be fixed to logic low if the slave permits it. Some slaves require the falling edge (high->low transition) of the slave select to initiate an action such as the MAX1242 by Maxim, an ADC, that starts conversion on said transition. With multiple slave devices, an independent SS signal is required from the master for each slave device.Most devices have tri-state outputs that become high impedance ("disconnected") when the device is not selected. Devices without tristate outputs can't share SPI bus segments with other devices; only one such slave may talk to the master, and only its chipselect may be activated.Data TransmissionA typical hardware setup using two shift registers to forman inter-chip circular bufferTo begin a communication, the master first configures the clock, using a frequency less than or equal to the maximum frequency the slave device supports. Such frequencies are commonly in the range of 1-70 MHz.The master then pulls the slave select low for the desired chip. If a waiting period is required (such as for analog-to-digital conversion) then the master must wait for at least that period of time before starting to issue clock cycles.During each SPI clock cycle, a full duplex data transmission occurs:the master sends a bit on the MOSI line; the slave reads it from that same linethe slave sends a bit on the MISO line; the master reads it from that same lineNot all transmissions require all four of these operations to be meaningful but they do happen.Transmissions normally involve two shift registers of some given word size, such as eight bits, one in the master and one in the slave; they are connected in a ring. Data is usually shifted out with the most significant bit first, while shifting a new least significant bit into the same register. After that register has been shifted out, the master and slave have exchanged register values. Then each device takes that value and does something with it, such as writing it to memory. If there is more data to exchange, the shift registers are loaded with new data and the process repeats.Transmissions may involve any number of clock cycles. When there are no more data to be transmitted, the master stops toggling its clock. Normally, it then deselects the slave.Transmissions often consist of 8-bit words, and a master can initiate multiple such transmissions if it wishes/needs. However, other word sizes are also common, such as 16-bit words for touchscreen controllers or audio codecs, like the TSC2101 from Texas Instruments; or 12-bit words for many digital-to-analog or analog-to-digital converters.Every slave on the bus that hasn't been activated using its slave select line must disregard the input clock and MOSI signals, and may not drive MISO. The master selects only one slave at a time.[edit] Clock polarity and phaseA timing diagram showing clock polarity and phaseIn addition to setting the clock frequency, the master must also configure the clock polarity and phase with respect to the data. Freescale's SPI Block Guide [1] names these two options as CPOL and CPHA respectively, and most vendors have adopted that convention.The timing diagram is shown to the right. The timing is further described below and applies to both the master and the slave device.At CPOL=0 the base value of the clock is zeroFor CPHA=0, data are read on the clock's rising edge (low->high transition) and data are changed on a fallingedge (high->low clock transition).For CPHA=1, data are read on the clock's falling edge and data are changed on a rising edge.At CPOL=1 the base value of the clock is one (inversion of CPOL=0)For CPHA=0, data are read on clock's falling edge and data are changed on a rising edge.For CPHA=1, data are read on clock's rising edge and data are changed on a falling edge.That is, CPHA=0 means sample on the leading (first) clock edge, while CPHA=1 means sample on the trailing (second) clock edge, regardless of whether that clock edge is rising or falling. Note that with CPHA=0, the data must be stable for a half cycle before the first clock cycle. Also, note that no matter what the CPOL and CPHA modes say, the initial clock value must be stable before the chip select line goes active.This adds more flexibility to the communication channel between the master and slave.[edit] Mode NumbersThe combinations of polarity and phases are often referred to as modes which are commonly numbered according to the following convention, with CPOL as the high order bit and CPHA as the low order bit:Mode CPOL CPHA000101210311[edit] Independent slave SPI configurationTypical SPI bus: master and three independentslavesIn the independent slave configuration, there is an independent slave select line for each slave. This is the way SPI isnormally used. Since the MISO pins of the slaves are connected together, they are required to be tri-state pins.Daisy chain SPI configurationDaisy-chained SPI bus: master and cooperativeslavesSome products with SPI bus are designed to be capable of being connected in a daisy chain configuration, the first slave output being connected to the second slave input, etc. The SPI port of each slave is designed to send out during the second group of clock pulses an exact copy of what it received during the first group of clock pulses. The whole chain acts as an SPI communication shift register; daisy chaining is often done with shift registers to provide a bank of inputs or outputs through SPI. Such a feature only requires a single SS line from the master, rather than a separate SS line for each slave.This somewhat resembles SGPIO, although SGPIO is limited to particular backplane management activities and would not interoperate with most SPI chips.Valid SPI communicationsSome slave devices are designed to ignore any SPI communications in which the number of clock pulses is greater than specified. Others don't care, ignoring extra inputs and continuing to shift the same output bit. It is common for different devices to use SPI communications with different lengths, as, for example, when SPI is used to access the scan chain of a digital IC by issuing a command word of one size (perhaps 32 bits) and then getting a response of a different size (perhaps 153 bits, one for each pin in that scan chain).InterruptsSPI devices sometimes use another signal line to send an interrupt signal to a host CPU. Examples include pen-down interrupts from touchscreen sensors, thermal limit alerts from temperature sensors, alarms issued by real time clock chips, and headset jack insertions from the sound codec in a cell phone.Pros and cons of SPIAdvantagesFull duplex communicationHigher throughput than I²C or SMBusComplete protocol flexibility for the bits transferredNot limited to 8-bit wordsArbitrary choice of message size, content, and purposeExtremely simple hardware interfacingTypically lower power requirements than I²C or SMBus due to less circuitry (including pullups)No arbitration or associated failure modesSlaves use the master's clock, and don't need precision oscillatorsTransceivers are not neededUses many fewer pins on IC packages, and wires in board layouts or connectors, than parallel interfacesAt most one "unique" bus signal per device (chipselect); all others are sharedDisadvantagesRequires more pins on IC packages than I²C, even in the "3-Wire" variantNo in-band addressing; out-of-band chip select signals are required on shared bussesNo hardware flow controlNo slave acknowledgment (the master could be "talking" to nothing and not know it)Can operate with only one master deviceWithout a formal standard, validating conformance is not possibleOnly handles short distances compared to RS-232, RS-485, or CAN-bus。
串行外围接口SPI的访问
作者:Siri Namtvedt 关键字:
• CC1100 • CC1101 • CC1150 • CC2500 • CC2550 • SPI
•复位
•突发访问•命令滤波
1 简介
本设计说明的目的是让我们了解该如何配置SPI接口使其能够与CC1100/CC1101/CC1150/CC2500/CC2550连接,并且告诉我们要如何理解状态字节,以及复位开关在SPI接口上是怎么实现的,另外也描述了我们可以使用的不同SPI接口的访问(读/写,单址访问/突发访问以及命令滤波)。
目录
1简介 (1)
2缩写词 (3)
3SPI接口 (3)
3.1SPI接口配置 (3)
3.2 SPI接口的时间要求 (4)
3.3 SPI的访问 (4)
3.4单字节访问 (5)
3.5突发访问 (5)
3.6命令滤波 (5)
4芯片的状态字节 (7)
5复位 (9)
6总说明 (10)
2 缩写词
MCU 微控制器单元
SPI 串行外围接口
3 SPI接口
CC1100/CC1101/CC1150/CC2500/CC2550的接口配置为一个简单的4线SPI兼容接口(SI, SO, SCLK和CSn),在这里无线电受到MCU的控制。
这个接口也可以同时用作写或读缓存数据。
在SPI接口上传输的所有地址和数据都要在最重要的位上先进行。
图1 4-线SPI接口
3.1SPI接口配置
配置时要注意连接MCU的SPI接口必须在主模式下操作。
配置时钟相位时要确保数据的中心在SCLK周期的第一个正边缘处,在选择极性时要确保SCLK在静止状态时为低电平。
图2 SPI接口的时钟相位和极性
3.2SPI接口的时间要求
关于SPI接口的时间要求,详情请查看芯片数据表。
值得注意的是最大SCLK频率(fsclk)是如何改变的,这主要取决于SPI接口的使用情况。
SPI时钟运行的最大频率是10 MHz,在地址字节和数据字节(单字节)之间、地址和数据之间或者每一个数据字节之间(突发访问)的最小延迟是100ns。
如图3所示。
图3 f SCLK = 10 MHz Max
如果各字节之间没有延迟,那么单通道的最大时钟速度是9MHz(图4),突发访问为6.5MHz(图5)。
3.3SPI的访问
芯片上有47个配置寄存器(地址0000至地址0x2E)。
寄存器的读写操作由头地址的R/W 位控制,而burst突发访问位控制访问方式为单字节还是突发访问。
图6 头地址
当CSn变低,我们总是要等到MISO(CHIP_RDYn)变为低电平之后再进行头地址的写操作。
CHIP_RDYn信号表明晶体正在运行,调节数字供给电压是稳定的。
只要芯片不是在SLEEP或XOFF状态或者一个SRES闪光灯发出命令的情况下,SO引脚总是在CSn变成低电平之后也迅速变为低电平。
图7
图7显示了电磁波从IDLE (1)静止状态转变为SLEEP休眠状态(SPWD),接着通过发射一个TX滤波(STX) (2)使其在休眠状态后被唤醒的工作过程。
当CSn变为低电平时电磁波从休眠状态中唤醒。
在CSn首次变为低电平时,MISO变为高电平,然后又立即成为低电平,这样就表示芯片已经准备工作了。
当CSn第二次变为低电平时,因为电磁波回到了休眠状态,所以MISO又变为高电平。
等到电压调节器稳定之后,晶体开始运行,MISO变回低电平,此时可以安全发送TX滤波。
3.4单字节访问
单字节访问寄存器时,突发访问位必须置0。
发送地址头以后可以根据R/W位发送或读入一个数据字节。
在数据字节之后等待一个新的地址,因此,CSn继续保持低电平。
图8表明了数据0x0A是如何首先写入寄存器0x02,然后从同一个寄存器中读出来的。
3.5突发访问
当突发访问位置1时,电磁波会要求一个地址字节和接下来的连续的数据字节,直到CSn 变为高电平,访问终止。
3.6命令滤波
命令滤波是单字节指令,它可以启动一个内部序列(启动RX,进入掉电模式等)。
命令滤波和一系列的状态寄存器(地址0x30到地址0x3F)共享地址。
这些状态寄存器不能用突发访问模式来访问。
如果突发访问位是1,那么访问的就是状态寄存器;如果突发访问位是0,则发送一个命令滤波。
一个命令滤波可能在任何其他SPI访问之后,而不需要将CSn拉至高电平。
在处理完一个SRES命令滤波之后,当MISO引脚变成低电平时,可以处理下一个命令滤波。
命令滤波可以立即被执行,但是当CSn为高电平时SPWD和SXOFF滤波是例外。
当CSn被拉为低电平时,MISO已经变为低电平,表明芯片已经准备好了。
SIDLE(离开RX/TX)滤波紧随在一个寄存器写操作和一个无需等待CHIP_RDYn信号的SRES(重启芯片)滤波后。
在复位滤波之后,在MISO变为低电平之前需要一些时间才能读寄存器0x00。
从这个寄存器读到的数值是0x29(复位之后的默认数值)。
4芯片的状态字节
当在SPI接口上发送头字节、数据字节或命令滤波时,CC1100在SO引脚上发送芯片状
表1 状态字节概要
当写寄存器时,每次一个头字节或者数据字节在MOSI 引脚上传送,一个状态字节都在MISO 引脚上传送。
当读寄存器时,每次一个头字节在 MOSI 引脚上传送时,一个状态字节都在MISO引脚上传送。
注意状态字节的4LSB(FIFO_BYTES_AVAILABLE)可以为TX FIFO (R/W = 0) or和RX FIFO (R/W = 1)提供信息。
图11 状态字节说明
第一次转移是将0x0A写到寄存器0x02上。
因为这是一个写操作,所以当地址头(1)和数据字节(2)都传送时,状态字节在MISO线上传送。
状态字节(0x0F)告诉我们,电磁波处于空闲状态,并且TX FIFO (FIFO_BYTES_AVAILABLE = 15)上有15个或以上的自由字节。
第二次转移是从寄存器0x02上进行读操作。
因为这是一个读操作,所以仅仅在传送地址头时状态字节才能在MISO线上传送。
在MISO线上的下一个字节是寄存器0x02的内容——0x0A。
这个状态字节告诉我们电磁波处在空闲状态(STATE = 0),并且在RX FIFO(FIFO_BYTES_AVAILABLE = 0)上没有字节可用。
5复位
当电源电压满足在数据表中详细列出的需求时,相应的上电复位功能就可以保证。
否则,认为芯片处于一个未知状态,直到一个执行SW复位(见图12)。
•选通低/高电平
•相对于把CSn拉低之后,保持CSn高电平至少40μs
•将CSn拉低以等待SO变为低电平
•在SI线上执行SRES滤波
图12 通过SRES的上电复位
看下面的代码:
6总说明。