大家好,
用的是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);
}
|