ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:487.98KB ,
资源ID:27591862      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27591862.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ADSPBF系列硬件之SPI端口控制器.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ADSPBF系列硬件之SPI端口控制器.docx

1、ADSPBF系列硬件之SPI端口控制器SPI端口控制器1.概述SPI端口为兼容SPI的外设提供了一种I/O接口。使用一系列的配置选项,SPI提供了与其他兼容SPI的外设进行无缝连接。SPI为四线接口,由两个数据信号、一个设备选择信号和一个时钟信号组成。SPI是一个全双工的同步串行接口,支持主机模式、从机模式以及多主机环境。还支持编程设置位速率和时钟相位/极性。2.特性SPI包括如下特性:(1) 全双工,同步串行接口(2) 支持8位或16位字宽度(3) 可编程波特率,时钟相位和极性(4) 支持多主机环境(5) 与DMA控制器结合(6) 双缓冲的发送器和接收器(7) 一个SPI设备选择输入和多片选

2、择输出(8) 可编程数据引脚上的数据移位方向,先MSB或先LSB(9) 当发生模式错误、溢出和下溢时产生中断(10) Shadow register to aid debugging典型的能与SPI接口的设备包括:(1) 其他CPU或微控制器(2) 多媒体数字信号编解码器(3) A/D转换器(4) D/A转换器(5) 采样速率转换器(6) SP/DIF或AES/EBU数字音频发送器和接收器(7) LCD显示器(8) 移位寄存器(9) 具有SPI仿真器的FPGA3.接口概述如图1所示为SPI框图。SPI接口实际上就是一个移位寄存器,它能够串行地发送和接收数据位。以SCK的速率向或从SPI设备发送

3、或接收数据位。通过使用同一个移位寄存器可以同时发送和接收SPI数据。当发生一次SPI数据传输时,发送数据(将数据从移位寄存器的一端串行地移出)的同时可以就收新的数据(从移位寄存器的另一端接收新数据)。SCL信号使得移出发送数据与采样接收数据同步。图1 SPI框图3.1外部接口3.1.1SPI时钟信号(SCK)SCK信号是一种串行时钟信号,它由主机驱动并且能够控制数据传输的速率。主机可以以不同的位速率发送数据。发送一位数据需要花销一个SCK周期。如果设备被配置成主机那么该信号为输出信号。反之,则为输入信号。SCK信号是一个门控信号,它在数据传输的过程中始终有效。有效的时钟边沿的数量与数据线上传输

4、的数据位的个数相同。如果输入信号被拉低,那么从机设备会忽略SCK信号。SCK信号用于将MISO和MOSI数据线上的数据移入和移出,可以通过SPI_CTL寄存器对SCK时钟信号的极性和相位进行编程设置,同时也可以定义数据传输的格式。3.1.2主机输出,从机输入(MOSI)信号MOSI信号是双向I/O数据引脚中的一个引脚。如果将处理器配置成主机,那么处理器可以通过MOSI引脚发送数据。相反,可以通过MOSI引脚接收数据。在SPI相互连接的情况下,数据从主机设备的MOSI引脚被移出并且从从机设备的MOSI引脚移入。3.1.2主机输入,从机输出(MISO)信号MISO信号是双向I/O引脚中的一种。如果

5、将处理器配置成主机,那么可以处理器通过MISO引脚接收数据。相反,处理器可以通过MOSI引脚发送数据。在SPI相互连接的情况下,数据从从机设备的MISO引脚被移出并且从主机设备的MISO引脚移入。注意:在任何时候只允许一个从机发送数据。如图2所示:举例SPI配置解释如何将处理器配置为从SPI设备。该8位的主微控制器是SPI主机。注意:可以通过处理器的SPI接口来引导处理器以使得用户的应用程序代码和数据能够在运行时之前被载入。图2设置Blackfin处理器为从机SPI设备3.1.2SPI从机选择输入信号()信号是SPI从机选择的输入信号。该信号为低电平有效,当一个处理器被设置为从机时可以使用信号

