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

📄 i2c0_drv.c

📁 意法半导体ARM7 STR710+DM9000A的TCP/IP实现
💻 C
字号:
//----------------------------------------------------------------------------
// Filename : I2C0_drv.c
//----------------------------------------------------------------------------
//
// Copyright (c) 2008,东莞太平计算机科技有限公司
// All rights reserved.
// www.pacific-gold.com.cn
//
// 历史版本:
//
//    版本:  V1.0
//    作者:  罗先能
//    日期:  2007-12-21
//    描述:  建立第一版本
//
//                                
// 描述:
//    1. 设备FM24CL04的驱动程序
//
//
//----------------------------------------------------------------------------


//----------------------------------------------------------------------------
// Includes
//----------------------------------------------------------------------------
// system headers
#include "71x_lib.h"
#include <ucos_ii.h>
// internal headers
#include "i2c_ee.h"
#include "I2C0_drv.h"
// external headers


//----------------------------------------------------------------------------
// Local Constant Definitions
//----------------------------------------------------------------------------


//----------------------------------------------------------------------------
// local Variables Definitions
//----------------------------------------------------------------------------
private char send_buffer[4];    /* buffer of send datas     */
private char rec_buffer[4];     /* buffer of receive datas  */

//----------------------------------------------------------------------------
// Global Variables Definitions
//----------------------------------------------------------------------------
public TAG i2c_tag;


//----------------------------------------------------------------------------
// Local Function Definitions
//----------------------------------------------------------------------------


//----------------------------------------------------------------------------
// Global Function Definitions
//----------------------------------------------------------------------------
/**************************************************************
* Function: i2c0_init(...)
* Description:
*           initialize the device of  I2C0
* Input:    no
*
* Return:
*
**************************************************************/
public bool i2c0_init(void)
{
        I2C_EEPROM_Config(I2C0);
        return TRUE;
}

/**************************************************************
* Function: i2c0_open(...)
* Description:
*           open device of  I2C0
* Input:    no
*
* Return:
*
**************************************************************/
public bool i2c0_open(void)
{
        return TRUE;
}


/**************************************************************
* Function: i2c0_close(...)
* Description:
*           close device of  I2C0
* Input:    no
*
* Return:
*
**************************************************************/
public bool i2c0_close(void)
{
        return TRUE;
}


/**************************************************************
* Function: i2c0_read(...)
* Description:
*           read 4bytes data from i2c0
* Input:    no
*
* Return:
*
**************************************************************/
public u32 i2c0_read(TAG_DEF addr)
{
        u32 c;

        EEPROM_Receive(I2C0, rec_buffer, addr, 4);
        c = (u32)rec_buffer[0]<<0  | (u32)rec_buffer[1]<<8  |
            (u32)rec_buffer[2]<<16 | (u32)rec_buffer[3]<<24;
         
        return c;
}


/**************************************************************
* Function: i2c0_write(...)
* Description:
*           write 4bytes data to i2c0
* Input:    no
*
* Return:
*
**************************************************************/
public bool i2c0_write(TAG_DEF addr, u32 data )
{
        send_buffer[0]= (u8)((data>>0) & 0xff);
        send_buffer[1]= (u8)((data>>8) & 0xff);
        send_buffer[2]= (u8)((data>>16) & 0xff);
        send_buffer[3]= (u8)((data>>24) & 0xff);
        EEPROM_Send(I2C0, send_buffer, 4, addr);

        return TRUE;
}


/**************************************************************
* Function: i2c0_test(...)
* Description:
*           only test the divice on i2c0
* Input:    no
*
* Return:
*
**************************************************************/
public bool i2c0_test(void)
{
        #define T1 0xaa55aa55
        #define T2 0x55aa55aa
        
                /* test T1  */
                send_buffer[0]= (T1>>0)  & 0xff;
                send_buffer[1]= (T1>>8)  & 0xff;
                send_buffer[2]= (T1>>16) & 0xff;
                send_buffer[3]= (T1>>24) & 0xff;
                EEPROM_Send(I2C0, send_buffer, 4, I2C0_TEST);
                EEPROM_Receive(I2C0, rec_buffer, I2C0_TEST, 4);
                if( rec_buffer[0] != send_buffer[0] )  return FALSE;
                if( rec_buffer[1] != send_buffer[1] )  return FALSE;
                if( rec_buffer[2] != send_buffer[2] )  return FALSE;
                if( rec_buffer[3] != send_buffer[3] )  return FALSE;

                /* test T2  */
                send_buffer[0]= (T2>>0)  & 0xff;
                send_buffer[1]= (T2>>8)  & 0xff;
                send_buffer[2]= (T2>>16) & 0xff;
                send_buffer[3]= (T2>>24) & 0xff;
                EEPROM_Send(I2C0, send_buffer, 4, I2C0_TEST);
                EEPROM_Receive(I2C0, rec_buffer, I2C0_TEST, 4);
                if( rec_buffer[0] != send_buffer[0] )  return FALSE;
                if( rec_buffer[1] != send_buffer[1] )  return FALSE;
                if( rec_buffer[2] != send_buffer[2] )  return FALSE;
                if( rec_buffer[3] != send_buffer[3] )  return FALSE;

                        

        return TRUE;

}





⌨️ 快捷键说明

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