环境搭建的内容可以参考:【MAX78000FEATHERBOARD】开箱与Eclipse环境搭建
本次介绍如何驱动ILI9341屏幕。涉及硬件:SPI
TFT屏幕驱动
屏幕信息:驱动芯片是ili9341,SPI接口,带触摸功能。
此次利用MAX78000的SPI0接口来驱动屏幕:
屏幕序号 | 屏幕引脚标号 | 说明 | MAX7800引脚 |
1 | VCC | 5V/3.3V电源输入 | 3.3V |
2 | GND | 接地 | GND |
3 | CS | 屏幕片选信号,低电平使能 | MXC_GPIO_PIN_11 |
4 | RESET | 液晶屏复位信号,低电平复位 | MXC_GPIO_PIN_19 |
5 | DC/RS | 液晶屏寄存器/数据选择信号,低电平:寄存器;高电平:数据 | MXC_GPIO_PIN_8 |
6 | SDI(MOSI) | SPI总线“写”数据信号 | MXC_GPIO_PIN_5 |
7 | SCK | SPI总线时钟信号 | MXC_GPIO_PIN_7 |
8 | LED | 背光控制,高电平点亮,如无需控制则接3.3V常量 | MXC_GPIO_PIN_9 |
9 | SDO(MISO) | SPI总线“读”数据信号,如无需读取功能则可不接 | - |
10 | T_CLK | 触摸SPI总线时钟信号 | |
11 | T_CS | 触摸屏片选信号,低电平使能 | |
12 | T_DIN | 触摸SPI总线输入 | |
13 | T_DO | 触摸SPI总线输出 | |
14 | T_IRQ | 触摸屏中断信号,检测到触摸时为低电平 |
屏幕片选:slave 1:
slave 1连接的是PIN_11
//Define pins
if (pins.ss1) {
gpio_cfg_spi.mask = MXC_GPIO_PIN_11;
gpio_cfg_spi.func = MXC_GPIO_FUNC_ALT2;
MXC_GPIO_Config(&gpio_cfg_spi);
}
复位和背光的连接:
mxc_gpio_cfg_t tft_reset_pin = {MXC_GPIO0, MXC_GPIO_PIN_19,
MXC_GPIO_FUNC_OUT, MXC_GPIO_PAD_NONE, MXC_GPIO_VSSEL_VDDIOH};
mxc_gpio_cfg_t tft_blen_pin = {MXC_GPIO0, MXC_GPIO_PIN_9,
MXC_GPIO_FUNC_OUT, MXC_GPIO_PAD_NONE, MXC_GPIO_VSSEL_VDDIOH};
DC引脚:
/* TFT DC signal */
mxc_gpio_cfg_t tft_dc_pin = { MXC_GPIO0, MXC_GPIO_PIN_8, MXC_GPIO_FUNC_OUT, MXC_GPIO_PAD_NONE,
MXC_GPIO_VSSEL_VDDIOH };
SCK连接PIN_7;MOSI连接PIN_5
#ifdef MXC_SPI0
} else if (spi == MXC_SPI0) {
MXC_SYS_Reset_Periph(MXC_SYS_RESET1_SPI0);
MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_SPI0);
//Define pins
if (pins.ss1) {
gpio_cfg_spi.mask = MXC_GPIO_PIN_11;
gpio_cfg_spi.func = MXC_GPIO_FUNC_ALT2;
MXC_GPIO_Config(&gpio_cfg_spi);
}
if (pins.ss2) {
gpio_cfg_spi.func = MXC_GPIO_FUNC_ALT2;
gpio_cfg_spi.mask = MXC_GPIO_PIN_10;
MXC_GPIO_Config(&gpio_cfg_spi);
}
//clear mask
gpio_cfg_spi.mask = 0;
// check rest of the pins
if (pins.clock) {
gpio_cfg_spi.mask |= MXC_GPIO_PIN_7;
}
if (pins.miso) {
gpio_cfg_spi.mask |= MXC_GPIO_PIN_6;
}
if (pins.mosi) {
gpio_cfg_spi.mask |= MXC_GPIO_PIN_5;
}
if (pins.sdio2) {
gpio_cfg_spi.mask |= MXC_GPIO_PIN_8;
}
if (pins.sdio3) {
gpio_cfg_spi.mask |= MXC_GPIO_PIN_9;
}
if (pins.ss0) {
gpio_cfg_spi.mask |= MXC_GPIO_PIN_4;
}
gpio_cfg_spi.func = MXC_GPIO_FUNC_ALT1;
#endif