6、去使能该处理器。信号类似于片选信号一样作为单向输入信号被使用。对于一个主机设备而言,在多主机环境中它可以作为一个错误输入信号引脚被使用。在多主机模式下,如果主机的输入引脚被声明(被拉低)并且SPI_CTL寄存器中的PSSE位被使能,那么就表明此时有一个错误已经发生。这个错误说明此时有另外一个设备试图成为主机。使能前导事件T1、使能滞后时间T2以及传输序列的延迟时间T3中的每一个都必须SCK时钟周期。如图3所示。在连续的字传输之间的最少时间为T4,T4等于两倍的SCK时钟周期。可以通过测量传输一个字时的有效SCK边沿到传输下一个字时有效SCK边沿以得到T4值。图3 SPI时序3.1.3SPI从机

7、选择使能输出信号当处理器工作在主机模式时,Blackfin处理器可能会通过软件使用任意GPIO引脚以使能单个的SPI从机设备。除此之外,SPI模块还提供硬件支持能够自动生成最多7个从机选择的使能信号(这个根据不同的处理器有所不同)。根据SPI的协定,从机选择使能信号都必须是有效低电平信号。由于在复位过程中这些引脚不会被驱动,所以建议使用一个电阻将它们拉高。如果将Blackfin处理器配置为主机模式,SPI会使用SPI_FLG寄存器去使能通用端口引脚作为单个的从机选择线。在使用这些引脚作为SPI从机选择使能输出印加之前,必须在适当的PORT_MUX寄存器中使能端口引脚被SPI使用。在从机模式SP

8、I_FLG寄存器不起作用并且每一个从机SPI接口都会使用信号作为从机选择输入信号。同样地,在使用端口引脚与引脚连接之前需要使用适当的端口寄存器配置使能这些引脚被SPI使用。3.1.4SPI从机选择输入如果SPI处于从机模式,那么信号就作为从机选择输入引脚。当SPI处于主机模式时,在多主机环境中信号就作为错误检测输入引脚。SPI_CTL寄存器中的PSSE位可以使能这个功能。当PSSE=1时,信号作为主机模式的错误检测输入引脚。反之,信号被忽略。3.1.4在多从机SPI系统中使用SPI_FLG寄存器中的FLS位在多从机SPI环境中使用SPI_FLG寄存器中的FLSx位。举例,如果在系统中有8个SP

9、I设备其中包括一个主机处理器,那么配置该处理器以选择另外7个从机SPI。在多从机SPI模式中这种配置只需要一个主机处理器。如果假设SPI是主机,那么需要7个端口引脚被配置为SPI主机模式中的从机选择输出引脚并且与每一个SPI设备的信号引脚连接。在这种配置中SPI_FLG寄存器中的FLSx位被用于3中情况:在情况1和2中,处理器为主机以及7个具有SPI接口的微控制器或外设为从机。(1) 以广播模式向7个SPI从机设备同时发送信号。此时将所有的FLSx位置1;(2) 仅使能一位FLS位,此时每次只与一个SPI设备进行通信;在情况3中,通过SPI接口连接的8个SPI设备都可以是其他处理器。(3) 如

10、果所有的从机也是处理器,那么在通信过程中每次请求者只能从一个处理器接收数据。但是每次一个主机处理器可以同时向7个从机处理器发送数据。如图4所示,一个处理器作为主机,3个处理器(或3个兼容SPI接口的外设)作为从机。图4 单主机,多从机配置(1) 在写发送缓冲器之后,它将变成满状态。当进行传输时,它将变成空并且发送的数据会被载入移位寄存器中。(2) 在一次传输结束,当移位寄存器中的数据被载入到接收缓冲器时,接收缓冲器变成满状态。当读接收缓冲器时,它变成空。注意:当SPI端口被禁止时,SPI_STAT寄存器中的SPIF位会被置1。当SPI进入DMA模式中工作时,发送缓冲器和接收缓冲器将变成空状态。

11、此时,当进入DMA模式时SPI_STAT寄存器中的TXS位和RXS位被初始化为0。当SPI发送数据使用DMA模式时,DMA_DONE中断位标志着DMA FIFO为空。然而,此时在SPI DMA FIFO中可能还会有数据存留等带被发送。因此,软件需要查询PI_STAT寄存器中的TXS位直到该位变成0,并且连续两次读该位它都为0。那么此时SPI DMA FIFO才真正为空。此后当SPIF位被置1时,表明最后一个字已经被发送(发送完成)并且SPI可以被禁止或使能成其他模式。3.2内部接口SPI接口具有与处理器的外设总线(PAB)和DAB的专用连接。使用低延迟性的PAB总线去映射SPI资源到系统MMR

