Linkit Smart MT7688 I2C PCF8563使用教程

本文是参照了 stone8761 的一篇文章
我想在Linkit Smart MT7688上使用I2C访问PCF8563,使用的内核版本OpenWrt,chaos_calmer
15.05固件,该固件可以直接在/dev下看到i2c-0该文件节点,所以可以忽略内核修改部分。
直接修改dts文件即可,dts文件位置/home/wei/openwrt/target/linux/ramips/dts/LINKIT7688.dts
/home/wei/应换成自己的目录。
找到dts文件的palmbus@10000000,里面有

i2c@900 {
	status = "okay";
	};

修改为

i2c@900 {
	status = "okay";
	rtc@51 {
		compatible = "nxp,pcf8563";
		 reg = <0x51>;
	};
};

PCF8563文档中指出写地址为0xA2,读地址0xA3。linux识别的地址范围是0x03~0x77(i2ctools ./i2cdetect -r -y 0测出)。0xA2右移一位后即是0x51。
make V=s编译固件后即可访问i2c-0
测试代码:

#include <linux/i2c-dev.h>
void main(void)
{
    int fd;
    fd= open("/dev/i2c-0", O_RDWR);
	if(fd< 0)
	{
		printf("“open”\n");
	}
	ioctl(fd, I2C_SLAVE, (0xA2 >> 1));//0x0703
	unsigned char buf;
	unsigned char addr = 0x02;//02为PCB8563的秒寄存器,每次读取都会看到变化
	write(fd,&addr, 1);
	read(fd,&buf, 1);
	printf("[%2d]\n", buf);
}

上述博客中提到的I2C_SLAVE(作者笔误写成了IIC_SLAVE)定义问题,在这个头文件内#include <linux/i2c-dev.h>

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值