SPI协议中的SCK是用来同步数据传输的时钟信号,由Master驱动,Slave接收。当使用SPI接口时,时钟可编程为高有效或低有效,否则,时钟总是低有效。SCK的状态只能在数据传输过程中变,在其他时间里,SPI接口使其保持无效状态或不驱动它(使其处于高阻态)
SPI设备间的数据传输之所以又被称为数据交换,是因为SPI协议规定一个SPI设备在通信过程中不能仅仅充当一个“发送者”或“接收者”,在每个SCK周期内,SPI设备都会发送并接收一个bit大小的数据,相当于该设备有一个bit大小的数据被交换了。如下例中的驱动:
该例中LPC1788MCU是Master,GT21L16S2W字库芯片是Slave,GT21L16S2W的快速读取时序如下:
代码分析:
30-33行:在选通GT21L16S2W芯片之前先将LPC1788中的SSP控制器的Rx FIFO清空,将这段代码注 释掉也运行正常,但最好清空一下Rx FIFO防止意外
34行: 将LPC1788的P2[22]引脚置为低电平来选通GT21L16S2W芯片。GT21L16S2W芯片的片选是由 P2[22]引脚配置为GPIO输出高电平或低电平来控制的,所以LPC1788与GT21L16S2W进行通讯 时必须置低P2[22]引脚。
35-42行:LPC1788向GT21L16S2W发送一个字节的快速读命令,然后发送三个字节的地址