资源简介
I2C-tools-3.0.0 测试工具。可以检测I2C,显示I2C设备地址,以及对I2C进行通讯测试等
代码片段和文件信息
/***************************************************************************
copyright : (C) by 2002-2003 Stefano Barbato
email : stefano@codesink.org
$Id: 24cXX.c 4230 2006-11-10 09:22:12Z khali $
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License or *
* (at your option) any later version. *
* *
***************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “24cXX.h“
static int i2c_write_1b(struct eeprom *e __u8 buf)
{
int r;
// we must simulate a plain I2C byte write with SMBus functions
r = i2c_smbus_write_byte(e->fd buf);
if(r < 0)
fprintf(stderr “Error i2c_write_1b: %s\n“ strerror(errno));
usleep(10);
return r;
}
static int i2c_write_2b(struct eeprom *e __u8 buf[2])
{
int r;
// we must simulate a plain I2C byte write with SMBus functions
r = i2c_smbus_write_byte_data(e->fd buf[0] buf[1]);
if(r < 0)
fprintf(stderr “Error i2c_write_2b: %s\n“ strerror(errno));
usleep(10);
return r;
}
static int i2c_write_3b(struct eeprom *e __u8 buf[3])
{
int r;
// we must simulate a plain I2C byte write with SMBus functions
// the __u16 data field will be byte swapped by the SMBus protocol
r = i2c_smbus_write_word_data(e->fd buf[0] buf[2] << 8 | buf[1]);
if(r < 0)
fprintf(stderr “Error i2c_write_3b: %s\n“ strerror(errno));
usleep(10);
return r;
}
#define CHECK_I2C_FUNC( var label ) \
do { if(0 == (var & label)) { \
fprintf(stderr “\nError: “ \
#label “ function is required. Program halted.\n\n“); \
exit(1); } \
} while(0);
int eeprom_open(char *dev_fqn int addr int type struct eeprom* e)
{
int fd r;
unsigned long funcs;
e->fd = e->addr = 0;
e->dev = 0;
fd = open(dev_fqn O_RDWR);
if(fd <= 0)
return -1;
// get funcs list
if((r = ioctl(fd I2C_FUNCS &funcs) < 0))
return r;
// check for req funcs
CHECK_I2C_FUNC( funcs I2C_FUNC_SMBUS_READ_BYTE );
CHECK_I2C_FUNC( funcs I2C_FUNC_SMBUS_WRITE_BYTE );
CHECK_I2C_FUNC( funcs I2C_FUNC_SMBUS_READ_BYTE_DATA );
CHECK_I2C_FUNC( funcs I2C_FUNC_SMBUS_WRITE_BYTE_DATA );
CHECK_I2C_FUNC( funcs I2C_FUNC_SMBUS_READ_WORD_DATA );
CHECK_I2C_FUNC( funcs I2C_FUNC_SMBUS_WRITE_WORD_DATA );
// set working device
if( ( r = ioctl(fd I2C_SLAVE addr)) < 0)
return r;
e->fd =
- 上一篇:滨州电网数据
- 下一篇:DHT22(AM2302)STM32f103程序
相关资源
- STM32F103RCT6使用I2C通讯PCF8591数模转换模
- 51单片机KEIL C I2C通信程序。
- 1848-I2C测试程序
- I2C 总线数字温度传感器 LM92 及其应用
- 软件模拟IIC主从机
- DSP F2812 I2C协议介绍
- SHT20温湿度传感器程序gpio模拟I2C+中文
- 常用低速接口verilog代码Uart/SPI/I2C等
- 24C02存储显示计时时间
- LiquidCrystal_I2C驱动Arduino IDE 1.0以上版本
- i2c 的 verilog 实现 , 可用
- 2440 linux2.6下I2C驱动,编译通过
- 基于fpga的spi和i2c接口电路转化电路
- I2C Slave Verilog
- DSP 2808 I2C 例程
- 模拟I2C程序 slave 接收
- WM8731寄存器I2C配置模块
- i2c_master verilog代码+testbench
- 模拟IO,iic从机模式移植性强,串口中
- 基于stm32的i2c通信
- STM32-I2C程序例程
- AMBA_APB_I2C
- 基于STM32F103的24m02芯片驱动代码
- 模拟I2C 从机
- mpu6050驱动基于mega16
- IO口模拟I2C从机
- 通过FPGA实现I2C总线的控制的Verilog代码
- 基于STM32F030的PCM5242 miniDSP驱动配置
- MSP430F5529 I2C样例程序
- 51控制I2C高频头
评论
共有 条评论