?? mem_rdwr.c
字號:
else if(addr<0x10000000)
S2410_SetPin(nGCS1 ,LOW);
else if(addr<0x18000000)
S2410_SetPin(nGCS2 ,LOW);
else if(addr<0x20000000)
S2410_SetPin(nGCS3 ,LOW);
else if(addr<0x28000000)
S2410_SetPin(nGCS4 ,LOW);
else if(addr<0x30000000)
S2410_SetPin(nGCS5 ,LOW);
else if(addr<0x38000000)
S2410_SetPin(nGCS6 ,LOW);
else if(addr<0x40000000)
S2410_SetPin(nGCS7 ,LOW);
}
void S2410_Deassert_nGCS(U32 addr)
{
if(addr<0x8000000)
S2410_SetPin(nGCS0 ,HIGH);
else if(addr<0x10000000)
S2410_SetPin(nGCS1 ,HIGH);
else if(addr<0x18000000)
S2410_SetPin(nGCS2 ,HIGH);
else if(addr<0x20000000)
S2410_SetPin(nGCS3 ,HIGH);
else if(addr<0x28000000)
S2410_SetPin(nGCS4 ,HIGH);
else if(addr<0x30000000)
S2410_SetPin(nGCS5 ,HIGH);
else if(addr<0x38000000)
S2410_SetPin(nGCS6 ,HIGH);
else if(addr<0x40000000)
S2410_SetPin(nGCS7 ,HIGH);
}
U8 MRW_Rd8Q(U32 addr)
{
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
S2410_SetPin(nOE,LOW);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nOE,HIGH);
S2410_Deassert_nGCS(addr);
JTAG_ShiftDRState(outCellValue,inCellValue);
return S2410_GetDataByte();
}
U16 MRW_Rd16Q(U32 addr,int en_nBE,U32 bs)
{
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
S2410_SetPin(nOE,LOW);
if(en_nBE)
{
if(bs&(1<<0))S2410_SetPin(nBE0,LOW);
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
}
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nOE,HIGH);
S2410_Deassert_nGCS(addr);
if(en_nBE)
{
S2410_SetPin(nBE0,HIGH);
S2410_SetPin(nBE1,HIGH);
}
JTAG_ShiftDRState(outCellValue,inCellValue);
return S2410_GetDataHW();
}
U32 MRW_Rd32Q(U32 addr,int en_nBE,U32 bs)
{
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
S2410_SetPin(nOE,LOW);
if(en_nBE)
{
if(bs&(1<<0))S2410_SetPin(nBE0,LOW);
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
if(bs&(1<<2))S2410_SetPin(nBE2,LOW);
if(bs&(1<<3))S2410_SetPin(nBE3,LOW);
}
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nOE,HIGH);
S2410_Deassert_nGCS(addr);
if(en_nBE)
{
S2410_SetPin(nBE0,HIGH);
S2410_SetPin(nBE1,HIGH);
S2410_SetPin(nBE2,HIGH);
S2410_SetPin(nBE3,HIGH);
}
JTAG_ShiftDRState(outCellValue,inCellValue);
return S2410_GetDataWord();
}
void MRW_Wr8Q(U32 addr,U8 data)
{
S2410_SetPin(DATA0_7_CON ,LOW);
S2410_SetPin(DATA8_15_CON ,LOW);
S2410_SetPin(DATA16_23_CON ,LOW);
S2410_SetPin(DATA24_31_CON ,LOW);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
S2410_SetPin(nWE,LOW);
S2410_SetDataByte(data);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nWE,HIGH);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_Deassert_nGCS(addr);
JTAG_ShiftDRStateNoTdo(outCellValue);
}
void MRW_Wr16Q(U32 addr,U16 data,int en_nBE,U32 bs)
{
S2410_SetPin(DATA0_7_CON ,LOW);
S2410_SetPin(DATA8_15_CON ,LOW);
S2410_SetPin(DATA16_23_CON ,LOW);
S2410_SetPin(DATA24_31_CON ,LOW);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
S2410_SetPin(nWE,LOW);
if(bs&(1<<0))S2410_SetPin(nBE0,LOW); //used as nWBE/nBE
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
S2410_SetDataHW(data);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nWE,HIGH);
if(!en_nBE)
{
S2410_SetPin(nBE0,HIGH); //nWBE is deasserted here.
S2410_SetPin(nBE1,HIGH);
}
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(DATA0_7_CON ,HIGH); //nBE is deasserted here.
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_Deassert_nGCS(addr);
if(en_nBE)
{
S2410_SetPin(nBE0,HIGH);
S2410_SetPin(nBE1,HIGH);
}
JTAG_ShiftDRStateNoTdo(outCellValue);
}
void MRW_Wr32Q(U32 addr,U32 data,int en_nBE,U32 bs)
{
S2410_SetPin(DATA0_7_CON ,LOW);
S2410_SetPin(DATA8_15_CON ,LOW);
S2410_SetPin(DATA16_23_CON ,LOW);
S2410_SetPin(DATA24_31_CON ,LOW);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
S2410_SetPin(nWE,LOW);
if(bs&(1<<0))S2410_SetPin(nBE0,LOW); //used as nWBE/nBE
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
if(bs&(1<<2))S2410_SetPin(nBE2,LOW);
if(bs&(1<<3))S2410_SetPin(nBE3,LOW);
S2410_SetDataWord(data);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nWE,HIGH);
if(!en_nBE)
{
S2410_SetPin(nBE0,HIGH); //nWBE is deasserted here.
S2410_SetPin(nBE1,HIGH);
S2410_SetPin(nBE2,HIGH);
S2410_SetPin(nBE3,HIGH);
}
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_Deassert_nGCS(addr);
if(en_nBE)
{
S2410_SetPin(nBE0,HIGH); //nBE is deasserted here.
S2410_SetPin(nBE1,HIGH);
S2410_SetPin(nBE2,HIGH);
S2410_SetPin(nBE3,HIGH);
}
JTAG_ShiftDRStateNoTdo(outCellValue);
}
U8 MRW_Rd8(U32 addr)
{
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOS
S2410_SetPin(nOE,LOW);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nOE,HIGH);
S2410_Deassert_nGCS(addr);
JTAG_ShiftDRState(outCellValue,inCellValue);
return S2410_GetDataByte();
}
U16 MRW_Rd16(U32 addr,int en_nBE,U32 bs)
{
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
if(en_nBE)
{
if(bs&(1<<0))S2410_SetPin(nBE0,LOW);
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
}
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOS
S2410_SetPin(nOE,LOW);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nOE,HIGH);
S2410_Deassert_nGCS(addr);
if(en_nBE)
{
S2410_SetPin(nBE0,HIGH);
S2410_SetPin(nBE1,HIGH);
}
JTAG_ShiftDRState(outCellValue,inCellValue);
return S2410_GetDataHW();
}
U32 MRW_Rd32(U32 addr,int en_nBE,U32 bs)
{
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
if(en_nBE)
{
if(bs&(1<<0))S2410_SetPin(nBE0,LOW);
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
if(bs&(1<<2))S2410_SetPin(nBE2,LOW);
if(bs&(1<<3))S2410_SetPin(nBE3,LOW);
}
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOS
S2410_SetPin(nOE,LOW);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nOE,HIGH);
S2410_Deassert_nGCS(addr);
if(en_nBE)
{
S2410_SetPin(nBE0,HIGH);
S2410_SetPin(nBE1,HIGH);
S2410_SetPin(nBE2,HIGH);
S2410_SetPin(nBE3,HIGH);
}
JTAG_ShiftDRState(outCellValue,inCellValue);
return S2410_GetDataWord();
}
void MRW_Wr8(U32 addr,U8 data)
{
S2410_SetPin(DATA0_7_CON ,LOW);
S2410_SetPin(DATA8_15_CON ,LOW);
S2410_SetPin(DATA16_23_CON ,LOW);
S2410_SetPin(DATA24_31_CON ,LOW);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
S2410_SetDataByte(data);
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOS
S2410_SetPin(nWE,LOW);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nWE,HIGH);
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOH
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_Deassert_nGCS(addr);
JTAG_ShiftDRStateNoTdo(outCellValue);
}
void MRW_Wr16(U32 addr,U16 data,int en_nBE,U32 bs)
{
S2410_SetPin(DATA0_7_CON ,LOW);
S2410_SetPin(DATA8_15_CON ,LOW);
S2410_SetPin(DATA16_23_CON ,LOW);
S2410_SetPin(DATA24_31_CON ,LOW);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
if(en_nBE)
{
if(bs&(1<<0))S2410_SetPin(nBE0,LOW); //used as nBE
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
}
S2410_SetDataHW(data);
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOS
if(!en_nBE)
{
if(bs&(1<<0))S2410_SetPin(nBE0,LOW); //used as nWBE
if(bs&(1<<1))S2410_SetPin(nBE1,LOW); //used as nWBE
}
S2410_SetPin(nWE,LOW);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nWE,HIGH);
if(!en_nBE)
{
S2410_SetPin(nBE0,HIGH); //nWBE is deasserted here.
S2410_SetPin(nBE1,HIGH);
}
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOH
S2410_SetPin(DATA0_7_CON ,HIGH); //nBE is deasserted here.
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_Deassert_nGCS(addr);
if(en_nBE)
{
S2410_SetPin(nBE0,HIGH);
S2410_SetPin(nBE1,HIGH);
}
JTAG_ShiftDRStateNoTdo(outCellValue);
}
void MRW_Wr32(U32 addr,U32 data,int en_nBE,U32 bs)
{
S2410_SetPin(DATA0_7_CON ,LOW);
S2410_SetPin(DATA8_15_CON ,LOW);
S2410_SetPin(DATA16_23_CON ,LOW);
S2410_SetPin(DATA24_31_CON ,LOW);
S2410_SetAddr(addr);
S2410_Assert_nGCS(addr);
if(en_nBE)
{
if(bs&(1<<0))S2410_SetPin(nBE0,LOW); //used as nBE
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
if(bs&(1<<2))S2410_SetPin(nBE2,LOW);
if(bs&(1<<3))S2410_SetPin(nBE3,LOW);
}
S2410_SetDataWord(data);
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOS
if(!en_nBE)
{
if(bs&(1<<0))S2410_SetPin(nBE0,LOW); //used as nWBE
if(bs&(1<<1))S2410_SetPin(nBE1,LOW);
if(bs&(1<<2))S2410_SetPin(nBE2,LOW);
if(bs&(1<<3))S2410_SetPin(nBE3,LOW);
}
S2410_SetPin(nWE,LOW);
JTAG_ShiftDRStateNoTdo(outCellValue);
S2410_SetPin(nWE,HIGH);
if(!en_nBE)
{
S2410_SetPin(nBE0,HIGH); //nWBE is deasserted here.
S2410_SetPin(nBE1,HIGH);
S2410_SetPin(nBE2,HIGH);
S2410_SetPin(nBE3,HIGH);
}
JTAG_ShiftDRStateNoTdo(outCellValue); //tCOH
S2410_SetPin(DATA0_7_CON ,HIGH);
S2410_SetPin(DATA8_15_CON ,HIGH);
S2410_SetPin(DATA16_23_CON ,HIGH);
S2410_SetPin(DATA24_31_CON ,HIGH);
S2410_Deassert_nGCS(addr);
if(en_nBE)
{
S2410_SetPin(nBE0,HIGH); //nBE is deasserted here.
S2410_SetPin(nBE1,HIGH);
S2410_SetPin(nBE2,HIGH);
S2410_SetPin(nBE3,HIGH);
}
JTAG_ShiftDRStateNoTdo(outCellValue);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -