使用eeprog读写I2C EEPROM(CAT24C256)时出错求助
解决eeprog读写CAT24C256 I2C EEPROM的错误问题
一、编译操作说明
你的编译步骤是正确的,执行make clean和make all后成功生成了eeprog可执行文件,编译日志如下:
astra@astra-OptiPlex-3020:~/niraj_workspace/eeprog-0.7.6(1)/eeprog-0.7.6$ make clean rm -f eeprog 24cXX.o astra@astra-OptiPlex-3020:~/niraj_workspace/eeprog-0.7.6(1)/eeprog-0.7.6$ make all cc -g -I. -Wall -O2 -c -o 24cXX.o 24cXX.c cc eeprog.o 24cXX.o -o eeprog
使用的Makefile内容也无问题:
CFLAGS=-g -I. -Wall -O2 all: eeprog clean: rm -f eeprog 24cXX.o eeprog: eeprog.o 24cXX.o eeprog-static: eeprog.o 24cXX.o $(CC) -static -o $@ $?
二、错误分析与解决方法
1. 第一个命令错误:./eeprog -f -16 -w 0 -t 5 /dev/i2c-0 0x50
存在两个问题:
invalid option -- 't':eeprog 0.7.6版本没有-t参数,直接去掉该参数即可。Both read and write requested:命令格式错误,-w 0仅指定了起始地址但未提供写入数据源,且命令逻辑隐含了读写冲突。
修正后的写命令示例(将文件data.bin写入到EEPROM起始地址0的位置,16位地址模式,强制操作):
./eeprog -f -16 -w data.bin 0 /dev/i2c-0 0x50
2. 第二个命令错误:./eeprog -xf /dev/i2cv-0 0x50 -16 -r 0x10:0x20
核心问题:
No such file or directory:设备路径写错,Linux下I2C设备的标准路径为/dev/i2c-N(N为数字编号),你输入的/dev/i2cv-0是不存在的设备文件。
修正后的读命令示例(读取EEPROM中0x10到0x20地址范围的数据,16位地址模式,强制操作):
./eeprog -xf -16 -r 0x10:0x20 /dev/i2c-0 0x50
额外注意事项
- 确认I2C总线编号:执行
ls /dev/i2c*查看系统存在的I2C设备,确保使用正确的总线路径。 - 权限问题:若执行命令时提示权限不足,可添加
sudo运行,或给目标I2C设备文件添加当前用户的读写权限。 - EEPROM地址匹配:CAT24C256的基础地址为0x50,若硬件上A0/A1/A2引脚有接电平,需对应调整地址(例如A0接高电平时地址为0x51)。
内容的提问来源于stack exchange,提问作者Niraj Kumar
相关产品推荐
相关产品推荐

