登录注册
论坛
一粒金砂(高级)
150
0
在广泛收集资料的情况下,对MIKROE TFT-PROTO Board的使用终于有所突破,初步实现了该显示屏的显示驱动。
该显示板是使用3.3V电源,其背光LED需要一个5欧的电阻来限流。使用可两个10欧电阻并联得到。
该显示板所提供的接口可支持以16位、8位、18位、9位或SPI模式来驱动。
在大多数情况下,出于不想过多占用I/O资源的原因,多是采用SPI模式驱动。
模式的设置是通过IMx引脚来实现,即IM0、IM1、IM3接GND,IM2接3.3V。
在该模式下,只需要三个SPI信号引脚及一个CS片选和一个复位信号,总共5个引脚。
其中,RST复位信号是由开发板的复位引脚提供,至于WR和FMARK信号则未使用,其接口电路基本如图1所示,个别之处有所调整。
image.png (1.26 MB, 下载次数: 0)
下载附件 保存到相册
2025-1-31 23:59 上传
图1 接口电路
该显示屏的引脚排列如图2所示,其内部电路如图3所示。
image.png (717.96 KB, 下载次数: 0)
图2 引脚排列
image.png (1011.63 KB, 下载次数: 0)
2025-2-1 00:00 上传
图3 内部电路
为驱动该显示屏,是以N32A455开发板来驱动其实现显示。
该显示屏与开发板的连接关系为:
CS --PE2
MOSI --PE4
CLK --PE3
BLC --PE6
RST ---RST
对所用引脚的配置函数为:
void LCD_config(void) { GPIO_InitType GPIO_InitStructure; RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOE, ENABLE); GPIO_InitStructure.Pin =GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitPeripheral(GPIOE, &GPIO_InitStructure); }
以模拟SPI方式方式字节数据的函数为:
void send_byte(uint8_t data) { uint8_t count; for(count = 0; count < 8; count++) { CLR_CLK(); delay2(); if(data & 0x80) { SET_SDA(); } else { CLR_SDA(); } delay2(); data <<= 1; SET_CLK(); delay2(); } }
对显示屏的初始化函数为:
void ili9341_init(void) { write_register(0x01); lcdc_delay(1000); write_register(0x28); write_register(0xCF); write_data(0x00); write_data(0x83); write_data(0X30); write_register(0xED); write_data(0x64); write_data(0x03); write_data(0X12); write_data(0X81); write_register(0xE8); write_data(0x85); write_data(0x01); write_data(0x79); write_register(0xCB); write_data(0x39); write_data(0x2C); write_data(0x00); write_data(0x34); write_data(0x02); write_register(0xF7); write_data(0x20); write_register(0xEA); write_data(0x00); write_data(0x00); write_register(0xC0); write_data(0x26); write_register(0xC1); write_data(0x11); write_register(0xC5); write_data(0x35); write_data(0x3E); write_register(0xC7); write_data(0XBE); write_register(0x36); write_data(0x48); write_register(0x3A); write_data(0x55); write_register(0xB1); write_data(0x00); write_data(0x1B); write_register(0xF2); write_data(0x08); write_register(0x26); write_data(0x01); write_register(0xE0); write_data(0x1F); write_data(0x1A); write_data(0x18); write_data(0x0A); write_data(0x0F); write_data(0x06); write_data(0x45); write_data(0X87); write_data(0x32); write_data(0x0A); write_data(0x07); write_data(0x02); write_data(0x07); write_data(0x05); write_data(0x00); write_register(0XE1); write_data(0x00); write_data(0x25); write_data(0x27); write_data(0x05); write_data(0x10); write_data(0x09); write_data(0x3A); write_data(0x78); write_data(0x4D); write_data(0x05); write_data(0x18); write_data(0x0D); write_data(0x38); write_data(0x3A); write_data(0x1F); write_register(0x2A); write_data(0x00); write_data(0x00); write_data(0x00); write_data(0xEF); write_register(0x2B); write_data(0x00); write_data(0x00); write_data(0x01); write_data(0x3F); write_register(0xB7); write_data(0x07); write_register(0xB6); write_data(0x0A); write_data(0x82); write_data(0x27); write_data(0x00); write_register(0x11); lcdc_delay(1000); write_register(0x29); lcdc_delay(1000); write_register(0x2C); BLC_HIGH(); }
以色彩清除屏幕的函数为:
void ili9341_clear(int c) { uint32_t index=0; set_cursor(0x00, 0x0000); gram_prepare(); for(index = 0; index < (320*240); index++) { write_data(c >> 8); write_data(c); } }
进行驱动测试的主程序为:
int main(void) { LCD_config(); ili9341_init(); ili9341_clear(RED); while (1); }
经程序的编译和下载,其测试效果如图4所示,说明驱动成功!
image.png (844.37 KB, 下载次数: 0)
2025-2-1 00:04 上传
图4 测试效果
新年啦,还是献上一份年味浓浓的画面来增添喜悦的氛围吧!祝大家社区越办越好,大家万事如意!
image.png (936 KB, 下载次数: 0)
2025-2-1 11:42 上传
扫一扫,分享给好友
版主
6754
10
MIKROE TFT-PROTO Board是哪家的主控啊,引脚不少
在爱好的道路上不断前进,在生活的迷雾中播撒光引
秦天qintian0303 发表于 2025-2-1 08:11 MIKROE TFT-PROTO Board是哪家的主控啊,引脚不少
主控芯片是ILI9341,这款屏主打的是工作模式多,目前常见的SPI屏多是国产的简化板,特点是引脚比较少、易用、价廉。
发表回复 回帖后跳转到最后一页
EEWorld Datasheet 技术支持
查看 »