历史上的今天
今天是:2025年07月20日(星期日)
2021年07月20日 | 27.3.4.2内核下的I2C驱动(二)
2021-07-20 来源:eefocus
用户态直接访问,使用内核提供的驱动程序
dev-interface



注意,不要直接使用read(),write()操作函数,直接使用i2c_smbus_write_word_data,i2c_smbus_read_word_data。官方文档给了说明,如下
驱动程序编译进内核才有效,I2c-dev.c依赖于那些配置项,查看makefile
makemenuconfig,搜索CONFIG_I2C_CHARDEV


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


测试代码
#include * i2c_usr_test */void print_usage(char *file){printf("%s fd = open(argv[1], O_RDWR);if (fd < 0){printf("can't open %sn", 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%2xn", 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;}
史海拾趣
|
三极管先生追求电感小姐,电感小姐不理他,嫌他喜欢吹牛(放大);二极管先生追求电感小姐,电感小姐也不喜欢他,因为嫌他死脑筋,不会走回头路(单向导通)。电感小姐后来选了电容先生做男朋友,因为他像自己一样会经常存款(储能)。… 查看全部问答> |
|
依照我们这边培养学生的情况看,工具不是问题,开发语言的学习需要一定的时间与基础(比如有C语言基础的学Verilog就快一些),因为有个硬件的思想在里面;算法的实现与应用是一个逐步形成经验的过程;另外对于个人而言,硬件开发系统的成本仍然相 ...… 查看全部问答> |
|
question 9 DS-SS system & CDMA capacity formulate and plot the signal-to-interference for the DS spread spectrum systems. how do you relate the SIR to : a) cell\'s ...… 查看全部问答> |
|
在PC下安装EVC4.0和安装普通的软件一样,按照安装向导提示,先安装platform manager(平台管理器,必须使用这个工具),再安装EVC(IDE部分),接着安装standard SDK(模拟器使用的SDK),最后安装SP(service pack)。我每次都是先安装PB(platfor ...… 查看全部问答> |
|
今天在看STM32F103xDatasheet(Oct2007).pdf数据手册 有一事不明,为何24页中的memory mapping中右边的单位为Kbit(s),而不是byte(s)?是写错了吗?… 查看全部问答> |




