本帖最后由 yinyue01 于 2015-5-13 22:12 编辑
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方式虽然配置复杂,但不需要写程序实现发送的时序,有效利用了片内资源,也更为可靠。
lpc54102_SPI.zip
(5.68 MB, 下载次数: 140)