12、空间。对于PAB访问SPI MMR而言,主要的性能标准是延迟而不是吞吐量。对于在PAB上的读、写传输而言,传输延迟为两倍的SCLK周期。DAB总线提供了一种称为DMA SPI传输的方式,这种方式可以访问片内和片外存储器而很少降低或不降低内核带宽。兼容SPI的外设,例如一个DMA主机能够进行DMA访问。3.2.1DMA 功能SPI具有一个单个的DMA通道,它可以被配置为SPI发送通道或接收通道。但是发送和接收通道不是同步操作的。因此,当把SPI DMA通道配置为发送通道时,将忽略被接收的数据;当把SPI DMA通道配置为接收通道时,将忽略被发送的数据。SPI还具有一个16位的4字FIFO(不具有

13、突发能力)以提高DAB总线上的吞吐量。注意:当使用DMA进行SPI传输时,DMA_DONE中断位标志着DMA FIFO为空。然而,此时在SPI DMA FIFO中可能还会有数据存留等待被发送。因此,软件需要查询PI_STAT寄存器中的TXS位直到该位变成0,并且连续两次读该位它都为0,那么此时SPI DMA FIFO才真正为空。此后当SPIF位被置1时,表明最后一个字已经被发送(发送完成)并且SPI可以被禁止或使能成其他模式。当SPI端口被禁止时4字的FIFO被清除。4.操作描述4.1SPI传输协议SPI协议支持四种串行时钟相位和极性的不同组合(SPI 模式0、1、2、3)。使用SPI_CTL

14、寄存器中的CPOL位和CPHA位来选择这些组合。如图5所示图5 SPI的操作模式图6和图7解释了两种SPI基本的传输格式,传输格式由CPHA位定义。图6 CPHA = 0时的SPI操作模式图7 CPHA = 1时的SPI操作模式图6和图7显示了关于SCK的两种波形。(1) CPOL =0 (2)CPOL=1也可以将图6和图7理解成主机或从机时序图。因为在主机和从机之间SCK、MISO、MOSI引脚都直接相连。MISO信号从从机输出(从机发送),MOSI信号从主机输出(主机发送)。SCK信号由主机产生并且信号作为从机设备的选择输入信号。以上两图描述了一个8位(SIZE = 0)的数据传输,首先发

15、送MSB位(LSBF = 0)。SPI_CTL寄存器中的SIZE位和LSBF位可以任意组合。例如:一个16位的传输,首先发送LSB位的操作就是一种可能的配置。在通信链接中主机设备和从机设备的时钟极性和相位应当一致。主机的传输格式在传输之间可能会发生改变以调整一种从机设备的各种需求。4.2SPI一般操作SPI可以用于单主机环境或多主机环境中。在这两种主机环境中MOSI、MISO和SCK引脚都分别连接在一起。SPI发送和接收总是被同步使能,除非选择了广播模式。在广播模式中,一些从机被使能接收数据,但是在发送模式中只能有一个从机设备驱动MISO引脚。需要注意当改变SPI配置时避免数据损坏。在一次数据

16、传输中,不可以改变配置。当没有选择从机时才可以改变时钟的极性。在多主机或多从机SPI系统中,可以把数据输出引脚(MOSI和MISO引脚)配置成开漏输出,这样就可以防止线路争夺和损坏引脚驱动器。MOSI和MISO引脚都需要一个外部上拉电阻。SPI_CTL寄存器中的WOM位控制开漏输出的选择。当WOM位被置1并且SPI被配置为主机,当MOSI引脚上的数据驱动输出信号为逻辑高那么该引脚为3态。同样地,当WOM位被置1并且SPI被配置为从机,当MISO引脚上的数据驱动输出信号为逻辑高那么该引脚为3态。在SPI传输数据的过程中,一个SPI设备用于SPI链接主机。此时该SPI设备通过产生SPI串行时钟以及

