LPC5528 SPI 上手

关键字 :SPILPC5528nxp

       LPC5528的SPI功能由Flexcomm接口提供,在使用SPI之前需要将Flexcomm接口的外设功能设定为SPI。LPC5528一共有8个Flexcomm,所以总共有8个SPI接口,其中Flexcomm8对应的是高速的SPI。

一、SPI简介

       LPC5528的SPI都可配为主机或者从机模式,支持4~16位的数据传输模式,其他更灵活的数据位传输可以通过软件SPI实现。

       同时支持DMA传输,效率更高,可以支持直接向从机设备写数据而不接收数据。

       SPI在主机模式下时钟最高可达30M,从机模式下20M,高速SPI主从模式下最高可达50M。

二、简单使用

       示例使用高速SPI去读取一颗SPI Flash,主要完成以下动作,读取设备ID,往里面写入数据0~255,再读取刚刚写入的数据。

(1)将flexcomm的外设功能设定为SPI

(2)初始化SPI

       1)配置工作模式

      主要是配置时钟极性选择(CPOL)和时钟相位(CPHA)。

      CPOL=0,SPI总线空闲电平为低电平,CPOL=1,SPI总线空闲电平为高电平。

      CPHA=0,在SCK第一个跳变沿采样数据,CPHA=1,在SCK第二个跳变沿采样。

      工作模式的定义:

工作模式1:

       CPOL=0,CPHA=0

工作模式2:

       CPOL=1,CPHA=0

工作模式3:

       CPOL=0,CPHA=1

工作模式4:

       CPOL=1,CPHA=1

 

       2)配置波特率

       按照前面所述,SPI在主机模式下时钟最高可达30M,从机模式下20M,高速SPI主从模式下最高可达50M。波特率也在这个范围。

 

       3)配置数据传输位宽

       有4~16位可选。

 

       4)配置数据高低位传输

        在进行数据传输的时候,决定先从数据的高位开始传还是数据的低位开始传。

 

       5)配置片选时钟极性

       根据从机的特性,决定在通信的时候,CS脚的电平状态是高还是低。

 

       6)配置从机设备选择

       LPC5528一个SPI总线上根据CS脚的不同,最多可以挂载4个从设备,这里配置当前选择哪个从设备。

 

       以上所述的6个配置都可在一个结构体中去初始化,如下图。




(3)读取ID

       使用默认的全双工传输的方式,往Flash里面发送对应的指令然后读取相应的ID。



       实际的波形如下:

       可以看到MISO线上是成功读取到了Flash的ID。

 

(4)写入数据



        可以从上图中看出,在往flash写入特定的指令并得到Flash的回应之后,就开始往里写0~255的数据。

(5)读取数据

       上图是从Flash中读取数据的波形,也是先向Flash写入对应指令,得到回应之后,就可以读取刚刚写入的数据了。

       通过串口把读取的数据打印出来,确认成功读写。



(6)代码参考

       关于读写部分代码上传在附录,请参考。

三、总结

       本文所参考的文档为 LPC5528 的用户手册,已上传在附录,所用的代码为NXP官方的SDK,可在链接(Select Board | MCUXpresso SDK Builder (nxp.com))注册下载,任意版本均适用。
       许多SPI设备都会有特定的时序要求,如果光使用SDK里面的SPI去读写很可能不能实现想要的效果,所以在多数情况下,需要根据不同的时序要求去修改读写逻辑。另外在更高的数据量和更快的要求情境下,使用DMA的方式去读写会更好。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论