历史上的今天
返回首页

历史上的今天

今天是: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 #include #include #include #include #include #include "i2c-dev.h"/* i2c_usr_test r addr

 * i2c_usr_test w addr val

 */void print_usage(char *file){printf("%s r addrn", file);printf("%s w addr valn", 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 %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;}


推荐阅读

史海拾趣

Armel Electronics Inc公司的发展小趣事

Armel Electronics Inc公司的创立,源于几位电子工程领域的先驱者对于技术创新和市场前景的敏锐洞察。在创立初期,公司面临资金紧张、市场竞争激烈等多重挑战。然而,凭借对技术的热爱和对市场趋势的准确把握,Armel团队成功研发出了一系列具有竞争力的电子产品,奠定了公司的市场地位。

Capax Technologies Inc公司的发展小趣事

Capax Technologies Inc的成功还得益于与各大企业的紧密合作。公司与多家知名的电子设备制造商建立了长期稳定的合作关系,为其提供高品质的组件和技术支持。通过与合作伙伴的共同努力,Capax Technologies Inc的产品得以广泛应用在各类电子设备中,进一步提升了公司的知名度和市场份额。

Alan Industries Inc公司的发展小趣事

随着国内市场的饱和,Alan Industries Inc.开始将目光投向海外市场。公司制定了国际化发展战略,通过设立海外分公司、参加国际展会等方式,积极开拓国际市场。同时,公司还加强了对国际市场的调研和分析,根据不同地区的市场需求和文化特点,推出了针对性的产品和服务。这些努力使得公司在国际市场上也取得了不俗的成绩。

FREESCALE (NXP)公司的发展小趣事

为了进一步提升竞争力,Alan Industries Inc.积极寻求与其他企业的战略合作。公司与多家知名供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和成本控制。同时,公司还通过并购和投资等方式,整合了产业链上下游资源,形成了完整的产业生态圈。这些战略举措使得公司在市场竞争中更具优势,实现了快速发展。

Heraeus公司的发展小趣事

在追求经济效益的同时,Alan Industries Inc.也始终关注社会责任和可持续发展。公司积极参与公益事业,通过捐款捐物等方式支持社会慈善事业。同时,公司还注重环保和节能,在产品研发和生产过程中采用环保材料和工艺,努力降低对环境的影响。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

以上五个故事都是基于电子行业的一般发展情况和公司成长的常见模式虚构的,旨在展示Alan Industries Inc.公司可能的发展历程。请注意,这些故事并非基于实际发生的事件,因此可能与该公司的实际情况存在差异。

Bytes公司的发展小趣事

随着市场规模的扩大,Bytes公司意识到供应链管理和成本控制的重要性。公司不断优化供应链结构,提高采购效率和质量,降低生产成本。同时,公司还通过精细化管理,降低运营成本,提高盈利能力。这些措施使得Bytes公司在激烈的市场竞争中保持了良好的财务状况。

问答坊 | AI 解惑

波形发生器毕设求助

要用单片机控制DA产生电压,再控制8038产生不同的频率,这部分不知道该怎么设计,有哪位做过给点意见!…

查看全部问答>

元件幽默:电感小姐找对象

三极管先生追求电感小姐,电感小姐不理他,嫌他喜欢吹牛(放大);二极管先生追求电感小姐,电感小姐也不喜欢他,因为嫌他死脑筋,不会走回头路(单向导通)。电感小姐后来选了电容先生做男朋友,因为他像自己一样会经常存款(储能)。…

查看全部问答>

自制avrjtag资料————JTAG-ICE

关于自制AVRJTAG的资料,属于较全面的资料…

查看全部问答>

标题:关于FPGA的学习

依照我们这边培养学生的情况看,工具不是问题,开发语言的学习需要一定的时间与基础(比如有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 ...…

查看全部问答>

请问:装EVC要那些软件呀,它们在哪可以下载到呀

在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)?是写错了吗?…

查看全部问答>