Download presentation
Presentation is loading. Please wait.
1
第十四讲 SPI高速同步串行输入/输出端口
《手把手教你学DSP——基于TMS320F28335》配套视频资料 第十四讲 SPI高速同步串行输入/输出端口 南京研旭电气科技有限公司 公司网站: 天猫旗舰店:yanxusmpj.tmall.com 学习论坛:
2
本课程是依照南京研旭电气科技有限公司推出的TMS320F28335至尊板来进行详细讲解的,如果在学习过程中遇到任何疑问欢迎与我们进行联系沟通。
3
本教程是依照南京研旭电气科技有限公司推出的TMS320F28335至尊板来进行详细讲解的。本书详细地阐述了TMS320F28335 DSP处理器内部各功能模块的硬件结构、工作原理、资源分配、功能特点以及应用等内容,同时每个模块都配了实验教程,方便学生掌握提高。 本书配套资料包括:书中所有实例例程、烧写软件工具、配套PPT、配套视频以及常用的调试工具软件,读者可以在研旭电气提供的交流论坛( 网站免费获取。 本书可作为DSP开发应用的入门级教材,也可作为其他层次DSP开发应用人员的参考手册。
4
第十四讲 SPI高速同步串行输入/输出端口
2、F28335的SPI模块 3、SPI寄存器 4、SPI应用
5
SPI概述 SPI即Serial Peripheral Interface是高速同步串行输入/输出端口,SPI最早是由Freescale(原属Motorola)公司在其MC68HCxx系列处理器上定义的一种高速同步串行接口。SPI目前被广泛用于外部移位寄存器、D/A、 A/D、串行EEPROM、LED显示驱动器等外部芯片的扩展。与前文介绍的SCI最大的区别是,SPI是同步串行接口。SPI总线包括1根串行同步时钟信号线(SCI不需要)以及2根数据线,实际总线接口一般使用4根线,即SPI四线制:串行时钟线、主机输入/从机输出数据线、主机输出/从机输入数据线和低电平有效的从机片选线。有的SPI接口带有中断信号线,也有SPI接口没有主机输出/从机输入线。在F28335中使用的是上文介绍的SPI四线制。
6
SPI概述 SPI接口的通信原理简单,以主从方式进行工作。在这种模式中,必须要有一个主设备,可以有多个从设备。通过片选信号来控制通信从机,SPI时钟引脚提供串行通信同步时钟,数据从从入主出引脚输出,从出主入引脚输入。通过波特率寄存器设置数据速率。SPI向输入数据寄存器或发送缓冲器写入数据时就启动了从入主出引脚上的数据发送,先发送最高位。同时,接收数据通过从出主入引脚移入数据寄存器最低位。选定数量位发送结束,则整个数据发送完毕。收到的数据传送到SPI接收寄存器,右对齐供CPU读取。SPI的通信链接如图14.1所示:
7
第十四讲 SPI高速同步串行输入/输出端口
2、F28335的SPI模块 3、SPI寄存器 4、SPI应用
8
F28335的SPI模块 F28335 SPI特点 28335的SPI接口具有以下特点。 1、4个外部引脚:
SPISOMI:SPI从输出/主输入引脚; SPISIMO:SPI从输入/主输出引脚; SPISTE :SPI从发送使能引脚; SPICLK :SPI串行时钟引脚。 2、2种工作方式:主和从工作方式。 波特率:125种可编程波特率。 数据字长:可编程的1~16个数据长度。 3、4种时钟模式(由时钟极性和时钟相应控制); 无相位延时的下降沿;SPICLK为高电平有效。在SPICLK信号的下降沿发送数据,在SPICLK信号的上升沿接收数据; 有相位延时的下降沿:SPICLK为高电平有效。在SPICLK信号的下降沿之前的半个周期发送数据,在SPICLK信号的下降沿接收数据; 无相位延迟的上升沿:SPICLK为低电平有效。在SPICLK信号的上升沿发送数据,在SPICLK信号的下降沿接收数据; 有相位延迟的上升沿:SPICLK为低电平有效。在SPICLK信号的下降沿之前的半个周期发送数据,而在SPICLK信号的上升沿接收数据。 4、接收和发送可同时操作(可以通过软件屏蔽发送功能)。 通过中断或查询方式实现发送和接收操作。 9个SPI模块控制寄存器。 5、增强特点: 16级发送/接收FIFO; 延时发送控制。
9
F28335的SPI模块
10
F28335的SPI模块 F28335 SPI工作模式 典型的两个SPI控制器连接方式如下图14.4所示:
主控器发送SPICLK信号时,也启动了数据传输。无论是主控制器还是从控制器,数据都是在SPICLK边沿时移出移位寄存器,并且在相反的边沿锁存进移位寄存器。如果CLOCK PHASE(SPICTL.3)位为高电平,则数据在SPICLK跳变之前的半个周期被发送和接收。因此两个控制器的数据的接收与发送是同步的。应用软件决定数据是否有用还是仅仅是占位的无意义的数据。数据传输的时候有三种可能形式: 1、Master发送数据,Slave发送伪数据; 2、Master发送数据,Slave发送数据; 3、Master发送伪数据Slave发送数据。 主控制器因为控制着SPICLK信号,所以可以在任何时候来启动数据传输。但是软件决定着主控制器是如何检测到从控制器已经准备好数据传输。
11
F28335的SPI模块 SPI的工作模式是通过主/从位(MASTER/SLAVE位SPICTL.2)来选择。 1 主控制器模式
MASTER/SLAVE=1时,控制器工作在主控制器模式下,SPI通过主控制器的SPICLK引脚为整个串行通信网络提供时钟。数据从SPISIMO引脚输出,并锁存SPISOMI引脚上输入的数据。可以通过SPIBRR寄存器(SPI波特率寄存器)配置数据传输率,可以配置126种不同的数据传输率。 数据写到SPIDAT(SPI数据寄存器)或SPITXBUF(SPI输出缓冲寄存器)时会启动SPISIMO引脚上的数据发送,首先发送的是最高位有效位(MSB most significant bit)。同时,接收的数据通过SPISOMI引脚移入SPIDAT的最低有效位。当传输完指定的位数后,接收到的数据被存放到SPIRXBUF寄存器,以备CPU读取。数据在SPIRXBUF寄存器中采用右对齐的方式存储。 指定数量的数据位通过SPIDAT移出后,会发生下列事件: Ø SPIDAT中的内容发送到SPIRXBUF寄存器中。 Ø SPI INT FLAG位(SPISTS.6)置1。 如果在发送缓冲器SPITXBUF中还有有效的数据(SPISTS寄存器中的TXBUF FULL位用来标志是否在SPITXBUF中存在有效数据),则这个数据被传送到SPIDAT寄存器被发送出去。若所有位从SPIDAT寄存器移出后,SPICLK时钟即停止。 如果SPI中断使能位SPI INT ENA位(SPICTL.0)为高电平,则产生中断。 在典型应用中, SPISET引脚作为从SPI控制器的片选控制信号,在主SPI设备同从SPI设备之间传送信息的过程中,被置成低电平;当数据传送完毕后,再改该引脚为高电平。
12
F28335的SPI模块 从控制器模式 在从控制器模式中(MASTER/SLAVE = 0),SPISOMI引脚为数据输出引脚,SPISIMO引脚为数据输入引脚。SPICLK引脚为串行移位时钟的输入,该时钟有网络主控制器提供,传输率也由该时钟决定。SPICLK输入频率不应超过CLKOUT频率的四分之一。 当从SPI设备检测到来自网络主控制器的SPICLK信号的合适时钟边沿时,已经写入SPIDAT或SPITXBUF寄存器的数据被发送到网络上。要发送字符的所有位移出SPIDAT寄存器后,写入到SPITXBUF寄存器的数据将会传送到SPIDAT寄存器。如果向SPITXBUF写入数据时没有数据发送,数据将立即传送到SPIDAT寄存器。为了能够接受数据,从SPI设备等待网络主控器发送SPICLK信号,然后将SPISIMO引进的数据移入到SPIDAT寄存器中,如果从设备同时也发送数据,而且SPITX部分还没有装载数据,则必须在SPICLK开始之前把数据写入到SPITXBUF或SPIDAT寄存器。 当TALK位(SPICTL.1)清零,数据发送被禁止,输出引脚(SPISOMI)处于高阻态。如果在发送数据期间将TALK位(SPICTL.1)清零,即使SPISOMI引脚被强制成高阻状态也要完成当前的字符传输。这样可以保证SPI设备能够正确地接收数据。TALK位允许在网络上设有许多个从SPI设备,但在某一时刻只能有1个从设备来驱动SPISOMI。 SPISET引脚用作从器件的选通引脚,当该引脚为低电平时,允许从SPI设备向串行总线发送数据;当该引脚为高电平时,从SPI串行移位寄存器停止工作,串行输出引脚被置成高阻状态。在同一网络上可以连接多个从SPI设备,但同一时刻只能有1个从设备起作用。
13
F28335的SPI模块 SPI的数据传输 SPI接口数据传输时一共有3种模式:简单模式、基本模式、增强模式。下面依次介绍这3种模式。
在简单工作模式下,SPI可以通过移位寄存器实现数据交换,即通过SPIDAT寄存器移入或移出数据。在发送数据帧的过程中将16位的数据发送到SPITXBUF缓冲,直接从SPIRXBUF读取接收到的数据帧。 在基本操作模式下,接收操作采用双缓冲,也就是在新的接收操作启动时,CPU可以暂时不读取SPIRXBUF中接收到的数据,但是在新的接收操作完成之前必须读取SPIRXBUF,否则将会覆盖原来接收到的数据。在这种模式下,发送操作不支持双缓冲操作。在下一个字写到SPITXDAT寄存器之前必须将当前的数据发送出去,否则会导致当前的数据损坏。由于主设备控制SPICLK时钟信号,他可以在任何时候配置数据传输。 在增强的FIFO缓冲模式下,用户可以建立16级深度的发送和接收缓冲,而对于程序操作仍然使用SPITXBUF和SPIRXBUF寄存器。这样可以使SPI具有接收或发送16次数据的能力。此种模式下还可以根据两个FIFO的数据装载状态确定其中断级别。SPI接口的内部功能如图14.5所示。
14
F28335的SPI模块 28335的SPI主要为后2种操作模式:基本操作模式和增强的FIFO缓冲模式。
SPI主设备负责产生系统时钟,并决定整个SPI网络的通信速率。所有的SPI设备都采用相同的接口方式,可以通过调整处理器内部寄存器改变时钟的极性和相位。由于SPI器件并不一定遵循同一标准,比如EEPROM、DAC、ADC、实时时钟及温度传感器等器件的SPI接口的时序都有所不同,为了能够满足不同的接口需要,采用时钟的极性和相位可配置就能够调整SPI的通信时序。 SPI设备传输数据过程中总是先发送或接收高字节数据,每个时钟周期接收器或收发器左移1位数据。对于小于16位的数据发送之前必须左对齐,如果接收的数据小于16位则采用软件将无效的数位屏蔽,如图14.6所示。
15
F28335的SPI模块 FIFO操作 下边通过具体步骤来说明FIFO的特点,在使用SPI FIFO功能时,这些步骤有助于编程。
系统在上电复位时,SPI工作在标准SPI模式,禁止FIFO功能。FIFO的寄存器SPIFFTX、SPIFFRX和SPIFFCT不起作用。通过将SPIFFTX寄存器中的SPIFFEN的位置为1,使能FIFO模式。SPIRST能在操作的任一阶段复位FIFO模式。 FIFO模式有2个中断,一个用于发送FIFO、SPITXINT,另一个用于接收FIFO、SPIINT/SPIRXINT。对于SPI FIFO接收来说,产生接收错误或者接收FIFO溢出都会产生SPIINT/SPIRXINT中断。对于标准SPI的发送和接收,唯一的SPIINT将被禁止且这个中断将服务于SPI接收FIFO中断。发送和接收都能产生CPU中断。一旦发送FIFO状态位TXFFST(位12~8)和中断触发级别位TXFFIL(位4~0)匹配,就会触发中断。这给SPI的发送和接收提供了可编程的中断触发器。接收FIFO的触发级别位的缺省值是0x11111,发送FIFO的触发级别位的缺省值是0x00000。 发送和接收缓冲器使用2个16*16FIFO,标准SPI功能的一个字的发送缓冲器作为在发送FIFO和移位寄存器间的发送缓冲器。移位寄存器的最后一位被移出后,这个一字发送缓冲器将从发送FIFO装载。FIFO中的自发送到发送移位寄存器的速率是可编程的。SPIFFCT寄存器位FFTXDLY7~FFTXDLY0定义了在两个字发送间的延时,这个延时以SPI串行时钟周期的数量来定义。该8位寄存器可以定义最小0个串行时钟周期的延时和最大256个串行时钟周期的延时。0时钟周期延时的SPI模块能将FIFO字一位紧接一位的移位,连续发送数据。256个时钟周期延时的SPI模块能在最大延迟模式下发送数据,每个FIFO字的移位间隔256个SPI时钟周期的延时。可编程延时的特点,使得SPI接口可以方便地同许多速率较慢的SPI外设如EEPROM、ADC、DAC等直接连接。 发送和接收FIFO都有状态位TXFFST或RXFFST(位12~0),状态位定义在任何时刻在FIFO中可获得的字的数量。当发送FIFO复位位TXFIFO和接收复位位RXFIFO被设置为1时,FIFO指针指向0。一旦这两个复位位两个位被清除为0,则FIFO将重新开始操作。
16
第十四讲 SPI高速同步串行输入/输出端口
2、F28335的SPI模块 3、SPI寄存器 4、SPI应用
17
SPI寄存器 结合书籍为大家介绍ADC寄存器部分。
18
第十四讲 SPI高速同步串行输入/输出端口
2、F28335的SPI模块 3、SPI寄存器 4、SPI应用
19
SPI应用 结合实例,教你学习ADC应用。
20
本讲到此结束 感谢大家的收看 学习、使用中如遇任何问题,可与我们联系 嵌嵌论坛:http://www.armdsp.net
研旭旗舰店(天猫): 南京研旭电气科技有限公司
21
谢谢
Similar presentations