理论教育 使用SPI接口前的配置以及主机操作步骤

使用SPI接口前的配置以及主机操作步骤

时间:2023-11-03 理论教育 版权反馈
【摘要】:使用SPI接口之前,要先对引脚进行配置。进行如下设置可将P0.4、P0.5、P0.6和P0.7选择为SPI功能:1.主机操作下面的步骤描述了SPI设置为主机时如何处理数据传输。3)选择从机,将要发送的数据写入SPI数据寄存器SPDR,启动SPI数据传输。4)等待SPI状态寄存器SPSR中的SPIF位置位。注意,这只能在从SPI传输没有进行时执行。例4-7利用LPC2138的SPI接口作为主机,对串行存储器25C160进行读/写操所。图4-13 采用SPI接口读/写25C160的Proteus仿真电路主程序文件main.c如下:

使用SPI接口前的配置以及主机操作步骤

使用SPI接口之前,要先对引脚进行配置。进行如下设置可将P0.4、P0.5、P0.6和P0.7选择为SPI功能:

978-7-111-44508-1-Chapter04-71.jpg

1.主机操作

下面的步骤描述了SPI设置为主机时如何处理数据传输。假设已经设定引脚连接SPI,并且之前的数据传输已经结束。

1)设置SPI时钟计数寄存器SPCCR,获得期望的SPI时钟。

2)设置SPI控制寄存器SPCR,控制SPI为主机模式,配置SPI时钟极性等。

3)选择从机,将要发送的数据写入SPI数据寄存器SPDR,启动SPI数据传输。

4)等待SPI状态寄存器SPSR中的SPIF位置位。SPIF位将在SPI数据传输的最后一个周期之后置位。

5)读取SPI状态寄存器SPSR。

6)从SPI数据寄存器SPDR中读出接收到的数据(可选)。

7)如果有更多数据需要发送,则跳到第3步。

注意,通过读或写SPI数据寄存器,可以清零SPIF状态位。因此,如果没有读取SPI数据寄存器,则需要执行写该寄存器的操作来清零SPIF状态位。

2.从机操作

下面的步骤描述了SPI设置为从机时如何处理数据传输。假设已经设定引脚连接SPI,并且之前的数据传输已经结束。要求驱动SPI逻辑的系统时钟速度至少8倍于SPI。

1)设置SPI控制寄存器SPCR,控制SPI为从机模式,配置SPI时钟极性等。

2)将要发送的数据写入SPI数据寄存器SPDR(可选)。注意,这只能在从SPI传输没有进行时执行。(www.daowen.com)

3)等待SPI状态寄存器SPSR中的SPIF位置位。SPIF位将在SPI数据传输的最后一个采样钟沿之后置位。

4)读取SPI状态寄存器SPSR。

5)从SPI数据寄存器SPDR中读出接收到的数据(可选)。

6)如果有更多数据需要发送,则跳到第2步。

例4-7利用LPC2138的SPI接口作为主机,对串行存储器25C160进行读/写操所。Proteus仿真电路如图4-13所示。25C160是SPI总线的EEPROM,进行数据写入操作之前,必须先发一个“允许写入锁存”命令,然后再发出“写入”命令和16位写入地址,高位在前低位在后。一次最多可写入16个字节的数据,注意写入地址安排,不要发生地址翻转。全速运行程序,如果数据读写操作成功,LED1将点亮;如果出现数据读写错误,LED1将闪烁。本例对配置文件config.h中系统时钟参数设置进行了调整,使得VPB时钟为10MHz,满足SPI速率计算公式如下:

SPI速率=VPB时钟/SPCCR=10MHz/8<=2MHz

以便能够顺利读/写25C160。

978-7-111-44508-1-Chapter04-72.jpg

图4-13 采用SPI接口读/写25C160的Proteus仿真电路

主程序文件main.c如下:

978-7-111-44508-1-Chapter04-73.jpg

978-7-111-44508-1-Chapter04-74.jpg

978-7-111-44508-1-Chapter04-75.jpg

978-7-111-44508-1-Chapter04-76.jpg

978-7-111-44508-1-Chapter04-77.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