【LPC54100】SPI0驱动TFT LCD

今天使用LPC54102的SPI口来驱动TFT LCD,SPI的原理就不具体介绍了,硬件有4根线:SSEL、SCK、MISO、MOSI。驱动ILI9163的TFT屏只需要主机发送数据,因此SPI口接3根线即可:片选SSEL0、时钟SCK、主机输出MOSI。此外还要用1个GPIO口连接到TFT屏的A0(寄存器选择),具体参照http://bbs.eeworld.com.cn/thread-461864-1-1.html

LPCOpen Platform for LPC5410Xmicrocontrollers文档中给出了SPI口的配置过程,这里进一步说明一下。

1.      初始化SPI:配置SPI口和SPI引脚,使能时钟

这里选择了SPI0,对应板子上的J3口:P0.11-P0.14。

使能时钟如下:

2.      开辟内存,用于drivercontext

3.      初始化驱动:调用ROM_SPIM_Init()函数,配置SSEL0有效为0

4.      配置SPI传输参数:

比特率设为1MHz,延时均设为0。

根据ILI9163的时序可确定:低位先发送,数据位为8位

选择对应的SPI模式:SPI空闲时SCK时钟极性为低电平,在SCK的奇数边沿采集数据,选择模式0,如下图:

5.      注册回调函数

6.      设置传输缓存区、片选线等

由于主机不需要接收数据,这里设为Receive Ignore

7.      开始传输

ROM_SPIM_Transfer(spimHandle, &mXfer);

8.      一直传输直至完成

while (mXfer.status == ERR_SPI_BUSY) {

         ROM_SPIM_TransferHandler(spimHandle);

}

通过上面的配置可完成SPI0口的数据传输,实现TFT驱动的3个基本函数:

void write_command(uint_least8_t addr1);//写命令

void write_para(uint_least8_t para1); //写命令的参数

void write_data(uint_least16_t dat); //写数据

从而将TFT驱动程序移植到LPC54102上,相比GPIO口模拟SPI时序的方式,硬件SPI方式虽然配置复杂,但不需要写程序实现发送的时序,有效利用了片内资源,也更为可靠。

 

 

原文地址 http://bbs.eeworld.com.cn/thread-461865-1-1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值