⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csl_i2c.h

📁 DSP图象处理的基础入门程序,对于复杂的DSP操作系统.能够让你得到一些启示
💻 H
📖 第 1 页 / 共 2 页
字号:
IDEF Uint32 I2C_rrdy(I2C_Handle hI2c){ return	I2C_FGETH(hI2c,I2CSTR,ICRRDY);}/*----------------------------------------------------------------------------*/IDEF Uint32 I2C_xempty(I2C_Handle hI2c){ return I2C_FGETH(hI2c,I2CSTR,XSMT);}/*----------------------------------------------------------------------------*/IDEF Uint32 I2C_xrdy(I2C_Handle hI2c){ return	I2C_FGETH(hI2c,I2CSTR,ICXRDY);}/*----------------------------------------------------------------------------*/IDEF Uint32 I2C_bb(I2C_Handle hI2c){ return	I2C_FGETH(hI2c,I2CSTR,BB);}/*----------------------------------------------------------------------------*/IDEF Uint8 I2C_readByte(I2C_Handle hI2c) {  return (*(volatile Uint8 *)(hI2c->i2cdrrAddr));}/*----------------------------------------------------------------------------*/IDEF void I2C_writeByte(I2C_Handle hI2c, Uint8 val) {  (*(volatile Uint8 *)(hI2c->i2cdxrAddr)) = val;}/*----------------------------------------------------------------------------*/IDEF void I2C_sendStop(I2C_Handle hI2c){ 	I2C_FSETSH(hI2c,I2CMDR,STP,STOP);}/*----------------------------------------------------------------------------*/IDEF void I2C_start(I2C_Handle hI2c){	I2C_FSETSH(hI2c,I2CMDR,STT,START);}/*----------------------------------------------------------------------------*/IDEF void I2C_outOfReset(I2C_Handle hI2c){	I2C_FSETSH(hI2c,I2CMDR,IRS,NRST);}/*----------------------------------------------------------------------------*/IDEF Uint32 I2C_intClear(I2C_Handle hI2c){    return I2C_RGETH(hI2c,I2CISRC);}/*----------------------------------------------------------------------------*/IDEF void I2C_intClearAll(I2C_Handle hI2c){   Uint32 x=I2C_RGETH(hI2c,I2CISRC);    while(x != 0) { x=I2C_RGETH(hI2c,I2CISRC); }}/*----------------------------------------------------------------------------*/IDEF void I2C_intEvtEnable(I2C_Handle hI2c,Uint32 maskFlag){    Uint32 newMask;	newMask = I2C_RGETH(hI2c,I2CIER) | maskFlag;	I2C_RSETH(hI2c,I2CIER,newMask);	IRQ_enable(hI2c->eventId);}/*----------------------------------------------------------------------------*/IDEF void I2C_intEvtDisable(I2C_Handle hI2c,Uint32 unmaskFlag){	Uint32 newMask;	newMask = I2C_RGETH(hI2c,I2CIER) & unmaskFlag;	I2C_RSETH(hI2c,I2CIER,newMask);    #if (CHIP_6410 | CHIP_6413| CHIP_6418 )	if(!(I2C_RGETH(hI2c,I2CIER) & 0x0000007F))    #else	if(!(I2C_RGETH(hI2c,I2CIER) & 0x0000001F))    #endif		IRQ_disable(hI2c->eventId);}/*----------------------------------------------------------------------------*/IDEF void I2C_config(I2C_Handle hI2c, I2C_Config *config) {  Uint32 gie;  volatile Uint32 *base = (volatile Uint32 *)(hI2c->baseAddr);  register int x0,x1,x2,x3,x4,x5,x6,x7;#if (CHIP_6413 | CHIP_6418 | CHIP_6410)  register int x8,x9,x10;#endif  gie = IRQ_globalDisable();  /* the compiler generates more efficient code if the loads */  /* and stores are grouped together rather than intermixed  */  x0 = config->i2coar;  x1 = config->i2cier;  x2 = config->i2cclkl;  x3 = config->i2cclkh;  x4 = config->i2ccnt;  x5 = config->i2csar;  x6 = config->i2cpsc;  x7 = config->i2cmdr;#if (CHIP_6413 | CHIP_6418 | CHIP_6410)  x8 = config->i2cemdr;  x9 = config->i2cpfunc;  x10 = config->i2cpdir;#endif    base[_I2C_I2COAR_OFFSET]   = x0;  base[_I2C_I2CIER_OFFSET]   = x1;  base[_I2C_I2CCLKL_OFFSET]  = x2;  base[_I2C_I2CCLKH_OFFSET]  = x3;  base[_I2C_I2CCNT_OFFSET]   = x4;  base[_I2C_I2CSAR_OFFSET]   = x5;  base[_I2C_I2CPSC_OFFSET]   = x6;  base[_I2C_I2CMDR_OFFSET]   = x7;#if (CHIP_6413 | CHIP_6418 | CHIP_6410)  base[_I2C_I2CEMDR_OFFSET]  = x8;  base[_I2C_I2CPFUNC_OFFSET] = x9;  base[_I2C_I2CPDIR_OFFSET]  = x10;#endif  IRQ_globalRestore(gie);}/*----------------------------------------------------------------------------*/#if (CHIP_6413 | CHIP_6418 | CHIP_6410)IDEF void I2C_configArgs(I2C_Handle hI2c,Uint32 i2coar,Uint32 i2cier,Uint32 i2cclkl,                         Uint32 i2cclkh,Uint32 i2ccnt,Uint32 i2csar,Uint32 i2cmdr,                         Uint32 i2cpsc,Uint32 i2cemdr,Uint32 i2cpfunc,Uint32 i2cpdir){  Uint32 gie;  volatile Uint32 *base = (volatile Uint32 *)(hI2c->baseAddr);  gie = IRQ_globalDisable();  base[_I2C_I2COAR_OFFSET]   = i2coar;  base[_I2C_I2CIER_OFFSET]   = i2cier;  base[_I2C_I2CCLKL_OFFSET]  = i2cclkl;  base[_I2C_I2CCLKH_OFFSET]  = i2cclkh;  base[_I2C_I2CCNT_OFFSET]   = i2ccnt;  base[_I2C_I2CSAR_OFFSET]   = i2csar;  base[_I2C_I2CPSC_OFFSET]   = i2cpsc;  base[_I2C_I2CMDR_OFFSET]   = i2cmdr;  base[_I2C_I2CEMDR_OFFSET]  = i2cemdr;  base[_I2C_I2CPFUNC_OFFSET] = i2cpfunc;  base[_I2C_I2CPDIR_OFFSET]  = i2cpdir;  IRQ_globalRestore(gie);}#elseIDEF void I2C_configArgs(I2C_Handle hI2c,Uint32 i2coar,Uint32 i2cier,Uint32 i2cclkl,Uint32 i2cclkh,Uint32 i2ccnt,Uint32 i2csar,Uint32 i2cmdr,Uint32 i2cpsc){  Uint32 gie;  volatile Uint32 *base = (volatile Uint32 *)(hI2c->baseAddr);  gie = IRQ_globalDisable();  base[_I2C_I2COAR_OFFSET]  = i2coar;  base[_I2C_I2CIER_OFFSET]  = i2cier;  base[_I2C_I2CCLKL_OFFSET] = i2cclkl;  base[_I2C_I2CCLKH_OFFSET] = i2cclkh;  base[_I2C_I2CCNT_OFFSET]  = i2ccnt;  base[_I2C_I2CSAR_OFFSET]  = i2csar;  base[_I2C_I2CPSC_OFFSET]  = i2cpsc;  base[_I2C_I2CMDR_OFFSET]  = i2cmdr;  IRQ_globalRestore(gie);}#endif/*----------------------------------------------------------------------------*/#if (CHIP_6413 | CHIP_6418 | CHIP_6410)IDEF void I2C_getConfig(I2C_Handle hI2c, I2C_Config *config) {  Uint32 gie;  volatile Uint32 *base = (volatile Uint32 *)(hI2c->baseAddr);  register int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10;  gie = IRQ_globalDisable();  /* the compiler generates more efficient code if the loads */  /* and stores are grouped together rather than intermixed  */  x0 = base[_I2C_I2COAR_OFFSET];  x1 = base[_I2C_I2CIER_OFFSET];  x2 = base[_I2C_I2CCLKL_OFFSET];  x3 = base[_I2C_I2CCLKH_OFFSET];  x4 = base[_I2C_I2CCNT_OFFSET];  x5 = base[_I2C_I2CSAR_OFFSET];  x6 = base[_I2C_I2CMDR_OFFSET];  x7 = base[_I2C_I2CPSC_OFFSET];  x8 = base[_I2C_I2CEMDR_OFFSET];  x9 = base[_I2C_I2CPFUNC_OFFSET];  x10 = base[_I2C_I2CPDIR_OFFSET];  config->i2coar   = x0;  config->i2cier   = x1;  config->i2cclkl  = x2;  config->i2cclkh  = x3;  config->i2ccnt   = x4;  config->i2csar   = x5;  config->i2cmdr   = x6;  config->i2cpsc   = x7;  config->i2cemdr  = x8;  config->i2cpfunc = x9;  config->i2cpdir  = x10;  IRQ_globalRestore(gie);}#elseIDEF void I2C_getConfig(I2C_Handle hI2c, I2C_Config *config) {  Uint32 gie;  volatile Uint32 *base = (volatile Uint32 *)(hI2c->baseAddr);  register int x0,x1,x2,x3,x4,x5,x6,x7;  gie = IRQ_globalDisable();  /* the compiler generates more efficient code if the loads */  /* and stores are grouped together rather than intermixed  */  x0 = base[_I2C_I2COAR_OFFSET];  x1 = base[_I2C_I2CIER_OFFSET];  x2 = base[_I2C_I2CCLKL_OFFSET];  x3 = base[_I2C_I2CCLKH_OFFSET];  x4 = base[_I2C_I2CCNT_OFFSET];  x5 = base[_I2C_I2CSAR_OFFSET];  x6 = base[_I2C_I2CMDR_OFFSET];  x7 = base[_I2C_I2CPSC_OFFSET];  config->i2coar  = x0;  config->i2cier  = x1;  config->i2cclkl = x2;  config->i2cclkh = x3;  config->i2ccnt  = x4;  config->i2csar  = x5;  config->i2cmdr  = x6;  config->i2cpsc  = x7;  IRQ_globalRestore(gie);}#endif/*----------------------------------------------------------------------------*/#endif /* USEDEFS */#endif /* I2C_SUPPORT */#endif /* _CSL_I2C_H_ *//******************************************************************************\* End of csl_i2c.h\******************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -