打印
[STM32F1]

2.4寸TFT驱动求助,不知道是什么驱动IC。

[复制链接]
1448|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ss1969|  楼主 | 2016-11-7 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

小弟有个板子要搞一搞。。

2.4寸的lcd,标识型号FPC-T24QT10T2(搜不到。。。。)
  

37Pin,不带触摸(有上件位置没上),排除掉已知的pin之后,
剩下的pin非常像是FSMC驱动方式,包括NE1、D0~D15,NOE,NWE,A16都在,剩下一根我猜是reset
然后用确定没问题的(开发板可跑可驱动lcd)代码去试试
读出ID是0x0075
这就糊涂了 ,感觉是读错了,但是完全不知道怎么继续

贴下fsmc初始化和读ID代码:

void MX_FSMC_Init(void)
{
    FSMC_NORSRAM_TimingTypeDef Timing;
 
    /** Perform the SRAM1 memory initialization sequence
    */
    hsram1.Instance = FSMC_NORSRAM_DEVICE;
    hsram1.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;
    /* hsram1.Init */
    hsram1.Init.NSBank = FSMC_NORSRAM_BANK1;
    hsram1.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
    hsram1.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
    hsram1.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;
    hsram1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;
    hsram1.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
    hsram1.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
    hsram1.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
    hsram1.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
    hsram1.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
    hsram1.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE;
    hsram1.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
    hsram1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
    /* Timing */
    #if 0
    Timing.AddressSetupTime = 2;
    Timing.AddressHoldTime = 15;
    Timing.DataSetupTime = 5;
    Timing.BusTurnAroundDuration = 0;
    Timing.CLKDivision = 16;
    Timing.DataLatency = 17;
    Timing.AccessMode = FSMC_ACCESS_MODE_A;
    #else
 
    Timing.AddressSetupTime = 10;
    Timing.AddressHoldTime = 10;
    Timing.DataSetupTime = 15;
    Timing.BusTurnAroundDuration = 10;
    Timing.CLKDivision = 16;
    Timing.DataLatency = 17;
    Timing.AccessMode = FSMC_ACCESS_MODE_B;
    #endif
    /* ExtTiming */
 
    if (HAL_SRAM_Init(&hsram1, &Timing, NULL) != HAL_OK)
    {
        Error_Handler();
    }
 
    /** Disconnect NADV
    */
 
    __HAL_AFIO_FSMCNADV_DISCONNECTED();
 
}



读ID代码

uint16_t lcdReadReg(uint8_t LCD_Reg)
{
    uint16_t d;
 
    *(__IO uint16_t*)(Bank1_LCD_C) = LCD_Reg;
    d = *(__IO uint16_t*)(Bank1_LCD_D);
 
    return d;
}
 
void LCD_Init(void)
{
    lcdReset();
 
//  lcdWriteCmd(0x00, 0x0001);
    HAL_Delay(50); // delay 50 ms
    DeviceCode = lcdReadReg(0x0000);
    xprintf("LCD ID:0x%04x\r\n", DeviceCode); //打印LCD ID
。。。
}
沙发
airwill| | 2016-11-7 19:42 | 只看该作者
楼主不错啊, 很仔细, 引脚功能都猜出来了, 支持一下
如果只是玩玩, 那就用着编程玩玩吧
找专用做液晶的商家, 多找几家, 或许会遇到知道的人.

使用特权

评论回复
板凳
ss1969|  楼主 | 2016-11-7 20:01 | 只看该作者
airwill 发表于 2016-11-7 19:42
楼主不错啊, 很仔细, 引脚功能都猜出来了, 支持一下
如果只是玩玩, 那就用着编程玩玩吧
找专用做液晶的商家 ...

基本上确认是FSMC没错,然后用IO模拟了一下FSMC,读出的id也是0x0075
看过了好几个qvga的驱动,似乎都是先读id的,不知道有没有特例

因为某些你知我知的原因,只能用这个板子,不然的话,哎,换新的tft早就搞定啦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

1

粉丝