详情请进入 湖南阳光电子学校 已关注:人 咨询电话:0731-85579057 微信号:yp941688, yp94168
打开杂项设备,该选项打开后,EEPROM也就打开了。
2. 修改代码
修改文件: linux/arch/arm/mach-s3c2440/mach-smdk2440.c
增加如下代码片段:
#include
staticstructat24_platform_dataat24c02={
.byte_len=SZ_2K/8,
.page_size=8,
.flags=0,
};
staticstructi2c_board_info__initdatasmdk_i2c_devices[]={
/*moredevicescanbeaddedusingexpansionconnectors*/
{
I2C_BOARD_INFO("24c02",0x50),
.platform_data=&at24c02,
},
};
在smdk2440_machine_init函数中增加如下:
i2c_register_board_info(0,smdk_i2c_devices,ARRAY_SIZE(smdk_i2c_devices));
注意:上面许多参数是根据at24c02的参数来设置的,at24c02使用8位地址,内存大小2K比特位,也就是256K字节,页大小为8字节。
后,需要注意,手册中at24c02的设备地址是0b 1 0 1 0 0 0 0 R/W, 其 低位是读写标志位,
但是在Linux中,I2C设备地址的 高位为0,而低七位地址就是手册中去掉R/W的剩余7位。因此,地址为0b 01010000(0x50)
3. 测试代码
系统启动后,如果一切正常。会在/sys文件系统下展示出该设备,如下:
[root@yj4230-0050]#pwd
/sys/devices/platform/s3c2440-i2c/i2c-0/0-0050
[root@yj4230-0050]#ls
bus eeprom namesubsystem
driver modaliaspower uevent
[root@yj4230-0050]#cat name
24c02
其中eeprom即为驱动导出的bin属性,通过读写eeprom即可访问设备,如下:
[root@yj4230-0050]#cat eeprom
i2ci2c-0: master_xfer[0] W, addr=0x50, len=1
i2ci2c-0: master_xfer[1] R, addr=0x50, len=128
i2ci2c-0: master_xfer[0] W, addr=0x50, len=1
i2ci2c-0: master_xfer[1] R, addr=0x50, len=128
!"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~
.(编辑:南岳电工培训学校)