IMX6的LINUX下的IIC驱动(一)
这一篇主要是使用IMX6处理器驱动AT24C16(24LC16B)芯片。第一篇介绍设备驱动层:
1.IMX6的IIC控制器
IMX6有三个IIC控制器。
我在这里使用的是IIC3控制器。
2.IIC3总线上挂接的其他芯片
2.1 RX8025-SA时钟芯片
根据RX8025-SA芯片手册,确定RX8025-SA的IIC地址使用的是0x32。为什么不是0x60???因为最后一位是读写位,在linux中右移一位,就是0x32了,在具体发送时,如果是读就会发送0x65,写的话发送0x64。
2.2 ts2003芯片
在我使用的开发板中IIC3还连接这触摸屏要用到的芯片。
ts2003地址就不重复说啦。。。
2.3 AT24C16芯片
在我使用的开发板中,没有实际的AT24C16芯片,我将IIC3的SDA与SCL两个引脚引出,自己焊接了一块AT24C16的最小单元,并且A2/A1/A0都接地。
AT24C16的地址为0x50。
3.IIC3总线设备树文件修改
在imx6qdl-sabresd.dtsi文件中找到&i2c3。添加上AT24C16信息。如下:
compatible的字符串为:”at24cxx”。之后的match就是匹配的该字符串。
4.IIC3设备驱动
#include <linux/module.h>
#include <linux/init.h>
#include <linux/cdev.h>
#include <linux/fs.h>