- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第05章-3、SPI总线
SPI总线概述 SPI接口引脚 SPI接口结构框图 SPI接口寄存器描述 SPI接口操作 串口闪存操作举例 SPI总线概述 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口。SPI接口是一种同步全双工串行通信接口。在同一总线上可以连接多个主机(MASTER)或者从机(SLAVE),但同一次传输过程中只能有一个主机和一个从机能够进行通信。在一次数据传输过程中,主机通常向从机发送8位或16位数据,从机通常向主机返回一个字节数据。 LPC1700系列处理器具有1个SPI接口,遵循串行外设接口(SPI)规范,支持同步、串行、全双工通信;支持SPI主机和从机;最大数据位速率为输入时钟速率的1/8;每次传输可以是8位或16位。 SPI接口引脚 LPC1700系列处理器的SPI接口占用4条引脚,分别是SCK、SSEL、MISO和MOSI。 SPI接口结构框图 SPI接口寄存器描述 LPC1700系列处理器SPI接口共有5个寄存器,所有寄存器都可以按8位、16位或32位宽度访问。 SPI接口寄存器描述 SPI控制寄存器(S0SPCR – 0x4002 0000) SPI控制寄存器用于设定SPI接口的工作方式。 SPI总线传输方式 SPI总线根据CPHA与CPOL位的设置组合,分为4 种不同数据传输方式。该图分三个部分,第一部显示了CPOL位的不同设置时的传输方式,第二、三部分为CPHA位的不同设置时的传输方式。实际的传输情况为第一、二或第一、三情况的组合,共4种方式。 SPI接口寄存器描述 SPI状态寄存器(S0SPSR – 0x4002 0004) SPI状态寄存器反映了SPI总线当前的操作状态。 SPI接口寄存器描述 SPI数据寄存器(S0SPDR – 0x4002 0008) 双向SPI数据寄存器为SPI提供数据的发送和接收。发送数据通过将数据写入该寄存器来实现,SPI接收的数据可以从该寄存器中读出。处于主机模式时,写该寄存器将启动SPI数据传输,由于在发送数据时,没有缓冲,所以在发送数据期间(包括SPIF置位,但是还没有读取状态寄存器),不能再对该寄存器进行写操作。 SPI接口寄存器描述 SPI时钟计数器寄存器(S0SPCCR – 0x4002 000C) SPI时钟计数器寄存器控制主机SCK的频率。寄存器显示了构成SPI时钟的SPI外围时钟周期个数。 在主机模式下,该寄存器的值必须为大于等于8的偶数。 在从机模式下,由主机提供的SPI时钟速率不能大于SPI外设时钟的1/8,否则S0SPCCR寄存器的值无效。 SPI接口寄存器描述 SPI中断寄存器(S0SPINT – 0x4002 001C) SPI中断寄存器包含了SPI接口的中断标志。 SPI接口操作 SPI接口寄存器操作综述 SPI控制寄存器(S0SPCR)包含一些可编程位来控制SPI接口功能。在SPI总线数据传输开始前必须对该寄存器正确配置。 SPI状态寄存器(S0SPSR)为只读寄存器,反映了SPI接口的各种状态,包括普通功能以及异常状况。该寄存器的主要用途是检测数据传输的结束,这可通过判断SPIF位是否置位来实现。其它位用于指示异常状况。 SPI数据寄存器(S0SPDR)用于发送和接收数据字节。串行数据实际的发送和接收是通过SPI模块逻辑中的内部移位寄存器来实现的。在发送时,数据会被写入SPI数据寄存器。数据寄存器和内部移位寄存器之间没有缓冲区,写数据寄存器会使数据直接进入内部移位寄存器,因此数据只能在上一次数据发送完成后写入该寄存器。读数据是带有缓冲区的,当传输结束时,接收到的数据被转移到一个单字节缓冲区中,读SPI数据寄存器将返回读缓冲区的值。 当SPI模块处于主机模式下时,SPI时钟计数器寄存器(S0SPCCR)用于控制时钟频率,该寄存器必须在数据传输之前设定。而当SPI模块处于从机模式下时,该寄存器无效。 SPI接口操作 主机操作 设置SPI时钟计数器寄存器,得到相应的时钟频率。 按要求设置SPI控制寄存器。 将被发送的数据写入SPI数据寄存器,即启动SPI数据传输。 等待SPI状态寄存器中的SPIF位置“1”。SPIF位将会在SPI数据传输的最后一个时钟周期之后置位。 读SPI状态寄存器。 从SPI数据寄存器中读取接收到的数据(可选项)。 如果由更多的数据需要发送,则跳到第c)步。 SPI接口操作 异常状况 读溢出:当SPI模块内部读缓冲区未被读取,又接收到新的数据,就会发生读溢出。 写冲突 :如前面所述,写操作时,在SPI总线接口与内部移位寄存器之间没有写缓冲区。因此,只能在SPI总线空闲期间向SPI数据寄存器写入数据。 模式错误
原创力文档


文档评论(0)