256Kb eeprom 的读写接口函数源码

1、读写协议:

(1)读协议

(2)写协议

2、读写代码接口函数

int i2c_ri_eeprom_read_data(int file,int address,int command,unsigned long len,unsigned char *buf)
{
	int nmsgs = 2, nmsgs_sent=0, i;
	struct i2c_rdwr_ioctl_data rdwr;
	unsigned char str[5];


	if(buf == NULL)
    {
        printf(" %s: input parameter ptr is NULL. \n", __FUNCTION__);
        return -1;
    }

	str[1] = command & 0xFF;
	str[0] = (command >> 8) & 0xFF;

    struct i2c_msg msgs[] = {
		{
			.addr = address,
			.flags = 0,
			.len = 2,
			.buf=str,
		},
		{
			.addr = address,
			.flags = I2C_M_RD, //I2C_M_RD 1
			.len = len + 1,
			.buf= buf,
		},
	};
	rdwr.msgs = msgs;
	rdwr.nmsgs = nmsgs;

	nmsgs_sent = ioctl(file, I2C_RDWR, &rdwr);
	if (nmsgs_sent < 0) 
	{
		//fprintf(stderr, "Error: Sending messages failed: %s\n", strerror(errno));
		printf("%s:%dread: nmsgs_sent = %d\n",__func__,__LINE__,nmsgs_sent);
		return -1;
	}
	//printf("Call I2C_BP_eeprom_read_data!\n");
	usleep(1000);
	/*for ( i = 0; i < len; i++)
	{
		printf("buf[%d] = %x\n", i,buf[i]);
	}*/

	return 0;
}

int i2c_ri_eeprom_write_data(int file,int address,int command, int buffer[],unsigned long len)
{
 	char buf[64];
	int nmsgs = 1,nmsgs_sent,i;
	struct i2c_rdwr_ioctl_data rdwr;
	
	buf[1] = command & 0xFF; //偏移地址
	buf[0] = (command >> 8) & 0xFF; //偏移地址

	for ( i = 0; i < len; i++)
	{
		buf[i+2] = buffer[i];  //要写入的数据
		//printf("data[%d] = %x\n",i,buffer[i]);
	} 
	//printf("len = %d\n",len);
	
	struct i2c_msg msgs[] = {
		{
			.addr = address,
			.flags = 0, //I2C_M_WR 0
			.len = len + 2,
			.buf= buf,
		},
	};
	rdwr.msgs = msgs;
	rdwr.nmsgs = nmsgs;

	nmsgs_sent = ioctl(file, I2C_RDWR, &rdwr);
	if (nmsgs_sent < 0) 
	{
		fprintf(stderr, "Error: Sending messages failed: %s\n", strerror(errno));
		return -1;
	}else{
		//printf("  寄存器写入成功!\n");
	}
	
	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微分二阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值