打印
[AT32F435]

AT32F435无法驱动LCD

[复制链接]
2959|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
showmyself|  楼主 | 2024-1-24 08:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,

用的是AT32F435VGT7,100pin,XMC 16bit驱动480x320分辨率的LCD,地址线用的是A10,片选NE4,目前只能打开背光,死活驱动不了。
XMC初始化程序用的是AT_START_F435里面的,没有改动(只是改了自己板子对应的GPIO,其他XMC时序配置没有改动)。
调试了很多天,都没能解决,目前还是只能打开背光,屏幕一直是白色的,没有反应。硬件也检查过了,没问题。

硬件,软件都检查了,甚至把所有代码都删除了,只留下LCD初始化代码测试也不行,现在没头绪了。。。望大家指点!谢谢

void lcd_xmc_port_init(void)
{
    gpio_init_type  gpio_init_struct = {0};
    xmc_norsram_init_type  xmc_norsram_init_struct;
    xmc_norsram_timing_init_type rw_timing_struct, w_timing_struct;

    // 使能GPIO时钟A/B/C/D/E
    crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOD_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOE_PERIPH_CLOCK, TRUE);

    //使能XMC接口时钟
    crm_periph_clock_enable(CRM_XMC_PERIPH_CLOCK, TRUE);

    //GPIO配置,将GPIO复用为XMC
    gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE2, GPIO_MUX_14); //GPIOA D4
    gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE3, GPIO_MUX_14); //D5
    gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE4, GPIO_MUX_14); //D6
    gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE5, GPIO_MUX_14); //D7

    gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE10, GPIO_MUX_14); //GPIOB NOE

    gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE2, GPIO_MUX_14);  //GPIOC NWE
    gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE4, GPIO_MUX_14);  //NE4

    gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE0, GPIO_MUX_12);  //GPIOD  D2
    gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE1, GPIO_MUX_12);  //D3
    gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE5, GPIO_MUX_10);  //A10
    gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE8, GPIO_MUX_12);  //D13
    gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE9, GPIO_MUX_12);  //D14
    gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE10, GPIO_MUX_12); //D15
    gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE14, GPIO_MUX_12); //D0
    gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE15, GPIO_MUX_12); //D1

    gpio_pin_mux_config(GPIOE, GPIO_PINS_SOURCE11, GPIO_MUX_12);  //GPIOE D8
    gpio_pin_mux_config(GPIOE, GPIO_PINS_SOURCE12, GPIO_MUX_12); //D9
    gpio_pin_mux_config(GPIOE, GPIO_PINS_SOURCE13, GPIO_MUX_12); //D10
    gpio_pin_mux_config(GPIOE, GPIO_PINS_SOURCE14, GPIO_MUX_12); //D11
    gpio_pin_mux_config(GPIOE, GPIO_PINS_SOURCE15, GPIO_MUX_12); //D12


    //配置GPIO
    gpio_init_struct.gpio_pins = GPIO_PINS_4 | GPIO_PINS_5 | GPIO_PINS_6  | GPIO_PINS_7; //GPIOA
    gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
    gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
    gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
    gpio_init(GPIOA, &gpio_init_struct);


    gpio_init_struct.gpio_pins =  GPIO_PINS_10;  //GPIOB
    gpio_init(GPIOB, &gpio_init_struct);

    gpio_init_struct.gpio_pins =  GPIO_PINS_2 | GPIO_PINS_4;  //GPIOC
    gpio_init(GPIOC, &gpio_init_struct);

    gpio_init_struct.gpio_pins =  GPIO_PINS_0| GPIO_PINS_1 | GPIO_PINS_5 | GPIO_PINS_8 | GPIO_PINS_9 | GPIO_PINS_10 | GPIO_PINS_14 | GPIO_PINS_15;  //GPIOD
    gpio_init(GPIOD, &gpio_init_struct);

    gpio_init_struct.gpio_pins =  GPIO_PINS_11 | GPIO_PINS_12 | GPIO_PINS_13 | GPIO_PINS_14 | GPIO_PINS_15;  //GPIOE
    gpio_init(GPIOE, &gpio_init_struct);



    // XMC接口配置
    xmc_norsram_default_para_init(&xmc_norsram_init_struct);
    xmc_norsram_init_struct.subbank = XMC_BANK1_NOR_SRAM4;
    xmc_norsram_init_struct.data_addr_multiplex = XMC_DATA_ADDR_MUX_DISABLE;
    xmc_norsram_init_struct.device = XMC_DEVICE_SRAM;
    xmc_norsram_init_struct.bus_type = XMC_BUSTYPE_16_BITS;
    xmc_norsram_init_struct.burst_mode_enable = XMC_BURST_MODE_DISABLE;
    xmc_norsram_init_struct.asynwait_enable = XMC_ASYN_WAIT_DISABLE;
    xmc_norsram_init_struct.wait_signal_lv = XMC_WAIT_SIGNAL_LEVEL_LOW;
    xmc_norsram_init_struct.wrapped_mode_enable = XMC_WRAPPED_MODE_DISABLE;
    xmc_norsram_init_struct.wait_signal_config = XMC_WAIT_SIGNAL_SYN_BEFORE;
    xmc_norsram_init_struct.write_enable = XMC_WRITE_OPERATION_ENABLE;
    xmc_norsram_init_struct.wait_signal_enable = XMC_WAIT_SIGNAL_DISABLE;
    xmc_norsram_init_struct.write_timing_enable = XMC_WRITE_TIMING_ENABLE;
    xmc_norsram_init_struct.write_burst_syn = XMC_WRITE_BURST_SYN_DISABLE;
    xmc_nor_sram_init(&xmc_norsram_init_struct);

    // XMC时序配置
    xmc_norsram_timing_default_para_init(&rw_timing_struct, &w_timing_struct);
    rw_timing_struct.subbank = XMC_BANK1_NOR_SRAM4;
    rw_timing_struct.write_timing_enable = XMC_WRITE_TIMING_ENABLE;
    rw_timing_struct.addr_setup_time = 0x2;
    rw_timing_struct.addr_hold_time = 0x0;
    rw_timing_struct.data_setup_time = 0x2;
    rw_timing_struct.bus_latency_time = 0x0;
    rw_timing_struct.clk_psc = 0x0;
    rw_timing_struct.data_latency_time = 0x0;
    rw_timing_struct.mode = XMC_ACCESS_MODE_A;
    w_timing_struct.subbank = XMC_BANK1_NOR_SRAM4;
    w_timing_struct.write_timing_enable = XMC_WRITE_TIMING_ENABLE;
    w_timing_struct.addr_setup_time = 0x2;
    w_timing_struct.addr_hold_time = 0x0;
    w_timing_struct.data_setup_time = 0x2;
    w_timing_struct.bus_latency_time = 0x0;
    w_timing_struct.clk_psc = 0x0;
    w_timing_struct.data_latency_time = 0x0;
    w_timing_struct.mode = XMC_ACCESS_MODE_A;
    xmc_nor_sram_timing_config(&rw_timing_struct, &w_timing_struct);

    //连续读取持续时间和连续写入持续时间的总线周转阶段
    xmc_ext_timing_config(XMC_BANK1_NOR_SRAM4, 0x08, 0x08);

    //使能XMC Bank1_nor_SRAM4
    xmc_nor_sram_enable(XMC_BANK1_NOR_SRAM4, TRUE);
}


