uboot i2c 操作函数记录
I2C 在 u-boot 上面,有直接操作 I2C 的函数
// drivers/i2c/i2c_core.c// 设置在哪个 I2C bus 上工作 276 int i2c_set_bus_num(unsigned int bus) 277 { 278 int max; 279 280 if ((bus == I2C_BUS) && (I2C_ADAP->init_done > 0)) 281 return 0; 282 283 #ifndef CONFIG_SYS_I2C_DIRECT_BUS 284 if (bus >= CONFIG_SYS_NUM_I2C_BUSES) 285 return -1; 286 #endif 287 288 max = ll_entry_count(struct i2c_adapter, i2c); 289 if (I2C_ADAPTER(bus) >= max) { 290 printf("Error, wrong i2c adapter %d max %d possible\n", 291 I2C_ADAPTER(bus), max); 292 return -2; 293 } 294 295 #ifndef CONFIG_SYS_I2C_DIRECT_BUS 296 i2c_mux_disconnect_all(); 297 #endif 298 299 gd->cur_i2c_bus = bus; 300 if (I2C_ADAP->init_done == 0) 301 i2c_init_bus(bus, I2C_ADAP->speed, I2C_ADAP->slaveaddr); 302 303 #ifndef CONFIG_SYS_I2C_DIRECT_BUS 304 i2c_mux_set_all(); 305 #endif 306 return 0; 307 } //etc i2c_set_bus_num(1);// i2c slave 匹配 313 int i2c_probe(uint8_t chip) 314 { 315 return I2C_ADAP->probe(I2C_ADAP, chip); 316 } // etc i2c_probe(0x68) // 返回是否成功, 0 表示成功 , 非 0 表示失败// i2c 读写 写 330 int i2c_read(uint8_t chip, unsigned int addr, int alen, 331 uint8_t *buffer, int len) 332 { 333 return I2C_ADAP->read(I2C_ADAP, chip, addr, alen, buffer, len); 334 } 335 336 int i2c_write(uint8_t chip, unsigned int addr, int alen, 337 uint8_t *buffer, int len) 338 { 339 return I2C_ADAP->write(I2C_ADAP, chip, addr, alen, buffer, len); 340 }//etc uchar wri_data = 0x3f, red_data;90 if (i2c_write(0x68, 1, 1, (uchar *)&wri_data, sizeof(int)))91 puts("write error\n");9293 if (i2c_read(0x68, 1, 1, (uchar *)&red_data,94 sizeof(int))) {95 puts("Could not read the MCU; something fundamentally"96 " wrong on the I2C bus.\n");97 return -EIO;98 }
uboot i2c 操作函数记录相关推荐
- linux i2c 读写函数,Linux下读写芯片的I2C寄存器
要想在Linux下读写芯片的I2C寄存器,一般需要在Linux编写一份该芯片的I2C驱动,关于Linux下如何编写I2C驱动,前一篇文章<手把手教你写Linux I2C设备驱动>已经做了初 ...
- linux i2c子系统代码分析3 ---操作函数i2c_add_adapter i2c_add_numbered_adapter介绍
二.i2c子系统操作函数,i2c-core.c 1. kernel/driver/linux/i2c/i2c-core.c /** * i2c_add_adapter - declare i2c a ...
- BootLoader(U-Boot)启动过程记录
BootLoader(U-Boot)启动过程记录 定义 Bootloader终极目的是引导内核,加载内核到内存然后跳转到内核的地方执行,在加载之前也会做一些硬件的初始化等等操作.启动模式分为两种:启动 ...
- MATLAB【十三】————仿真函数记录以及matlab变成小结
part one:matlab 编程小结. 1.char 与string的区别,char使用的单引号 '' ,string使用的是双引号"". 2.一般标题中的输出一定要通过 nu ...
- mysql存储过程时间_mysql时间操作函数和存储过程
因为业务须要统计一批数据.用到关于mysql的时间操作函数和存储过程,问题已经基本解决.把过程记录下: 1. mysql的语句中不支持直接用循环.循环仅仅能在存储过程中使用. 2. 写为文件时,注意一 ...
- 6-23 分离链接法的删除操作函数 (20 分)
试实现分离链接法的删除操作函数. 函数接口定义: bool Delete( HashTable H, ElementType Key ); 其中HashTable是分离链接散列表,定义如下: type ...
- mysql日期时间操作函数详解
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而 ...
- 字符串转内存c语言,【一起学C】C语言面试题必考:字符串操作函数,内存操作函数实现...
本帖最后由 奉聪 于 2017-1-25 14:54 编辑 *******前言******* 我数一下,我发了几个帖子,1.2.3? 哈哈哈,没几个哈,感谢吾爱,让我学到了很多,乐于分享,共同进步! ...
- 修改linevent的4096限制----更多evbuffer操作函数
出处:http://blog.csdn.net/luotuo44/article/details/39325447 锁操作: 在 前一篇博文 可以看到很多函数在操作前都需要对这个evbuffer进行加 ...
最新文章
- linux kernel list_head
- Spring-JDBC表情符号不能存入数据库
- 【PC工具】创客、arduino爱好者必备,最最简单好用硬件电路连线绘图工具Fritzing...
- Dubbo Cloud Native 之路的实践与思考
- BOM 浏览器窗口尺寸 浏览器的弹出层 浏览器的地址栏 浏览器的历史记录 浏览器的版本信息 浏览器的常见事件 浏览器卷去的高度和宽度
- 计算与推断思维 六、可视化
- 聚类算法实践——层次、K-means聚类
- 长春理工大学计算机科学与技术学分,计算机科学与技术专业本科人才培养方案-长春理工大学教务处.PDF...
- 数据结构:顺序表的基本操作
- 凯恩帝绝对坐标清零_凯恩帝 K90T i 数控车床系统使用手册分享
- 亲自动手搭建微服务框架和测试环境-3-Redis
- PostgreSQL远程连接,发生的SSL错误
- Servlet 取表单的值
- QT程序退出后托盘图标不消失问题
- Google Chrome误删书签的恢复方式!
- Fastformer论文解读
- Matlab数值分析实例:三次样条插值
- Oracle安装之1521端口及任何端口被占用错误
- 这个650万科学大奖来了!今年颁给谁?
- Thread.Sleep线程休眠
热门文章
- 总结:word2007中插入页眉页脚和页码
- 【看这个篇就够了】95%成为网络安全工程师
- 矩阵分解--超详细解读
- KNN算法及KNN的优化算法-加权KNN
- 浅谈敏捷思想-08.从产品愿景到用户故事地图
- Android 使用OkHttp支持HttpDNS
- found duplicated code in this file
- 西门子200SMART(十)写程序的思路
- 优秀网页翻译:一个智能旋钮:DIY haptic input knob: BLDC motor + round LCD
- win10推送_Win10新版19631推送,网友:千万别翻车