SPI协议介绍

**

SPI协议介绍:

**

  1. 硬件连接:

    SPI Flash和SPI OLED。
    

    两种方式:

    用GPIO模拟SPI
    用S3C2440的SPI控制器
    

我们先介绍下SPI协议,硬件框架如下:

	SCK:提供时钟
	DO:作为数据输出
	DI:作为数据输入
	CS0/CS1:作为片选

同一时刻只能有一个SPI设备处于工作状态。
2.假设现在2440传输一个0x56(二进制就是0b0101 0110)数据给SPI Flash,时序如下:
在SPI协议中,有两个值来确定SPI的模式。
CPOL:表示SPICLK的初始电平,0为低电平,1为高电平
CPHA:表示相位,即第一个还是第二个时钟沿采样数据,0为第一个时钟沿,1为第二个时钟沿。

CPOL CPHA 模式 含义
0 0 0 初始电平为低电平,在第一个时钟沿采样数据
0 1 1 初始电平为低电平,在第二个时钟沿采样数据
1 0 2 初始电平为高电平,在第一个时钟沿采样数据
1 1 3 初始电平为高电平,在第二个时钟沿采样数据

我们常用的是模式0和模式3,因为它们都是在上升沿采样数据,不用去在乎时钟的初始电平是什么,只要在上升沿采集数据就行。
极性选什么?格式选什么?通常去参考外接的模块的芯片手册。比如对于OLED,查看它的芯片手册时序部分:

SCLK的初始电平我们并不需要关心,只要保证在上升沿采样数据就行。
使用GPIO实现SPI协议操作OLED
现在开始写代码,使用GPIO实现SPI协议操作。

我们现在想要操作OLED,通过三条线(SCK、DO、CS)与OLED相连,这里没有DI是因为2440只会向OLED传数据而不用接收数据。
我们要用GPIO来实现SOC向OLED写数据,这一层用gpio_spi.c来实现,负责发送数据。
对于OLED,有专门的指令和数据格式,要传输的数据内容,在oled.c这一层来实现,负责组织数据。

发布了2 篇原创文章 · 获赞 9 · 访问量 1913

猜你喜欢

转载自blog.csdn.net/qq_40477128/article/details/103088298