当前位置:首页 > 单片机 > 单片机
[导读]开发板:TQ2440内核:Linux 2.6.32PC OS:Ubuntu 11.041.配置内核打开I2C功能:打开杂项设备,该选项打开后,EEPROM也就打开了。2. 修改代码修改文件: linux/arch/arm/mach-s3c2440/mach-smdk2440.c增加如下代码片段

开发板:TQ2440

内核:Linux 2.6.32

PC OS:Ubuntu 11.04


1.配置内核

打开I2C功能:



打开杂项设备,该选项打开后,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{|}~

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