在线时间20 小时
UID37684
注册时间2007-10-11
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 268
- 最后登录
- 2022-5-2
|
最近尝试用flexbus驱动RA8875,采用的是8080总线。
用模拟IO口没有任何问题。
时序如下:
inline void LCD_CmdWrite(uint16_t cmd)
{
// RD_OUT =1;
//DATA_BUS_OUT = cmd; //写指令
*(volatile uint16_t*)ILI9320_CMD_BASE = cmd;
//RS_OUT = 1; //RS = 1;WR = 0 选择写指令模式
// CS_OUT = 0; //芯片使能
// WR_OUT = 0; //上升沿完成指令写入
// WR_OUT = 1;
// CS_OUT = 1;
//RS_OUT = 0;
}
注释掉的部分是用IO模拟。
用直接写地址的方式,如果把CS0一直设置为0,也能显示,但是用Flexbus的CS0就不能显示。不知道该如何解决。
另外,Flexbus总线的速度,虽然不能显示,我才用上述方法进行写总线实验。
while(1)
{
LCD_CmdWrite(0x55);
}
经过逻辑测试仪实验,结果发现CS0,WR这两根线,其中CS0比WR下降和上升都高2ns(逻辑分析仪是500M)
其中CS和WR的高电平持续时间为260ns左右低电平持续时间80ns左右。
而我设置的总线为60MHz。设置如下:
FLEXBUS_InitTypeDef FLEXBUS_InitStruct;
FLEXBUS_InitStruct.ADSpaceMask = 0x800;
FLEXBUS_InitStruct.autoAckMode = kFLEXBUS_AutoAckEnable;
FLEXBUS_InitStruct.CSn = kFLEXBUS_CS0;
FLEXBUS_InitStruct.dataAlignMode = kFLEXBUS_DataLeftAligned;
FLEXBUS_InitStruct.dataWidth = kFLEXBUS_PortSize_16Bit;
FLEXBUS_InitStruct.baseAddress = 0x70000000;
FLEXBUS_InitStruct.ByteEnableMode = kFLEXBUS_BE_AssertedWrite;
FLEXBUS_InitStruct.div = 0;
FLEXBUS_Init(&FLEXBUS_InitStruct);
FLEXBUS_PortMuxConfig(kFLEXBUS_CSPMCR_Group3, kFLEXBUS_CSPMCR_GROUP3_BE_23_16);
/* advanced config */
FLEXBUS_AdvancedConfigTypeDef config;
config.kFLEXBUS_brustWriteEnable = true;
config.kFLEXBUS_brustReadEnable = true;
config.kFLEXBUS_EXTS = false;//true;
config.kFLEXBUS_ASET = 0;//2
config.kFLEXBUS_RDAH = 0;
config.kFLEXBUS_WRAH = 0;
config.kFLEXBUS_WS = 0;
FLEXBUS_AdvancedConfig(FLEXBUS_InitStruct.CSn, &config);
这样总线在外接口的频率才2MHz,即使可以使用,也太慢了,请大神们指点一二。
|
|