spi

SPI简介

        SPI(Serial Peripheral Interface)即串行外围接口,通常可以用它来配置一些硬件模块的寄存器,但SPI没有应答响应信号,所以在数据传输过程中的可靠性不如I2C;SPI以主从方式进行工作,能够实现数据的双向传输(全双工方式),一般由四根Pin脚组成,片选使能(CS)、时钟(SLCK)、数据输出(SDO)、数据输入(SDI),如下

SPI的四种工作模式:

通过配置主设备时钟极性(CPOL)和时钟相位(CPHA),实现不同的工作模式,
Mode0:CPOL=0,CPHA=0----------------高电平有效,输入模式第一个边沿开始,输出模式第二个边沿开始
Mode1:CPOL=0,CPHA=1----------------高电平有效,输出模式第一个边沿开始,输入模式第二个边沿开始
Mode2:CPOL=1,CPHA=0----------------低电平有效,输入模式第一个边沿开始,输出模式第二个边沿开始
Mode3:CPOL=1,CPHA=1----------------低电平有效,输出模式第一个边沿开始,输入模式第二个边沿开始

时钟极性CPOL: SPI空闲时,时钟SCLK的电平状态(空闲时SCLK=0,即高电平有效;空闲时SCLK=1,即低电平有效)
时钟相位CPHA: SPI在SCLK第几个边沿开始采样(0标识第一个边沿, 1表示第二个边沿)

时序图如下:

 

当在Mode0:CPOL=0,CPHA=0时,

 

硬件描述 LCD驱动手册

写寄存器的时序,

D15---->D10设置寄存器地址

D9------>D8写模式下设置成11(本文的高8位值设置为(0x2<<2) | 0x3)

D7------>D0操作寄存器的数据(本文的低8位值设置为0x10或者0x13)

从以上时序图可以看出,先使能,拉低片选信号SPENB,再设置数据位SPDA为0或者1,再操作时钟从0变到1的过程,即上升沿触发数据有效;那么一位操作就完成了,后面要写的每位操作都一样;

02寄存器的地址bit0的作用可以设置左右和上下翻转,bit1的作用可以设置上下翻转,第4位是保留位可写0,也可以写1,本文保留为设置的1,即寄存器02写0x13和0x10进行旋转180度进行切换,如果其他位有设置,需要进行位操作;

ARM6410的连接到LCD上的专用GPIO只有两组,GPI和GPJ,做硬件画板的朋友注意一定不要把普通的GPIO连接到LCD了,因为普通的GPIO输出数据太慢,根本没办法正常显示。本文用的GPJ的接口。

需要复用的GPIO如下,

GPJ8------->LCD的行信号线(模拟数据SPI_CLK)

GPJ8------->LCD的场信号线(模拟时钟SPI_CLK)

当然还有个片选CS信号线,本文的平台依赖于硬件平台的FPGA,该信号线使用FPGA的寄存器控制的,有需要的直接用GPIO复用代替即可,当然要看你的平台的连线;

GPJ8和GPJ9初始状态为10模式,即LCD的行场模式,需要把他们配置成输出模式,即每根pin配成01(每个Pin占用2个位)

static void s3c6410_lcdtm350_gpio_init(){
        unsigned long tmp = 0;
        tmp = __raw_readl(S3C64XX_GPJCON);
        tmp &= (~0xf0000);//在GPJ8和GPJ9位用 0000 与操作置零
        tmp |= 0x50000;//在GPJ8和GPJ9位用 0101 或操作配置成输出模式
        __raw_writel(tmp,S3C64XX_GPJCON);
}

GPJ8和GPJ9配置完成后需要配回原始状态行和场模式,即10

static void s3c6410_lcdtm350_gpio_exit(){
        unsigned long tmp = 0;
        tmp = __raw_readl(S3C64XX_GPJCON);
        tmp &= (~0xF0000);//在GPJ8和GPJ9位用 0000 与操作置零
        tmp |= 0xa0000;//在GPJ8和GPJ9位用 1010 或操作配置成行和场模式
        __raw_writel(tmp,S3C64XX_GPJCON);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值