📄 hostctrl.c
字号:
uSize--;
pData++;
}
uLeft = (UINT8)(uSize & 0x1);
uSize /= 2;
while(uSize>0)
{
uTemp = *(volatile UINT16*)(MULTI16_ADDR_VAL);
MEM_HOLDCLK()
*pData = (UINT8)((uTemp&0xff00)>>8);
pData++;
*pData = (UINT8)uTemp;
pData++;
uSize--;
}
if(uLeft == 1)
{
*pData = (UINT8)((*(volatile UINT16 *)(MULTI16_ADDR_VAL)&0xff00)>>8);
MEM_HOLDCLK()
}
}
else
{
if(uStartAddr&0x1)
{
*pData = (UINT8)((*(volatile UINT16 *)(MULTI16_ADDR_VAL)&0xff00)>>8);
MEM_HOLDCLK()
uSize--;
pData++;
}
uLeft = (UINT8)(uSize & 0x1);
uSize /= 2;
while(uSize>0)
{
uTemp = *(volatile UINT16*)(MULTI16_ADDR_VAL);
MEM_HOLDCLK()
*pData = (UINT8)uTemp;
pData++;
*pData = (UINT8)((uTemp&0xff00)>>8);
pData++;
uSize--;
}
if(uLeft == 1)
{
*pData = (UINT8)((*(volatile UINT16 *)(MULTI16_ADDR_VAL))&0xff);
MEM_HOLDCLK()
}
}
OS_EXIT_CRITICAL()
if((uStartAddr>=0x08000) && (uStartAddr<0x20000))//Lcd 40k buffer or lbuf
{
V558_SetReg(V558_REG_BIU_MUL_CLR_AUTO, 0x0);
}
}
void V558_WriteLcdSram(UINT32 uStartAddr, UINT16* pData, UINT32 uSize)
{
UINT16 uTemp = 0;
V558_SetReg(V558_REG_BIU_MUL_CLR_AUTO, 0x1);
V558_SetReg((UINT16)V558_REG_BIU_SEL_PORT,0x1);
V558_SetReg((UINT16)V558_REG_BIU_INCREMENT,0x1); //Addr auto increate(only effect sram)
V558_SetReg((UINT16)V558_REG_BIU_MEM_LOW_WORD_L,(UINT8)(uStartAddr&0xff));
V558_SetReg((UINT16)V558_REG_BIU_MEM_LOW_WORD_H,(UINT8)((uStartAddr&0xff00)>>8));
V558_SetReg((UINT16)V558_REG_BIU_MEM_HIGH_WORD,(UINT8)((uStartAddr&0x30000)>>16));
OS_ENTER_CRITICAL()
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
while(uSize>0)
{
uTemp = *(pData);
*(volatile UINT16*)(MULTI16_ADDR_VAL) = uTemp;
MEM_HOLDCLK()
pData++;
uSize--;
}
OS_EXIT_CRITICAL()
V558_SetReg(V558_REG_BIU_MUL_CLR_AUTO, 0x0);
}
void V558_WriteSram(UINT32 uStartAddr, UINT8* pData, UINT32 uSize)
{
UINT16 uTemp = 0;
UINT8 uLeft = 0;
if((uStartAddr>=0x08000) && (uStartAddr<0x20000))//Lcd 40k buffer or lbuf
{
V558_SetReg(V558_REG_BIU_MUL_CLR_AUTO, 0x1);
}
V558_SetReg((UINT16)V558_REG_BIU_SEL_PORT,0x1);
V558_SetReg((UINT16)V558_REG_BIU_INCREMENT,0x1); //Addr auto increate(only effect sram)
V558_SetReg((UINT16)V558_REG_BIU_MEM_LOW_WORD_L,(UINT8)(uStartAddr&0xff));
V558_SetReg((UINT16)V558_REG_BIU_MEM_LOW_WORD_H,(UINT8)((uStartAddr&0xff00)>>8));
V558_SetReg((UINT16)V558_REG_BIU_MEM_HIGH_WORD,(UINT8)((uStartAddr&0x30000)>>16));
if((uStartAddr>=0x10000) && (uStartAddr<0x20000))//Lcd 40k buffer
{
OS_ENTER_CRITICAL()
if(uStartAddr&0x1)
{
//reg V558_REG_BIU_INCREMENT = 0,Addr not auto increate(only effect sram)
*(volatile UINT16 *)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_INCREMENT;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = 0x0;
MEM_HOLDCLK()
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
uTemp = *(volatile UINT16 *)(MULTI16_ADDR_VAL);
MEM_HOLDCLK()
//reg V558_REG_BIU_INCREMENT = 0,Addr not auto increate(only effect sram)
*(volatile UINT16 *)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_INCREMENT;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = 0x1;
MEM_HOLDCLK()
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = (uTemp&0xff00)|*pData;
MEM_HOLDCLK()
uSize--;
pData++;
}
uLeft = (UINT8)(uSize & 0x1);
uSize /= 2;
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
while(uSize>0)
{
uTemp = *(pData+1);
uTemp += (UINT16)(*pData)<<8;
pData+=2;
*(volatile UINT16*)(MULTI16_ADDR_VAL) = uTemp;
MEM_HOLDCLK()
uSize--;
}
if(uLeft)
{
//reg V558_REG_BIU_INCREMENT = 0,Addr not auto increate(only effect sram)
*(volatile UINT16 *)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_INCREMENT;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = 0x0;
MEM_HOLDCLK()
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
uTemp = *(volatile UINT16 *)(MULTI16_ADDR_VAL);
MEM_HOLDCLK()
//reg V558_REG_BIU_INCREMENT = 0,Addr not auto increate(only effect sram)
*(volatile UINT16 *)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_INCREMENT;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = 0x1;
MEM_HOLDCLK()
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = (uTemp&0xff)|(*pData<<8);
MEM_HOLDCLK()
}
OS_EXIT_CRITICAL()
}
else
{
OS_ENTER_CRITICAL()
if(uStartAddr&0x1)
{
//reg V558_REG_BIU_INCREMENT = 0,Addr not auto increate(only effect sram)
*(volatile UINT16 *)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_INCREMENT;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = 0x0;
MEM_HOLDCLK()
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
uTemp = *(volatile UINT16 *)(MULTI16_ADDR_VAL);
MEM_HOLDCLK()
//reg V558_REG_BIU_INCREMENT = 0,Addr not auto increate(only effect sram)
*(volatile UINT16 *)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_INCREMENT;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = 0x1;
MEM_HOLDCLK()
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = (uTemp&0xff)|(*pData<<8);
MEM_HOLDCLK()
uSize--;
pData++;
}
uLeft = (UINT8)(uSize & 0x1);
uSize /= 2;
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
while(uSize>0)
{
uTemp = *pData;
pData++;
uTemp += (UINT16)(*pData)<<8;
pData++;
// if(uTemp==0xd9ff)
// uTemp=0xd9ff;//0xffd9;
*(volatile UINT16*)(MULTI16_ADDR_VAL) = uTemp;
MEM_HOLDCLK()
uSize--;
}
if(uLeft == 1)
{
//reg V558_REG_BIU_INCREMENT = 0,Addr not auto increate(only effect sram)
*(volatile UINT16 *)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_INCREMENT;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = 0x0;
MEM_HOLDCLK()
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
uTemp = *(volatile UINT16 *)(MULTI16_ADDR_VAL);
MEM_HOLDCLK()
//reg V558_REG_BIU_INCREMENT = 0,Addr not auto increate(only effect sram)
*(volatile UINT16 *)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_INCREMENT;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = 0x1;
MEM_HOLDCLK()
//Set multi6 emory port addr
*(volatile UINT16*)(MULTI16_ADDR_ADDR) = (UINT16)V558_REG_BIU_MEM_FLG;
MEM_HOLDCLK()
*(volatile UINT16 *)(MULTI16_ADDR_VAL) = (uTemp&0xff00)|*pData;
MEM_HOLDCLK()
}
OS_EXIT_CRITICAL()
}
if((uStartAddr>=0x08000) && (uStartAddr<0x20000))//Lcd 40k buffer or lbuf
{
V558_SetReg(V558_REG_BIU_MUL_CLR_AUTO, 0x0);
}
}
#endif//2005.5.5 mask
#endif
//********************************************************************************
//Private functions
//********************************************************************************
/*
void DrvInit_558BUS(void)
{
#if V558_BUS_TYPE == V558_BUS_MULTI8
DrvSetMultiSel(VMV_MULTI_SEL8);
#endif
#if V558_BUS_TYPE == V558_BUS_MULTI16
DrvSetMultiSel(VMV_MULTI_SEL16);
#endif
//Delay(50);
}*/
void DrvSetMultiSel(VMV_MULTI_SEL sel) //Set register 188c ,(multi8)
{
// GPIO_WriteIO(0,19);
*(volatile UINT8 *)(MULTI8_ADDR_CTRL) = (UINT8)MULTI8_REG_WORDH;
// GPIO_WriteIO(1,19);
*(volatile UINT8 *)(MULTI8_ADDR_DATA) = (UINT8)((((UINT16)V558_REG_BIU_SEL_8_16)&0xff00)>>8);
// GPIO_WriteIO(0,19);
*(volatile UINT8 *)(MULTI8_ADDR_CTRL) = (UINT8)MULTI8_REG_WORDL;
// GPIO_WriteIO(1,19);
*(volatile UINT8 *)(MULTI8_ADDR_DATA) = (UINT8)(((UINT16)V558_REG_BIU_SEL_8_16)&0xff);
// GPIO_WriteIO(0,19);
*(volatile UINT8 *)(MULTI8_ADDR_CTRL) = (UINT8)MULTI8_REG_PORT;
// GPIO_WriteIO(1,19);
*(volatile UINT8 *)(MULTI8_ADDR_DATA) = (UINT8)sel;
}
void USER558_Init558BUS(void)
{
#if V558_BUS_TYPE == V558_BUS_MULTI8
DrvSetMultiSel(VMV_MULTI_SEL8);
#endif
#if V558_BUS_TYPE == V558_BUS_MULTI16
DrvSetMultiSel(VMV_MULTI_SEL16);
#endif
//Delay(50);
}
typedef struct _VERSIONINFO {
UINT8 ChipVersion[5];
UINT8 HAVersion[17];
UINT8 DRVVersion[16];
UINT8 BusType[2];
UINT8 SensorType[3];
UINT8 LCDType[3];
} VERSIONINFO, *PVERSIONINFO;
VERSIONINFO V558RDK_VERSION;
extern UINT8 const HAPI_VERSION[5];
extern UINT8 const DRIV_VERSION[5];
UINT8* USER558_GetRDKVersion(void) //length=44 bytes
{
V558RDK_VERSION.ChipVersion[0]='V';
V558RDK_VERSION.ChipVersion[1]='5';
V558RDK_VERSION.ChipVersion[2]='5';
V558RDK_VERSION.ChipVersion[3]='8';
V558RDK_VERSION.ChipVersion[4]='-';
V558RDK_VERSION.HAVersion[0]='H';
V558RDK_VERSION.HAVersion[1]='A';
V558RDK_VERSION.HAVersion[2]='P';
V558RDK_VERSION.HAVersion[3]='I';
V558RDK_VERSION.HAVersion[4]=0x30+(HAPI_VERSION[0]/10);
V558RDK_VERSION.HAVersion[5]=0x30+(HAPI_VERSION[0]%10);
V558RDK_VERSION.HAVersion[6]='-';
V558RDK_VERSION.HAVersion[7]=0x30+(HAPI_VERSION[1]/10);
V558RDK_VERSION.HAVersion[8]=0x30+(HAPI_VERSION[1]%10);
V558RDK_VERSION.HAVersion[9]='-';
V558RDK_VERSION.HAVersion[10]=0x30+(HAPI_VERSION[2]/10);
V558RDK_VERSION.HAVersion[11]=0x30+(HAPI_VERSION[2]%10);
V558RDK_VERSION.HAVersion[12]='-';
V558RDK_VERSION.HAVersion[13]=0x30+(HAPI_VERSION[3]%10);
V558RDK_VERSION.HAVersion[14]='.';
V558RDK_VERSION.HAVersion[15]=0x30+(HAPI_VERSION[4]%10);
V558RDK_VERSION.HAVersion[16]='-';
V558RDK_VERSION.DRVVersion[0]='D';
V558RDK_VERSION.DRVVersion[1]='R';
V558RDK_VERSION.DRVVersion[2]='I';
V558RDK_VERSION.DRVVersion[3]='V';
V558RDK_VERSION.DRVVersion[4]=0x30+(DRIV_VERSION[0]/10);
V558RDK_VERSION.DRVVersion[5]=0x30+(DRIV_VERSION[0]%10);
V558RDK_VERSION.DRVVersion[6]='-';
V558RDK_VERSION.DRVVersion[7]=0x30+(DRIV_VERSION[1]/10);
V558RDK_VERSION.DRVVersion[8]=0x30+(DRIV_VERSION[1]%10);
V558RDK_VERSION.DRVVersion[9]='-';
V558RDK_VERSION.DRVVersion[10]=0x30+(DRIV_VERSION[2]/10);
V558RDK_VERSION.DRVVersion[11]=0x30+(DRIV_VERSION[2]%10);
V558RDK_VERSION.DRVVersion[12]='-';
V558RDK_VERSION.DRVVersion[13]=0x30+(DRIV_VERSION[3]%10);
V558RDK_VERSION.DRVVersion[14]='.';
V558RDK_VERSION.DRVVersion[15]=0x30+(DRIV_VERSION[4]%10);
V558RDK_VERSION.BusType[0]='-';
V558RDK_VERSION.BusType[1]=V558_BUS_TYPE+0x30;
V558RDK_VERSION.SensorType[0]='-';
V558RDK_VERSION.SensorType[1]=0x30+((UINT8)SENSOR_TYPE/10);
V558RDK_VERSION.SensorType[2]=0x30+((UINT8)SENSOR_TYPE%10);
V558RDK_VERSION.LCDType[0]='-';
V558RDK_VERSION.LCDType[1]=0x30+((UINT8)LCD_TYPE/10);
V558RDK_VERSION.LCDType[2]=0x30+((UINT8)LCD_TYPE%10);
return (UINT8 *)&V558RDK_VERSION;
}
//HAPI VERSION: 04-03-30-1.0
//UINT8 const HAPI_VERSION[5]={04,03,31,1,0};
//DRIVE VERSION: 04-03-30-1.0
//UINT8 const DRIV_VERSION[5]={04,03,31,1,0};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -