打印
[AT32F435]

AT32F435无法驱动LCD

[复制链接]
1623|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
发一下如何解决的,给后来人一点参考

使用特权

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

本版积分规则

52

主题

123

帖子

1

粉丝