使用特权

评论回复
沙发
showmyself|  楼主 | 2024-1-24 13:41 | 只看该作者
已经解决了,大家不用回复了!

使用特权

评论回复
板凳
10应电| | 2024-6-15 13:11 | 只看该作者
showmyself 发表于 2024-1-24 13:41
已经解决了,大家不用回复了!

大佬,请教一下是什么解决的?我也一样的情况

使用特权

评论回复
地板
LEDyyds| | 2024-6-17 15:37 | 只看该作者
发一下如何解决的,给后来人一点参考

使用特权

评论回复
5
miltk| | 2024-8-3 12:24 | 只看该作者
在调试AT32F435VGT7与LCD显示屏的连接时,如果只能打开背光而无法驱动屏幕显示内容,可能是由于时序配置问题导致

使用特权

评论回复
6
pe66ak| | 2024-8-3 13:32 | 只看该作者
确保XMC(外部存储器控制器)的时序配置正确,包括时钟频率、数据建立和保持时间等。检查数据手册中关于LCD控制器的时序要求,并与你的配置进行对比

使用特权

评论回复
7
wamed| | 2024-8-3 14:35 | 只看该作者
确认所有与LCD连接的引脚(包括数据线、控制线如RS、WR、CS等)都正确配置为复用功能。确保GPIO模式、速度和上拉/下拉设置正确

使用特权

评论回复
8
tiakon| | 2024-8-3 16:00 | 只看该作者
确保LCD的初始化顺序正确,包括电源开启、复位、时序配置等。有些LCD控制器需要特定的初始化序列才能正常工作

使用特权

评论回复
9
teaccch| | 2024-8-3 17:06 | 只看该作者
确认使用的通信协议(如8080并行接口、SPI等)与LCD控制器兼容,并且配置正确。检查数据传输是否正确,可以使用逻辑分析仪捕捉信号,查看数据是否正确发送

使用特权

评论回复
10
一切D都好| | 2024-8-3 18:22 | 只看该作者
保证软件中对LCD的写操作和命令发送正确无误。可以尝试简化代码,只发送基本的初始化命令和测试数据,逐步增加复杂性,以定位问题

使用特权

评论回复
11
eleg34ance| | 2024-8-4 10:00 | 只看该作者
使用逻辑分析仪或示波器捕捉信号,检查数据线和控制线的波形是否符合预期。通过调试工具(如调试器)单步执行代码,检查每一步的输出是否正确。

使用特权

评论回复
12
nuan11nuan| | 2024-8-4 11:28 | 只看该作者
查找是否有其他开发者成功使用相同或相似硬件配置的案例,参考他们的配置和代码

使用特权

评论回复
13
gra22ce| | 2024-8-4 12:30 | 只看该作者
联系技术支持或社区,寻求帮助

使用特权

评论回复
14
星星点点didi| | 2024-8-4 19:30 | 只看该作者
虽然你提到硬件检查过没有问题,但仍需确保所有连接稳固,没有虚焊或短路。检查电源电压是否稳定,是否符合LCD控制器的要求

使用特权

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

本版积分规则

52

主题

123

帖子

1

粉丝