运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

27.3.4.2内核下的I2C驱动(二)

运维开发网 https://www.qedev.com 2021-04-18 22:49 出处:51CTO 作者:LinuxDriverDev
用户态直接访问,使用内核提供的驱动程序dev-interface注意,不要直接使用read(),write()操作函数,直接使用i2c_smbus_write_word_data,i2c_smbus_read_word_data。官方文档给了说明,如下驱动程序编译进内核才有效,I2c-dev.c依赖于那些配置项,查看makefilemakemenuconfig,搜索CONFIG...

用户态直接访问,使用内核提供的驱动程序

dev-interface

27.3.4.2内核下的I2C驱动(二)

27.3.4.2内核下的I2C驱动(二)

27.3.4.2内核下的I2C驱动(二)

27.3.4.2内核下的I2C驱动(二)

注意,不要直接使用read(),write()操作函数,直接使用i2c_smbus_write_word_data,i2c_smbus_read_word_data。官方文档给了说明,如下

27.3.4.2内核下的I2C驱动(二)

驱动程序编译进内核才有效,I2c-dev.c依赖于那些配置项,查看makefile

27.3.4.2内核下的I2C驱动(二)

makemenuconfig,搜索CONFIG_I2C_CHARDEV

27.3.4.2内核下的I2C驱动(二)

27.3.4.2内核下的I2C驱动(二)

27.3.4.2内核下的I2C驱动(二)

重启内核,编译新内核,之后下载到开发板

27.3.4.2内核下的I2C驱动(二)

27.3.4.2内核下的I2C驱动(二)

27.3.4.2内核下的I2C驱动(二)

测试代码

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include "i2c-dev.h"/* i2c_usr_test </dev/i2c-0> <dev_addr> r addr
 * i2c_usr_test </dev/i2c-0> <dev_addr> w addr val
 */void print_usage(char *file){printf("%s </dev/i2c-0> <dev_addr> r addr\n", file);printf("%s </dev/i2c-0> <dev_addr> w addr val\n", file);}int main(int argc, char **argv){int fd;unsigned char addr, data;int dev_addr;if ((argc != 5) && (argc != 6)){print_usage(argv[0]);return -1;}

	fd = open(argv[1], O_RDWR);if (fd < 0){printf("can't open %s\n", argv[1]);return -1;}

	dev_addr = strtoul(argv[2], NULL, 0);if (ioctl(fd, I2C_SLAVE, dev_addr) < 0){    
		/* ERROR HANDLING; you can check errno to see what went wrong */    
		printf("set addr error!\n");return -1;}if (strcmp(argv[3], "r") == 0){
		addr = strtoul(argv[4], NULL, 0);
		
		data = i2c_smbus_read_word_data(fd, addr);printf("data: %c, %d, 0x%2x\n", data, data, data);}else if ((strcmp(argv[3], "w") == 0) && (argc == 6)){
		addr = strtoul(argv[4], NULL, 0);
		data = strtoul(argv[5], NULL, 0);i2c_smbus_write_byte_data(fd, addr, data);}else{print_usage(argv[0]);return -1;}return 0;}

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号