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

📄 i2cold.c

📁 hreadx实时嵌入式操作系统源代码,ARM移植. threadx是一个很好的多任务实时嵌入式操作系统
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                            Guangzhou ZHIYUAN electronics Co.,LTD.
**                                      
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:               i2cOld.c
** Last modified Date:      2007-12-05
** Last Version:            1.0.0
** Descriptions:            2440 I2C 设备驱动, 类似以前的驱动
**
**--------------------------------------------------------------------------------------------------------
** Created by:              Hanhui
** Created date:            2007-12-05
** Version:                 1.0.0
** Descriptions:            2440 I2C 设备驱动, 类似以前的驱动
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:           
** Version:                 
** Descriptions:            
**
*********************************************************************************************************/
#include "config.h"
#include "i2cCfg.h"
#include "i2cBus.h"
#include "i2cDev.h"
#include "i2cDrv.h"
/*********************************************************************************************************
  全局变量声明
*********************************************************************************************************/
I2C_DEV     __Gi2cdevOldDev;                                            /*  简单操作库的设备对象        */
/*********************************************************************************************************
** Function name:           i2cInit
** Descriptions:            初始化 I2C
** input parameters:        iBps        时钟速度
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/05
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void  i2cInit (int  iBps)
{
    i2cBusInit();
    
    i2cDevOpen(&__Gi2cdevOldDev, 0, 0xa0, iBps);
}
/*********************************************************************************************************
** Function name:           i2cRecv
** Descriptions:            I2C 总线接收
** input parameters:        ucDevAddr       器件地址
**                          pucSubAddrArry  子地址数组
**                          ucSubAddrNum    子地址数量
**                          pucRecvBuffer   接收缓冲区
**                          iNum            期望接收的数目
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/05
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int  i2cRecv (unsigned char   ucDevAddr,
              unsigned char  *pucSubAddrArry,
              unsigned char   ucSubAddrNum,
              unsigned char  *pucRecvBuffer,
              unsigned int    iNum)
{
    I2C_SUB_ADDR        i2csubaddrInfo;
    
    if (!pucRecvBuffer) {
        return  (0);
    }
    
    if (ucSubAddrNum) {                                                 /*  设置子地址                  */
        memcpy(i2csubaddrInfo.ucSubAddrArry, 
               pucSubAddrArry,
               ucSubAddrNum);
        i2csubaddrInfo.ucSubAddrNum = ucSubAddrNum;
        
        i2cDevIoctl(&__Gi2cdevOldDev, I2C_SET_SUB_ADDR, (int)&i2csubaddrInfo);
    }
    
    i2cDevIoctl(&__Gi2cdevOldDev, I2C_SET_ADDR, (int)ucDevAddr);        /*  设置器件地址                */
    
    return  (i2cDevRead(&__Gi2cdevOldDev, (char *)pucRecvBuffer, iNum));
}
/*********************************************************************************************************
** Function name:           i2cSend
** Descriptions:            I2C 总线发送
** input parameters:        ucDevAddr       器件地址
**                          pucSubAddrArry  子地址数组
**                          ucSubAddrNum    子地址数量
**                          pucRecvBuffer   发送缓冲区
**                          iNum            发送数目
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/05
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int  i2cSend (unsigned char   ucDevAddr,
              unsigned char  *pucSubAddrArry,
              unsigned char   ucSubAddrNum,
              unsigned char  *pucSendBuffer,
              unsigned int    iNum)
{
    I2C_SUB_ADDR        i2csubaddrInfo;
    
    if (!pucSendBuffer) {
        return  (0);
    }
    
    if (ucSubAddrNum) {                                                 /*  设置子地址                  */
    
        memcpy(i2csubaddrInfo.ucSubAddrArry, 
               pucSubAddrArry,
               ucSubAddrNum);
        i2csubaddrInfo.ucSubAddrNum = ucSubAddrNum;
        
        i2cDevIoctl(&__Gi2cdevOldDev, I2C_SET_SUB_ADDR, (int)&i2csubaddrInfo);
    }
    
    i2cDevIoctl(&__Gi2cdevOldDev, I2C_SET_ADDR, (int)ucDevAddr);        /*  设置器件地址                */
    
    return  (i2cDevWrite(&__Gi2cdevOldDev, (char *)pucSendBuffer, iNum));
}
/*********************************************************************************************************
** Function name:           i2cSetBps
** Descriptions:            设置 I2C 总线速度
** input parameters:        iBps        时钟速度
** output parameters:       NONE
** Returned value:          NONE
** Created by:              Hanhui
** Created Date:            2007/12/05
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void  i2cSetBps (int  iBps)
{
    i2cDevIoctl(&__Gi2cdevOldDev, I2C_SET_BPS, iBps);
}
/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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