📄 i2c0_drv.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 + -