Exemplo n.º 1
0
// =============================================================================
// 功能:IIC底层驱动的初始化,完成整个IIC总线的初始化,其主要工作如下:
//       1.初始化总线控制块IIC_CB,回调函数和缓冲区的初始化赋值;
//       2.默认的硬件初始化,如GPIO或IIC寄存器等;
//       3.中断初始化,完成读写中断配置;
//       4.调用IICBusAdd或IICBusAdd_r增加总线结点;
// 参数:para,无具体意义
// 返回:无
// =============================================================================
bool_t IIC1_Init(void)
{
    static u8 s_IIC1Buf[IIC1_BUF_LEN];
    struct IIC_Param IIC1_Config;

    IIC1_Config.BusName             = "IIC1";
    IIC1_Config.IICBuf              = (u8*)&s_IIC1Buf;
    IIC1_Config.IICBufLen           = IIC1_BUF_LEN;
    IIC1_Config.SpecificFlag        = CN_IIC1_BASE;
    IIC1_Config.pGenerateWriteStart = (WriteStartFunc)__IIC_GenerateWriteStart;
    IIC1_Config.pGenerateReadStart  = (ReadStartFunc)__IIC_GenerateReadStart;
    IIC1_Config.pGenerateEnd        = (GenerateEndFunc)__IIC_GenerateEnd;
    IIC1_Config.pBusCtrl            = (IICBusCtrlFunc)__IIC_BusCtrl;
    IIC1_Config.pWriteReadPoll      = (WriteReadPoll)__IIC_WriteReadPoll;

    __IIC_GpioConfig(CN_IIC1);
    __IIC_IntConfig(CN_INT_LINE_I2C1_EV,__IIC_ISR);

    if(NULL == IIC_BusAdd_s(&s_IIC1_CB,&IIC1_Config))
        return 0;
    return 1;
}
Exemplo n.º 2
0
// =============================================================================
// 功能:IIC底层驱动的初始化,完成整个IIC总线的初始化,其主要工作如下:
//       1.初始化总线控制块IIC_CB,回调函数和缓冲区的初始化赋值;
//       2.默认的硬件初始化,如GPIO或IIC寄存器等;
//       3.中断初始化,完成读写中断配置;
//       4.调用IICBusAdd或IICBusAdd_r增加总线结点;
// 参数:para,无具体意义
// 返回:无
// =============================================================================
bool_t IIC0_Init(void)
{
    static u8 s_IIC0Buf[IIC0_BUF_LEN];
    struct tagIIC_Param IIC0_Config;
    IIC0_Config.BusName="IIC0";
    IIC0_Config.SimpleBuf=(u8 *)&s_IIC0Buf;
    IIC0_Config.SimpleBufLen=IIC0_BUF_LEN;
    IIC0_Config.SpecificFlag=CN_IIC0_BADDR;
    IIC0_Config.GenerateWriteStart=__IIC_GenerateWriteStart;
    IIC0_Config.GenerateReadStart  = __IIC_GenerateReadStart;
    IIC0_Config.GenerateEnd        = __IIC_GenerateEnd;
    IIC0_Config.BusCtrl            = __IIC_BusCtrl;

    __IIC_HardDefaultSet(CN_IIC_REGISTER_BADDR0);
    __IIC_IntConfig(cn_int_line_TWII,__IIC_ISR);

    if(NULL==IIC_BusAdd_r(&IIC0_Config,&s_IIC0_CB))
    {
        return 0;
    }
    return 1;

}
Exemplo n.º 3
0
// =============================================================================
// 功能:IIC底层驱动的初始化,完成整个IIC总线的初始化,其主要工作如下:
//       1.初始化总线控制块IIC_CB,回调函数和缓冲区的初始化赋值;
//       2.默认的硬件初始化,如GPIO或IIC寄存器等;
//       3.中断初始化,完成读写中断配置;
//       4.调用IICBusAdd或IICBusAdd_r增加总线结点;
// 参数:para,无具体意义
// 返回:1成功  0失败
// =============================================================================
bool_t IIC2_Init(void)
{
    static u8 s_IIC2Buf[IIC2_BUF_LEN];
    struct IIC_Param IIC2_Config;

    IIC2_Config.BusName             = "IIC2";   //总线名称,如IIC2
    IIC2_Config.IICBuf              = (u8*)&s_IIC2Buf; //总线缓冲区指针
    IIC2_Config.IICBufLen           = IIC2_BUF_LEN; //总线缓冲区大小,字节
    IIC2_Config.SpecificFlag        = CN_IIC2_BASE; //指定标记,如IIC寄存器基址
    IIC2_Config.pGenerateWriteStart = (WriteStartFunc)__IIC_GenerateWriteStart; //写过程启动
    IIC2_Config.pGenerateReadStart  = (ReadStartFunc)__IIC_GenerateReadStart;//读启动过程
    IIC2_Config.pGenerateEnd        = (GenerateEndFunc)__IIC_GenerateEnd;//结束通信
    IIC2_Config.pBusCtrl            = (IICBusCtrlFunc)__IIC_BusCtrl;//控制函数
    IIC2_Config.pWriteReadPoll      = (WriteReadPoll)__IIC_WriteReadPoll;//轮询或中断未开时使用

    if(false==__IIC_GpioConfig(CN_IIC2))
        return 0;
    __IIC_IntConfig(CN_INT_LINE_I2C2_EV,__IIC_ISR);

    if(NULL == IIC_BusAdd_s(&s_IIC2_CB,&IIC2_Config))
        return 0;
    return 1;
}