你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

NUCLEO的驱动屏幕TFT的一些疑惑

[复制链接]
一花一世界003 发布时间:2015-2-2 08:46
我有一点点遗憾,就是之前想过为NUCLEO配置一块屏幕,但是一直没有机会,最近有一块TFT屏幕,型号是ILI9225,在KEIL下先编写驱动程序,是初始化,然后写命令,写数据,最后在设置屏幕的寄存器。
void LCD_GPIO_Init(void)
{

        GPIO_InitTypeDef  GPIO_InitStructure;
             
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB ,ENABLE);
        -----可以看到我的IO口是B9,B10,B11,B12,B13,B14,B15
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11| GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOB, &GPIO_InitStructure);

}

void  SPIv_WriteData(u8 Data)
{//STM32_模拟SPI读写一个字节数据底层函数
        unsigned char i=0;
        for(i=8;i>0;i--)
        {
        if(Data&0x80)       
       LCD_SDA_SET; //输出数据
      else LCD_SDA_CLR;
      //LCD_SDA   ----->             GPIO_Pin_15/  
     //LCD_SDA_SET---->          LCD_CTRL->BSRR=LCD_SDA
      LCD_SCL_CLR;      
      LCD_SCL_SET;
      Data<<=1;
}
}

void Lcd_WriteIndex(u8 Index)
{
   LCD_CS_CLR;
   LCD_RS_CLR;
#if USE_HARDWARE_SPI   
   SPI_WriteByte(SPI2,Index);
#else
   SPIv_WriteData(Index);
#endif
   LCD_CS_SET;
}

//LCD写命令字,根据ILI9225的读写时序完成,与网上已有资料一致
这个是写数据,所有液晶屏都是一样的,只是协议有不同,我的是SPI
按照SPI标准硬件读写协议完成的!像12864之类的协议就有I2C等等。
void Lcd_WriteData(u8 Data)
{
   LCD_CS_CLR;
   LCD_RS_SET;
#if USE_HARDWARE_SPI   
   SPI_WriteByte(SPI2,Data);
#else
   SPIv_WriteData(Data);
#endif
   LCD_CS_SET;
}
Lcd_Init函数每个液晶屏幕根据其控制芯片的不同也有不一样的写命令,数据组合
我的ILI9225与其他的液晶屏幕的初始化,设置位置当然有所区别

//LCD Init For 2.2inch LCD Panel with ILI9225.       
        LCD_WriteReg(0x10, 0x0000); // Set SAP,DSTB,STB
        LCD_WriteReg(0x11, 0x0000); // Set APON,PON,AON,VCI1EN,VC
        LCD_WriteReg(0x12, 0x0000); // Set BT,DC1,DC2,DC3
        LCD_WriteReg(0x13, 0x0000); // Set GVDD
        LCD_WriteReg(0x14, 0x0000); // Set VCOMH/VCOML voltage
        delay_ms(40); // Delay 20 ms
       
        // Please follow this power on sequence
        LCD_WriteReg(0x11, 0x0018); // Set APON,PON,AON,VCI1EN,VC
        LCD_WriteReg(0x12, 0x1121); // Set BT,DC1,DC2,DC3
        LCD_WriteReg(0x13, 0x0063); // Set GVDD
        LCD_WriteReg(0x14, 0x3961); // Set VCOMH/VCOML voltage
        LCD_WriteReg(0x10, 0x0800); // Set SAP,DSTB,STB
        delay_ms(10); // Delay 10 ms
        LCD_WriteReg(0x11, 0x1038); // Set APON,PON,AON,VCI1EN,VC
        delay_ms(30); // Delay 30 ms
       
       
        LCD_WriteReg(0x02, 0x0100); // set 1 line inversion等等,由于发帖长度限制,这里就写一下一部分吧。

接着我会开一个贴写我在MBED上面是怎么样写SPI来驱动我的ILI9225的
收藏 评论8 发布时间:2015-2-2 08:46

举报

8个回答
aderson 回答时间:2015-2-2 10:16:34
SPI快吗?
一花一世界003 回答时间:2015-2-2 18:35:45
spi速度够快,基本上在SPI速率可以达到MB速度
湛无双 回答时间:2015-2-2 19:25:05
建议使用芯片自带的硬件SPI 这样效果好点 不要用软件模拟
一花一世界003 回答时间:2015-2-3 12:51:56
湛无双 发表于 2015-2-2 19:25
建议使用芯片自带的硬件SPI 这样效果好点 不要用软件模拟

没成功,所以换用模拟的SPI,
时光碎了天 回答时间:2015-2-3 13:13:56
很不错的
20091217083309-1058990770.jpg
cxtarm 回答时间:2015-2-3 13:33:44
硬件SPI更爽
湛无双 回答时间:2015-2-3 15:14:17
一花一世界003 发表于 2015-2-3 12:51
没成功,所以换用模拟的SPI,

可以参考下F4的SPI设置问题,我是用的F4的板子  不知道你用的什么板子 可能是用的F3的 这样的话SPI的配置就大差不差了 我这个程序里面还加了文件操作系统  对于需要外扩大容量的SD卡很有帮助,另外还添加了长文件名支持,这样就有点耗内存了 所以我上传了两个版本,你可以拿去参考下
https://www.stmcu.org.cn/module/forum/thread-599839-1-1.html
andrewlawww 回答时间:2015-2-3 16:08:55
过来学习了

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版