本帖最后由 wudianjun2001 于 2016-12-8 10:41 编辑
上篇文章讲的是使用普通IO口驱动5110显示屏,这次使用板卡的SPI总线来驱动。
SerialPeripheral Interface(SPI) SPI是串行外设接口(SerialPeripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,在主芯片的管脚上主要占用四根线。 MOSI– 主设备数据输出,从设备数据输入; MISO– 主设备数据输入,从设备数据输出; SCLK– 时钟信号,由主设备产生; SS – 从设备使能信号,由主设备控制 其中MOSI/MISO/SCLK三根线实现全双工的通信,简单高效了,由于器件的寻址通过一个SS片选脚来指定,当连接多台SPI设备时,需要多个片选信号。 SCLK提供时钟脉冲,MOSI,MISO则基于此脉冲完成数据传输。数据输出通过 MOSI线,数据在时钟上升沿/下降沿时改变,在紧接着的下降沿/上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟的改变(上沿和下沿为一次),就可以完成8位数据的传输。 SS线是用于一根使能线,特别是接多个外围设备的时候,可以通过控制SS线,对不同的外围设备进行通信
写一个程序关于SPI必须注意的问题有: 1. 字节的传输是从最高位(MSB)传输,还是从最低位(LSB)传输呢?这是由SPI.setBitOrder()函数进行设置的。 2. 当数据不传输时,时钟线是高还是低? 3. 触发方式是上升沿触发还是下降沿触发呢?这个由SPI.setDataMode()函数进行设置。 4.SPI运行的速度是多快呢?这个由SPI.setClockDivider()函数进行设置
板卡的SPI对应的引脚
硬件连接
程序部分在上次的基础上稍微改动下就可以了,引脚定义部分程序
SPI发送一个字节数据函数
系统初始化部分,这里去掉了不用的IO口初始化,增加了SPI的初始化
显示效果 源代码
fire.rar
(6.49 KB, 下载次数: 23)
|