SPI中断解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0 禁止中断 1 使能中断
SPI串行数据寄存器(SPIDAT)
SPIDAT是发送/接收移位寄存器。写入SPIDAT的数据按照 SPICLK的周期节拍移出(先移最高位)、对于每一个移出SPI的位, 会有一个位移入移位寄存器的最低位(LSB)那一端。
写入SPIDAT的操作可执行两种功能: 如果TALK位(SPICTL.l)被置位,它在串行输出引
SPI的复位初始化
系统复位强制SPI外设模块进入以下缺省配置: 该单元被配置为—个从模块(MASTER/SLAVE=0); 发送功能被禁止(TALK=0); 在SPICLK信号的下降沿到来时,输入数据被锁存; 字符长度假定为1位; SPI中断被禁止; SPIDAT中的数据复位为0000h; 管脚功能选定为通用输入; SPI模块的引脚功能选作通用目标输入输出(这可以由
脚上提供将要输的数据。 当SPI是一个主模块时,会启动一个传送操作。
当启动了一个传送操作时,其动作要根据CLOCK POLARITY位(SPICCR.6)和CLOCK PHASE位(SPICTL.3) 的情况而定。
在主动工作模式下,将伪数据写入到SPIDAT用以 启动接收器的序列,因为硬件不支持少于16位的数 据进行对齐处理,所以发送的数据必须先进行左对 齐,而接收的数据则用右对齐格式读取。
I/O多路复用控制寄存器B[MCRB]来设置)。
串行外设接口的控制寄存器
SPI通过控制寄存器文件中的控制寄存器来控制和访问。下 面详细介绍串行外设接口的控制寄存器。
1、SPI配置控制寄存器(SPICCR), D7 D6 D5~D4 D3 D2 D1 D0
SPI SW RESET
CLOCK POLARITY
SPI波特率=CLKOUT/(SPIBRR+1) (2)对于SPIBRR=0~2,波特率的计算公式为: 式中,CLKOUT=器件的CPU时钟频率,SPIBRR=
主SPI器件中的SPIBRR内容。
SPI波特率和时钟模式
为了确定装入SPIBRR的值,必须知道 期间的系统时钟(CLKOUT)的频率(器件专 用的)和工作将使用的波特率。
FIFO特征和使用FIFO时SPI的编程
Sபைடு நூலகம்I FIFO的描述
• 上电复位时,SPI工作在标准SPI模式,禁止FIFO功能。 FIFO的寄存器SPIFFTX、SPIFFRX和SPIFFCT不起作用 通过将SPIFFTX寄存器中的SPIFFEN置1,使能FIFO模式。 SPIRST能在操作的任意阶段复位FIFO模式
SPI
中断控制 时钟设置 复位初始化 SPI FIFO
串行外设接口中断
有五个控制位用于初始化串行外设接口的中断: SPI中断使能位:SPI INT ENA(SPICTL.0); SPI中断标志位:SPI INT FLAG(SPISTS.6); SPI超限中断使能位:OVERRUN INT ENA(SPICTL.4); SPI接收器超限中断标志位:RECEIVER OVERRUN
• 缓冲器:发送和接收器使用两个16*16FIFO
• 延时发送:FIFO的发送速率可编程;便于SPI与许多速 率较慢的外设接口
• FIFO状态位可定义FIFO中可获得的字的数量。
SPI FIFO编程说明
8Dh 。在 用户软件清除不用的数据位后,主设备读09h,从设备读0Dh。 K. 主设备清除从设备的SPISTE信号,使其变高电平,禁止从
设备
时钟模式
SPI有四种时钟模式,由CLOCK POLARITY 和CLOCK PHASE位控制。
CLOCK POLARITY位:选择时钟的有效沿是 上升沿还是下降沿;
D5~D4 Reserved—保留位。 D3~D0 SPICHAR3~SPICHAR0—字符长度控制位3~0。这4位决定了单个
字符在一个移位序列周期移入或移出的位数。表4.27列出了不同位值所
SPI操作控制寄存器(SPICTL )
SPI操作控制寄存器(SPICTL)控制有数据的发送、SPI产生中 断的能力、SPICLK的相位以及操作模式(主模式或从模式)。
(4)上升沿,有延时:SPI在时钟上升沿前半个周期 发送数据,在上升沿接收数据。
SPI波特率和时钟模式
SPI模块支持125种不同的波特率和4种不同的时 钟模式。SPI最大波特率为CLKOUT频率的四分之一
1 SPI波特率的确定 SPI波特率的计算可以由如下的两种情况进行计算得
出: (1)对于SPIBRR-3~127,波特率的计算公式为:
FLAG(SPISTS.7); SPI中断优先级选择位:SPI PRIORITY (SPIPRI.6)。
数据格式
SPI通信时,要发送的数据从SPIDAT寄存器 的MSB依次移出,接收的数据则从SPIDAT的 LSB依次移入。SPI数据字符位数(1-16位) 由SPICCR.3-0指定。 当写入SPIDAT或SPITXBUF时,数据必须是 左对齐的。数据从SPIRXBUF读回时是右对齐 的。
优先级控制寄存器
优先级控制寄存器为SCIPRI。SCI优先级控制制寄
存器(SCIPRI)包含了接收器和发送器的中断优先级
选择位,并且在编程挂起(如遇到程序断点)时冲制
XDS仿真器的SCI操作。
● SCI优先级控制寄存器(SCIPRI)
D7 D6
D5 D4 D3
D2~D0
Reserved
SCITX SCIRX PRIORITY PRIORITY
下面的实例显示如何确定LF240xA DSP 可以获得最大串行外设通信的波特率 CLKOUT=40MHz。
SPI总线波特率的设置
由于不同SPI器件的最高工作频率有所 不同,为了使SPI总线高效工作,应了解各个 SPI器件最高能接受的频率,然后取低频率 的SPI器件的最高频率作为通讯波特率。
SPI的复位和初始化
0 SPI配置为—个从模块 1 SPI配监为一个主模块 D1 TALK—主/从模式发送使能。 0 禁止发送 从模式操作:如果先前没有配置为一个通用I/O引脚,
SPISOMI引脚置为高阻态; 主模式操作:如果先前没有配置为一个通用I/O引脚,SPISOMI引被
置为高阻; 1 使能发送
D0 SPI INT ENA,SPI中断使能—该位控制SPI产生发送/接收中断的 能力。SPI INT FLAG位(SPISTS.6)不受该位影响。
数据格式
数据传输过程
A.从设备Slave写0D0h到SPIDAT,等待主设备Master移出数据。 B.主设备设置从设备的SPISTE信号为低,激活从设备 C.主设备写058h 到SPIDAT寄存器,开始传数据输过程。 D.第一个字节完成,设置中断标志。 E.从设备读取它的SPIRXBUF寄存器(右对齐)读取0Bh F从设备写04Ch 到SPIDAT寄存器,等待主设备移出数据。 G.主设备写06Ch到SPIDAT寄存器,开始传输过程。 H. 主设备从SPIRXBUF寄存器(右对齐)读取01Ah。 I. 第二个字节完成,设置中断标志。 J. 主设备和从设备分别从各自的SPIRXBUF寄存器中读89h 和
SPI操作控制寄存器(SPICTL)的映射地址:7041h。
D7~D5 Reserved—保留位。读返回0,写访问无效。
D4
OVERRUN INT ENA,超限中断使能
0 禁止RECEIVER OVERRUN FLAG位(SPISTS.7)中断
1 使能RECEIVER OVERRUN FLAG位(SPISTS.7)中断
D3
CLOCK PHASE—SPI时钟相位选择。该位控制SPICLK
信号的相位:
0 普通SPI时钟模式,决定于CLOCK POLARITY位(SPICCR.6)
1 SPICLK信号延时半个周期,极性由CLOCK POLARITY确定
D2 MASTER/SLAVE—SPI网络模式选择。该位次定SPI是一个网络主模 块还是从模块。在复位初始化期间,SPI自动配置为一个网络从模块。
Reserved
SPICHAR3 SPICHAR2 SPICHAR1
SPICHAR0
D7 SPI SW RESET—SPI软件复位。当改变配置时,在改变之前清除 此位并且恢复操作之前设置此位:
0 初始化SPI操作标志为复位条件,此时SPISTS.7、SPISTS.6位和 SPISTS.5位被清除。SPI配置保持不变。如果该模块用作主模块, SPICLK信号输出返回其无效电平。 1 SPI准备好发送或接收下一字符,当该位被置位时,一个写入发送器的 字符将不会被移出,必须向串行数据寄存器写入一个新的宁符。
D6 CLOCK POLARITY—移位时钟的极性。该位抑制SPICLK信号的极性。 CLOCK POLARITY和CLOCK PHASE(SPICTL.3)控制SPICLK引脚上的四种 时钟模式。
0 SPICLK信号的上引沿时,数据输出;下降沿时,数据输入。当没有SPI数 据发送时,SPICLK处于低电平。 数据输入、输出的边沿决定于CLOCK PHASE(SPICTL.3)位的值,具体如下: CLOCK PHASE=0:数据在SPICLK信号的上升沿输出;输入的数据在 SPICLK信号的下降沿锁存。 CLOCK PHASE=1:数据在SPICLK信号第一个上升沿前的半个周期和后续 的SPICLK信号的下降沿输出;输入的数据在SPICLK信号的上升沿锁存。
在主模式下,SPI时钟由SPI产生,并通过 SPICLK引脚输出。其频率最大不能超过CLKOUT频 率的四分之一。
(1)下降沿,无延时:SPI在时钟下降沿发送数据, 在时钟的上升沿接收数据;
(2)下降沿,有延时:SPI在时钟下降沿前半个周期 发送数据,在时钟的下降沿接收数据;
(3)上升沿,无延时:SPI在时钟上升沿发送数据, 在下降沿接收数据;
SCI SOFT
SCIFREE
Reserved
D7 Reserved,保留位。读返回0,写访问无效。 D6 SCITX PRIORITY,SCI发送器中断优先级选择。该位 直到SCI发送器中断的优先级。 0 中断为高优先级请求 1 中断为低优先级请求 D5 SCIRX PRIORITY,SCI接收器中断优先级选择。该位 指定SCI接收器中断的优先级。 0 中断为高优先级请求 1 中断为低优先级请求 D4~D3 SCISOFT和FREE。这些位决定了当一个仿真挂起事 件(例如当调试器遇到断点时)发生后,将采取什么动作。外 设可继续正在进行的工作(自由运行模式),或者如果在停止 模式,它可以立即停止或者在当前操作(当前的接收/发送 队列)运行结束后停止。 00 仿真挂起时立即停止 10 停止前完成当前的接收/发送操作 x1 自由运行,不管是否发生挂起,继续SCI操作 D2~D0 Reserved,保留位。读返回0,写访问无效。
系统复位使SPI引脚功能被选定为通用输入,要 对SPI的配置,需做以下工作: (1)设置SPI SW RESET位(SPICCR.7)的值为0, 强制SPI复位; (2)初始化SPI的配置、格式、波特率和引脚功能 为期望值; (3)设置SPI SW RESET位为1,从复位状态释放SPI; (4)向SPIDAT或SPITXBUF写数据; (5)数据发送完成后(SPISTS.6=1),读取 SPIRXBUF以确定接收的数据。
CLOCK PHASE位:选择是否有半个时钟周 期的延时
SPI波特率和时钟模式
根据SPI时钟是在从模式还是主模式下, SPICLK引脚可以接收一个外部SPI时钟信号,或为 SPI提供时钟信号。
在从模式下,SPI时钟是通过SPICLK引脚从外 部时钟源引入的,其频率最大不能超过CLKOUT频 率的四分之一。
1 SPICLK信号的下降沿时,数据输出;上升沿时,数据输入。当没有SPI数据 发送时,SPICLK处于高电平。 数据输入、输出的边沿决定于CLOCK PHASE(SPICTL.3)位的值,具体如下: CLOCK PHASE=0:数据在SPICLK信号的下降沿输出,输入的数据在 SPICLK信号的上升沿锁存。 CLOCK PHASE=1:数据在SPICLK信号第一个下降沿前的半个周期和随后 的SPICLK信号的上升沿输出;输入的数据在SPICLK信号的下降沿锁存。
相关文档
最新文档