基于fsmc总线对彩屏的驱动设计方案

使用fsmc总线驱动彩屏的特点是速度快,与使用io口模拟的时序的做法相比,fsmc稳定性好,缺点是配置复杂,较难理解。现将配置步骤总结如下:
1.配置引脚
配置函数如下:
void lcd_ctrllinesconfig(void)
{
gpio_inittypedef gpio_initstructure;
rcc_ahbperiphclockcmd(rcc_ahbperiph_fsmc, enable);
rcc_apb2periphclockcmd(rcc_apb2periph_gpiob | rcc_apb2periph_gpiod | rcc_apb2periph_gpioe |
rcc_apb2periph_gpiof | rcc_apb2periph_gpiog |
rcc_apb2periph_afio, enable);
gpio_initstructure.gpio_pin = gpio_pin_0 | gpio_pin_1 | gpio_pin_4 | gpio_pin_5 |
gpio_pin_8 | gpio_pin_9 | gpio_pin_10 | gpio_pin_14 |
gpio_pin_15;
gpio_initstructure.gpio_speed = gpio_speed_50mhz;
gpio_initstructure.gpio_mode = gpio_mode_af_pp;
gpio_init(gpiod, &gpio_initstructure);
gpio_initstructure.gpio_pin = gpio_pin_7 | gpio_pin_8 | gpio_pin_9 | gpio_pin_10 |
gpio_pin_11 | gpio_pin_12 | gpio_pin_13 | gpio_pin_14 |
gpio_pin_15;
gpio_init(gpioe, &gpio_initstructure);
gpio_initstructure.gpio_pin = gpio_pin_0;
gpio_init(gpiof, &gpio_initstructure);
gpio_initstructure.gpio_pin = gpio_pin_12;
gpio_init(gpiog, &gpio_initstructure);
}
2.配置fsmc总线
void lcd_fsmac_config(void)
{
fsmc_norsraminittypedef fsmc_config;
fsmc_norsramtiminginittypedefp;
p.fsmc_accessmode=fsmc_accessmode_a;
p.fsmc_addressholdtime=0;
p.fsmc_addresssetuptime=2;
p.fsmc_busturnaroundduration=0;
p.fsmc_clkdivision=0;
p.fsmc_datalatency=0;
p.fsmc_datasetuptime=2;
fsmc_config.fsmc_asynchronouswait=fsmc_asynchronouswait_disable;
fsmc_config.fsmc_bank=fsmc_bank1_norsram4;
fsmc_config.fsmc_burstaccessmode=fsmc_burstaccessmode_disable;
fsmc_config.fsmc_dataaddressmux=fsmc_dataaddressmux_disable;
fsmc_config.fsmc_extendedmode=fsmc_extendedmode_disable;
fsmc_config.fsmc_memorydatawidth=fsmc_memorydatawidth_16b;
fsmc_config.fsmc_memorytype=fsmc_memorytype_psram;
fsmc_config.fsmc_readwritetimingstruct=&p;
fsmc_config.fsmc_waitsignal=fsmc_waitsignal_disable;
fsmc_config.fsmc_waitsignalactive=fsmc_waitsignalactive_beforewaitstate;
fsmc_config.fsmc_waitsignalpolarity=fsmc_waitsignalpolarity_low;
fsmc_config.fsmc_wrapmode=fsmc_wrapmode_disable;
fsmc_config.fsmc_writeburst=fsmc_writeburst_disable;
fsmc_config.fsmc_writeoperation=fsmc_writeoperation_enable;
fsmc_config.fsmc_writetimingstruct=&p;
fsmc_norsraminit(&fsmc_config);
fsmc_norsramcmd(fsmc_bank1_norsram4, enable);
}
#define lcd_reg_addr (*((unsigned short int *)0x6c000000))
#define lcd_ram_addr (*((unsigned short int *)0x6c000002))
#define lcd_reg (lcd_reg_addr)
#define lcd_ram (lcd_ram_addr)
void lcd_writereg(u16 lcd_reg,u16 lcd_regval)
{
lcd_reg=lcd_reg;
lcd_ram=lcd_regval;
}
u16 lcd_readreg(u8 addr)
{
u16 data;
data=lcd_ram;
return data;
}
void lcd_writeram(u16 color)
{
lcd_ram=color;
}
void lcd_writeram_prepare(void)
{
lcd_reg= r34;
}
void lcd_setcursor(u16 xpos, u16 ypos)
{
lcd_writereg(0x06,ypos》》8);
lcd_writereg(0x07,ypos);
lcd_writereg(0x02,xpos》》8);
lcd_writereg(0x03,xpos);
}
来源;21ic

致广大、尽精微,曙光问道算力服务“神经系统”
未来智能车载技术七大猜想 惊呼“不可能的任务”
AMD第二代Navi核心曝光 采用7nm EUV工艺制造并支持光线追踪技术
磷酸铁锂动力电池有哪些优势?
海思芯片为媒:华为、创维“阳谋”大小屏
基于fsmc总线对彩屏的驱动设计方案
运动用哪种耳机好?运动骨传导耳机推荐
系统设计人员如何解读产品说明书规范
气门自动检测实现重大突破 增加外观检测功能
保持统一数据存储嗡嗡声的三种产品
区块链产业亟需复合型人才
基于操作系统和微控制器ATmega128实现在线钠离子分析仪的设计
SIMULINK仿真
3.5GHz固定无线接入系统技术分析
SiC范围内的GaN和热感知简化了X波段雷达设计
华天集团布局DTOF传感器 思岚科技出席智能机器人标准探索会议
PEL102/PEL103在线电能质量分析仪的特点及适用范围
物联网时代,谁能引爆万亿级美元市场?
如何成长为合格的FPGA开发者
日本制裁华为将必然导致日本企业遭受打击对日本经济十分不利