17、声明SPI设备选择信号控制数据流。其他SPI设备作为从机使用并且从主机接收新数据到移位寄存器。多处理器可以轮流用于主机设备,该处理器可以使微控制器或微处理器。一个主机设备能够同时移动数据到多从机设备(广播模式)。然而,在任意时刻只能由一个从机向主机发送数据。在广播模式中必须这样强制执行,此时可以选择几个从机接收数据,但是每次只能使能一个从机向主机发送数据。在一个多主机或多设备环境中通过SPI端口多个处理器被连接。所有的MOSI引脚、MISO引脚以及SCK引脚分别被连接到一块。对于一个多从机环境,处理器最多能够利用7个可编程标志作为专用的SPI从机选择信号。注意:在复位时SPI被禁止并且被配置成

18、一个从机。4.3时钟信号SCK信号是一个门控信号,该信号只在数据传输的过程中有效。SCK信号有效边沿的数量等于在数据线上被驱动的数据位的个数。时钟速率可以为1/4的SCLK速率。对于主机设备而言,由SPI_BAUD寄存器中的16位值确定时钟速率。对于从机设备,忽略该寄存器中的值。当SPI设备为主机时,SCK为输出信号。反之为输入信号。当从机选择输入信号被驱动位无效时,从机设备将忽略串行时钟信号。使用SCK信号去移出和移入数据到MISO和MOSI引脚。数据总是在SCK信号的一个边沿被移出,在相反的边沿被移入。使用SPI_CTL寄存器对时钟极性和相位进行编程以及定义数据传输的格式。如图5所示。 4

