新手上路
- 积分
- 48
- 金钱
- 48
- 注册时间
- 2020-6-18
- 在线时间
- 20 小时
|
我的板子是H743的,手上没有RGB屏只有MCU屏,我想要用SDRAM和MCU屏共用,但是正点原子的例程只有SDRAM和RGB屏共用,我要怎么改例程才对呢
//向SDRAM发送命令
//bankx:0,向BANK5上面的SDRAM发送指令
// 1,向BANK6上面的SDRAM发送指令
//cmd:指令(0,正常模式/1,时钟配置使能/2,预充电所有存储区/3,自动刷新/4,加载模式寄存器/5,自刷新/6,掉电)
//refresh:自刷新次数(cmd=3时有效)
//regval:模式寄存器的定义
//返回值:0,正常;1,失败.
u8 SDRAM_Send_Cmd(u8 bankx,u8 cmd,u8 refresh,u16 regval)
{
u32 retry=0;
u32 tempreg=0;
tempreg|=cmd<<0; //设置指令
tempreg|=1<<(4-bankx); //设置发送指令到bank5还是6
tempreg|=refresh<<5; //设置自刷新次数
tempreg|=regval<<9; //设置模式寄存器的值
FMC_Bank5_6->SDCMR=tempreg; //配置寄存器
while((FMC_Bank5_6->SDSR&(1<<5)))//等待指令发送完成
{
retry++;
if(retry>0X1FFFFF)return 1;
}
return 0;
}
//针对使用RGB屏时的设置
//对于MCU屏,必须设置CAS=3,否则SDRAM驱动异常
//对于RGB屏,可以设置CAS=2,以提高SDRAM访问速度
void SDRAM_RGBLCD_Set(void)
{
u32 mregval=0;
FMC_Bank5_6->SDCR[0]&=~(3<<7); //CAS[1:0]=0,清除原来的CAS设置
FMC_Bank5_6->SDCR[0]|=2<<7; //CAS[1:0]=2,设置CAS=2
mregval|=3<<0; //设置突发长度:8(可以是1/2/4/8)
mregval|=0<<3; //设置突发类型:连续(可以是连续/交错)
mregval|=2<<4; //设置CAS值:2(可以是2/3)
mregval|=0<<7; //设置操作模式:0,标准模式
mregval|=1<<9; //设置突发写模式:1,单点访问
SDRAM_Send_Cmd(0,4,0,mregval); //设置SDRAM的模式寄存器
}
|
|