第五课--MicroWRT I2C 使用
本片教程主要介绍如何添加I2C驱动,在linux系统中,I2C设备的驱动从硬件上可以通过两种方式来实现,一是通过2个GPIO口来模拟I2C总线, 这也是GPIO引脚复用的结果。另外一种是通过I2C控制器来操作I2C设备。这两种驱动的方式也不尽相同。第一种方式的特点是,应用层程序员 要熟悉相关的硬件,在用户层程序中封装I2C消息结构,并完成时序的控制。第二中方式可以充分利用linux i2c子系统的功能,用户不需要知道太多 的硬件信息,通过API来完成对设备的访问。本教程主要介绍第一种方式,来添加I2C驱动。并且分别介绍在kernel和openwrt中配置,添加I2C驱动。 在kernel 中添加I2C 驱动1.本教程中使用MZK-750DHP.dts,打开文件并添加如下代码。 $vim MZK-750DHP.dts palmbus@10000000 { ... ... i2c@900 { compatible = "ralink,mt7620n-i2c", "ralink,rt2880-i2c"; reg = <0x900 0x100>; resets = <&rstctrl 16>; reset-names = "i2c"; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&i2c_pins>; status = "okay"; }; ... ... }; 2.下面代码是将i2c引脚释放为gpio,因此要将里i2c从ralink,group里去掉。 修改之后的代码如下: pinctrl { state_default: pinctrl0 { gpio { ralink,group = "spi refclk", "rgmii1","wled"; ralink,function = "gpio"; }; }; i2c_pins: i2c { i2c { ralink,group = "i2c"; ralink,function = "i2c"; }; }; }; 3.在kernel里配置I2C $make kernel_menuconfig 为了方便i2c设备的检测,需要配置i2c-tools。如下: 4:编译: $make 5:刷新固件 将新固件重新烧写到microWRT上,在microWRT上执行以下操作 $cd /dev $ls 可以看到i2c-0 $ls -all i2c-0 添加i2c 驱动成功。 在openWRT里添加I2C1. 在trunk 目录下运行如下命令 $make menuconfig 编译完成后,会生成i2c-dev.ko,用如下命令加载驱动并查看。 $insmod i2c-dev.ko $cd /dev $ls dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。 它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
|