19、.4中断输出SPI具有两个中断输出信号:一个数据中断、一个错误中断。SPI数据中断信号的操作依赖于SPI_CTL寄存器中的TIMOD位的设置。在DMA模式(TIMOD = b#1X),数据中断作为一个DMA请求信号并且当DMA FIFO准备被写(TIMOD = b#11)或读数据(TIMOD = b#10)时就产生该中断信号。在非DMA模式(TIMOD = b#0X),当SPI_TDBR寄存器准备好被写入(TIMOD = b#01)或读取数据(TIMOD = b#00)时就产生该中断信号.在DMA或非DMA模式中,当一个模式默认的错误发生时,主机就会产生一个SPI错误中断。在DMA模式中当有一

20、个下溢或溢出条件发生时就产生一个错误中断。5.功能描述5.1主机模式操作(非DMA模式)当SPI被配置为主机(未选择DMA模式)时,SPI接口操作如下所述:(1) 内核写适当的端口寄存器为主机模式操作配置SPI接口。SPI使用的端口引脚被配置为从机选择输出引脚。(2) 内核写SPI_FLG寄存器,设置一个或多个SPI标志选择位(FLSx)。这就确保期望选择的从机被选择。(3) 内核写SPI_BAUD和SPI_CTL寄存器,使能设备为主机以及配置SPI系统:指定合适的字长、传输格式、波特率以及其他信息。(4) 如果SPI_CTL中的CPHA位=1,内核就通过清除FLSx位以激活期望的从机。(5)

21、 SPI_CTL寄存器中的TIMOD位确定了SPI传输的初始化模式。当内核向SPI_TDBR 寄存器执行一次数据写操作或执行一次读SPI_RDBR寄存器时, 开始进行SPI链接的数据传输。(6) 然后,在SCK引脚SPI产生可编程的时钟脉冲信号并且在MOSI和MISO引脚同时移出或移入数据。在移动数据之前,移位寄存器被加载的内容为SPI_TDBR寄存器中的值。在传输结束时,移位寄存器中的内容被加载到SPI_RDBR寄存器中。(7) 在执行每一个新的传输初始化命令时,根据SPI传输初始化模式SPI会继续发送和接收数据字。如果发送缓冲器保持空或接收缓冲器保持满,那么SPI设备将根据SPI_CTL寄

22、存器中的SZ位和GM位的状态进行操作。如果SZ=1并且发送缓冲器为空,那么设备将重复发送0到MOSI引脚。每执行一个新的传输命令就发送一个数据字。如果SZ=0并且发送缓冲器为空,设备将重复发送最后一个被发送的数据字到该缓冲器。如果GM=1并且接收缓冲器为满,那么设备将继续从MISO引脚接收新的数据,覆盖掉SPI_RDBR寄存器中的旧数据。如果GM=0并且接收缓冲器为满,那么将忽略即将到来的新数据此时SPI_RDBR寄存器的内容不被更新。5.2主机SPI中的传输初始化(传输模式)当一个设备被使能为一个主机,由SPI_CTL寄存器中的TIMOD位来定义一次传输的初始化。基于TIMOD位和接口的状态

23、,根据一次读SPI_RDBR寄存器或写SPI_TDBR寄存器操作来启动一次新的数据传输。归纳如下表1:注意:如果SPI端口被使能并且TIMOD = b#01或TIMOD = b#11,那么硬件就立刻发出一个中断或DMA请求。表1 传输初始化5.3从机模式操作(非DMA模式)当一个设备被使能为一个从机(并且未选择DMA模式),那么通过发送一个选择信号(低电平有效信号)以启动一次传输,或使用一个有效的SCK时钟边沿来触发传输。在从机模式中,以下步骤解释了SPI从机操作:(1) 内核写适当的端口寄存器以配置SPI为从机模式操作;(2) 内核写SPI_CTL寄存器以定义串行链接模式,这与设置SPI主机

24、的操作步骤一样;(3) 准备数据传输,内核将待发送的数据写入SPI_TDBR寄存器;(4) 一旦内核检测到低信号边沿发生,此时从机就开始在SCK信号的驱动下将数据从MISO引脚移出、从MOSI引脚移入。(5) 继续接收/发送数据直到信号变高或直到从机已经接收到适当的数据(6) 当检测到低边沿信号从机设备继续接收或发送数据;如果发送缓冲器保持空或接收缓冲器保持满,那么SPI设备将根据SPI_CTL寄存器中的SZ位和GM位的状态进行操作。如果SZ=1并且发送缓冲器为空,那么设备将重复发送0到MISO引脚。每执行一个新的传输命令就发送一个数据字。如果SZ=0并且发送缓冲器为空,设备将重复发送最后一个

25、被发送的数据字到该缓冲器。如果GM=1并且接收缓冲器为满,那么设备将继续从MOSI引脚接收新的数据,覆盖掉SPI_RDBR寄存器中的旧数据。如果GM=0并且接收缓冲器为满,那么将忽略即将到来的新数据此时SPI_RDBR寄存器的内容不被更新。5.4 从机准备进行一次传输当一个设备被使能为从机,那么如表2所示需要准备进行一次新的传输。表2传输准备6.编程模型6.1SPI传输的开始和终止一次SPI传输的开始和结束依赖于设备是否被配置为主机或从机,选择哪一种CPHA模式以及选择了哪一种传输初始化模式。对于一个主机SPI并且CPHA=0,根据TIMOD的设置当执行一次写入SPI_TDBR寄存器或读取SP

26、I_RDBR寄存器操作启动传输。在传输开始,被使能的从机选择输出信号变低。然而,在第一个1/2SCK周期SCK信号保持无效。对于一个从机并且CPHA=0,一旦输入信号变低就开始进行传输。当CPHA=1,对于从机设备和主机设备都是在第一个有效的SCK边沿发生时开始一次传输。对于一个主机设备而言,在它发送最后一个数据同时接收到最后一个数据位之后就认为传输结束。对于从机而言,在最后一次采样SCK信号边沿之后认为传输结束。RXS位定义了何时可以读取接收缓冲器。TXS位定义了何时写入发送缓冲器。当RXS位被置1时就结束发送一个单个数据字。这就表明一个新字刚刚被接收到并且被所存到接收缓冲器:SPI_RDB

27、R。对于主机SPI而言,在采样最后一个SCK边沿之后RXS位比短暂置1.对于从机SPI而言,在最后SCK信号边沿之后RXS位被短暂置1,此时不管CPHA位和CPOL位的状态。通常延迟为几个SCLK时钟周期并且独立于TIMOD模式和波特率。如果配置SPI在SPI_RDBR为满(TIMOD = b#00)产生中断,那么在RXS被置1之后中断将变成有效并持续一个SCLK时钟周期。当不产生中断时,可以根据查询RXS位的状态来结束传输。为了保持软件与SPI设备的兼容性,也需要查询SPIF位的状态。对于一个从机设备而言,在一次发送开始之后SPIF位被暂时清0并且在RXS被置1时也被置1.对于一个主机设备,

28、在一次传输开始之后暂时清除SPIF位并且在最后一个SCK边沿之后该位被置1并持续1/2个SCK周期。6.2主机模式DMA操作当SPI被使能为主机并且使能DMA模式传输时,SPI接口操作如下:(1) 内核写适当的端口寄存器以配置SPI为主机操作模式。一些端口引脚会被配置成SPI从机选择输出引脚。(2) 处理器内核写适当的DMA寄存器以使能SPI DMA通道并且配置需要的工作单元、访问方向。数据字计数值等等。(3) 内核写SPI_FLG寄存设置一个或多个SPI标志选择位FLSx(4) 内核写SPI_BAUD和SPI_CTL寄存器,使能设备为主机以及配置SPI系统:指定合适的字长、传输格式、波特率以

29、及其他信息。应当配置TIMOD位域以选择接收DMA(TIMOD = b#10)或发送DMA (TIMOD = b#11)。(5) 如果配置成接收DMA,当使能SPI时初始化一次接收传输。当SPI从SPI_RDBR寄存器读取数据并且写数据到SPI DMA FIFO时初始化随后的传输。然后SPI请求一次DMA写存储器。根据DMA请求,DMA通道从SPI DMA FIFO中读数据并且将该数据写入到内存。如果被配置为发送数据,SPI请求一次DMA读内存操作。根据DMA请求,DMA通道从内存中读一个数据字并且将该数据写入到SPI DMA FIFO。当SPI将SPI DMA FIFO中的数据写入到SPI_

30、TDBR寄存器时,它就初始化一次传输(6) 然后,SPI在SCK引脚上产生可编程的时钟脉冲并且在MOSI引脚和MISO引脚同时移出或移入数据 。对于接收传输,在传输结束时移位寄存器中的数据被加载到SPI_RDBR寄存器。对于发送传输,在传输开始SPI_TDBR寄存器中值被加载到移位寄存器(7) 在接收模式中,只要SPI DMA FIFO中还有数据,SPI就会继续请求一次DMA写内存。DMA通道就继续从SPI DMA FIFO中读取数据并且将该数据写入到内从中直到SPI DMA数据字计数寄存器的值由1变为0.SPI继续接收字直到SPI DMA模式被禁止。在发送模式中,只要在SPI DMA FIF

31、O中还有存储空间,SPI就会继续从内存中读取数据并且将该数据写入到SPI DMA FIFO直到SPI DMA字计数寄存器由1变成0.SPI继续发送字直到SPI DMA FIFO为空。对于接收DMA操作,如果DMA通道不能够与接收数据流保持同步,那么接收缓冲器将根据SPI_CTL寄存器中的GM位的状态进行操作。如果GM=1并且DMA FIFO为满,那么设备将继续从MISO引脚接收新数据,覆盖SPI_RDBR寄存器中的旧数据。如果GM=0并且DMA FIFO为满,那么将忽略即将到来的新数据并且SPI_RDBR寄存器不会被更新。当执行接收DMA时,假设发送缓冲器为空。如果SZ=1,设备将从MOSI引

32、脚上重复发送0。如果SZ=0,设备就会重复发送SPI_TDBR寄存器中的内容。TXE下溢条件不能够产生一个错误中断。对于发送DMA操作,仅当有数据存在DMA FIFO时主机SPI才初始化一次数据字传输。如果DMA FIFO为空,那么在开始传输之前SPI就等待DMA通道写DMA FIFO。当把SPI配置为发送DMA模式,关于SPI接收的所有操作都应该被忽略,包括SPI_RDBR寄存器中的数据以及RXS和RBSY位的状态。在该模式中RBSY溢出条件不能够产生一个错误中断并且TXE下溢条件不会发生。因为如果DMA FIFO中没有数据,那么主机SPI不会初始化传输。在一次有效的SPI发送DMA操作过程中不应该写SPI_TDBR寄存器,因为DMA数据将会被覆盖。在一次有效的S

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1