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

📄 drvi2c.c

📁 cortex-m0 LCD1602程序
💻 C
📖 第 1 页 / 共 3 页
字号:
                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 + -