📄 drvi2c.c
字号:
I2C1->I2CADDR3.GC = GC_Flag;
break;
default:
return E_DRVI2C_ERR_ARGUMENT;
}
}
else
{
switch (slaveNo)
{
case 0:
I2C0->I2CADDR0.I2CADDR = slave_addr;
I2C0->I2CADDR0.GC = GC_Flag;
break;
case 1:
I2C0->I2CADDR1.I2CADDR = slave_addr;
I2C0->I2CADDR1.GC = GC_Flag;
break;
case 2:
I2C0->I2CADDR2.I2CADDR = slave_addr;
I2C0->I2CADDR2.GC = GC_Flag;
break;
case 3:
I2C0->I2CADDR3.I2CADDR = slave_addr;
I2C0->I2CADDR3.GC = GC_Flag;
break;
default:
return E_DRVI2C_ERR_ARGUMENT;
}
}
return 0;
}
/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2C_SetAddressMask */
/* */
/* Parameters: */
/* port - [in] I2C_PORT0 / I2C_PORT1 */
/* slaveNo - [in] There are 4 slave addrss. The slaveNo is 0 ~ 3. */
/* slaveAddrMask - [in] 7-bit physical slave address mask */
/* */
/* Returns: */
/* 0 : Success */
/* <0 : Failed */
/* Description: */
/* Set 4 7-bit slave address mask. The corresponding address bit is "Don't Care". */
/*---------------------------------------------------------------------------------------------------------*/
int32_t DrvI2C_SetAddressMask(E_I2C_PORT port, uint8_t slaveNo, uint8_t slaveAddrMask)
{
slaveAddrMask <<= 1;
if (port)
{
switch (slaveNo)
{
case 0:
I2C1->I2CADM0.I2CADM = slaveAddrMask;
break;
case 1:
I2C1->I2CADM1.I2CADM = slaveAddrMask;
break;
case 2:
I2C1->I2CADM2.I2CADM = slaveAddrMask;
break;
case 3:
I2C1->I2CADM3.I2CADM = slaveAddrMask;
break;
default:
return E_DRVI2C_ERR_ARGUMENT;
}
}
else
{
switch (slaveNo)
{
case 0:
I2C0->I2CADM0.I2CADM = slaveAddrMask;
break;
case 1:
I2C0->I2CADM1.I2CADM = slaveAddrMask;
break;
case 2:
I2C0->I2CADM2.I2CADM = slaveAddrMask;
break;
case 3:
I2C0->I2CADM3.I2CADM = slaveAddrMask;
break;
default:
return E_DRVI2C_ERR_ARGUMENT;
}
}
return 0;
}
/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2C_InstallCallback */
/* */
/* Parameters: */
/* port - [in] I2C_PORT0 / I2C_PORT1 */
/* Type - [in] I2CFUNC / ARBITLOSS / BUSERROR / TIMEOUT */
/* callbackfn - [in] Call back function */
/* */
/* Returns: */
/* 0 Success */
/* <0 Failed */
/* */
/* Description: */
/* Install I2C call back function for I2C normal function, Arbitration loss, Bus error */
/* and Counter timeout . */
/*---------------------------------------------------------------------------------------------------------*/
int32_t DrvI2C_InstallCallback(E_I2C_PORT port, E_I2C_CALLBACK_TYPE Type, I2C_CALLBACK callbackfn)
{
if (port == I2C_PORT0)
{
switch(Type)
{
case I2CFUNC:
{
I2CHandler0.I2CCallBackFn = callbackfn;
break;
}
case ARBITLOSS:
{
I2CHandler0.ArbitLossCallBackFn = callbackfn;
break;
}
case BUSERROR:
{
I2CHandler0.BusErrCallBackFn = callbackfn;
break;
}
case TIMEOUT:
{
I2CHandler0.TimeoutCallBackFn = callbackfn;
break;
}
default:
return E_DRVI2C_ERR_ARGUMENT;
}
}
else if (port == I2C_PORT1)
{
switch(Type)
{
case I2CFUNC:
{
I2CHandler1.I2CCallBackFn = callbackfn;
break;
}
case ARBITLOSS:
{
I2CHandler1.ArbitLossCallBackFn = callbackfn;
break;
}
case BUSERROR:
{
I2CHandler1.BusErrCallBackFn = callbackfn;
break;
}
case TIMEOUT:
{
I2CHandler1.TimeoutCallBackFn = callbackfn;
break;
}
default:
return E_DRVI2C_ERR_ARGUMENT;
}
}
return 0;
}
/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2C_UninstallCallBack */
/* */
/* Parameters: */
/* port - [in] I2C_PORT0 / I2C_PORT1 */
/* Type - [in] I2CFUNC / ARBITLOSS / BUSERROR / TIMEOUT */
/* */
/* Returns: */
/* 0 Success */
/* <0 Failed */
/* */
/* Description: */
/* Uninstall I2C call back function for I2C normal function, Arbitration loss, Bus error */
/* and Counter timeout . */
/*---------------------------------------------------------------------------------------------------------*/
int32_t DrvI2C_UninstallCallBack(E_I2C_PORT port, E_I2C_CALLBACK_TYPE Type)
{
if (port == I2C_PORT0)
{
switch(Type)
{
case I2CFUNC:
{
I2CHandler0.I2CCallBackFn = 0;
break;
}
case ARBITLOSS:
{
I2CHandler0.ArbitLossCallBackFn = 0;
break;
}
case BUSERROR:
{
I2CHandler0.BusErrCallBackFn = 0;
break;
}
case TIMEOUT:
{
I2CHandler0.TimeoutCallBackFn = 0;
break;
}
default:
return E_DRVI2C_ERR_ARGUMENT;
}
}
else if (port == I2C_PORT1)
{
switch(Type)
{
case I2CFUNC:
{
I2CHandler1.I2CCallBackFn = 0;
break;
}
case ARBITLOSS:
{
I2CHandler1.ArbitLossCallBackFn = 0;
break;
}
case BUSERROR:
{
I2CHandler1.BusErrCallBackFn = 0;
break;
}
case TIMEOUT:
{
I2CHandler1.TimeoutCallBackFn = 0;
break;
}
default:
return E_DRVI2C_ERR_ARGUMENT;
}
}
return 0;
}
/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvI2C_GetVersion */
/* */
/* Parameters: */
/* None */
/* */
/* Returns: */
/* The DrvI2C version number */
/* */
/* Description: */
/* This function is used to get the DrvI2C version number */
/*---------------------------------------------------------------------------------------------------------*/
uint32_t DrvI2C_GetVersion(void)
{
return DRVI2C_VERSION_NUM;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -