Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
[分享]使用RT-Thread的I2C总线读写EEPROM或铁电(FRAM)
发布于 2014-04-02 11:05:25 浏览:12167
订阅该版
上周刚好调I2C的驱动,所以写了一段测试小程序,分享一下。 ```c #include
#include
static const char * i2c_bus_device_name = "i2c1"; static const rt_uint8_t eeprom_addr = 0x50; /* 1010A2A1A0 - R/W */ rt_err_t i2c_test(void) { struct rt_i2c_bus_device * i2c_device; struct rt_i2c_msg msgs[2]; rt_uint8_t buffer1[2]; rt_uint8_t buffer2[2]; rt_size_t i; i2c_device = rt_i2c_bus_device_find(i2c_bus_device_name); if(i2c_device == RT_NULL) { rt_kprintf("i2c bus device %s not found! ", i2c_bus_device_name); return -RT_ENOSYS; } //step 1: read out. buffer1[0] = 0; msgs[0].addr = eeprom_addr; msgs[0].flags = RT_I2C_WR; /* Write to slave */ msgs[0].buf = buffer1; /* eeprom offset. */ msgs[0].len = 1; msgs[1].addr = eeprom_addr; msgs[1].flags = RT_I2C_RD; /* Read from slave */ msgs[1].buf = buffer2; msgs[1].len = sizeof(buffer2); if( rt_i2c_transfer(i2c_device, msgs, 2) != 2 ) { rt_kprintf("read EEPROM fail! "); } rt_kprintf("read EEPROM at I2C address: 0x%02X ", eeprom_addr); rt_kprintf("0x0000: "); for(i=0; i
FINSH_FUNCTION_EXPORT(i2c_test, i2c_test); #endif // RT_USING_FINSH ```
查看更多
17
个回答
默认排序
按发布时间排序
rockleerocklee
2014-04-02
这家伙很懒,什么也没写!
好,厉害呀,正好需要。
rockleerocklee
2014-04-20
这家伙很懒,什么也没写!
为什么没注册设备而直接寻找设备。
石头
2014-04-29
这家伙很懒,什么也没写!
你好。看了你的这个模块,感觉和RT-Thread的驱动有点不同;驱动里面用到的读写应该是i2c_bus_device_read和i2c_bus_device_write,而你用的是更加底层的模块。你为什么不直接用封装好的驱动模块进行读写?在rt_i2c_transfer上面应该还有两层封装啊。而rt_i2c_transfer里面调用的master_xfer则是要用户实现的最底层的部份。这样理解对吗?
aozima
2014-04-29
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
master_xfer是硬件驱动,跟具体硬件相关,每个硬件要单独编写。 rt_i2c_transfer是I2C的基本操作接口。 i2c_bus_device_read/write是基于rt_i2c_transfer封装的更易用的API。 根据实际需要合理选择。
石头
2014-04-29
这家伙很懒,什么也没写!
你的这种使用方法没有用到RT-Thread的设备管理吧。相当于裸机的形式咯?
bernard
2014-04-29
这家伙很懒,什么也没写!
RT-Thread的设备接口并不是说一定要使用device_read/write等啊,IIC、SPI都采用了另外一种形式,要具备灵活性
石头
2014-04-29
这家伙很懒,什么也没写!
>RT-Thread的设备接口并不是说一定要使用device_read/write等啊,IIC、SPI都采用了另外一种形式,要具备灵活性 --- 这样做确实是具备了灵活性,但是同样带来的是不一致性,为什么不将各个接口统一起来呢。这样使用就更加方便了。从的这段代码我看到了查找设备;但是并未看到通过设备调用接口的部份,这样的话注册设备的意义在哪里?我参加工作也就两年,以前也就移植UcCos玩了下,并没有深入,这次有机会接触了下RT-Thread,没有深入的接触过其他操作系统,不好对RT-Thread做深入评价;但是就我目前来说,这款操作系统用起来还是很忙好用的,其中的Finsh简直就是调试神器啊。目前能简单的应用,我目前想把驱动好好的琢磨下;这样以后使用起来会更加的方便。很感谢各位大牛的解答。
bernard
2014-04-29
这家伙很懒,什么也没写!
不明白为啥现在论坛上老是希望点名呢,大家一起交流交流下即可 [s:170]
石头
2014-04-29
这家伙很懒,什么也没写!
>不明白为啥现在论坛上老是希望点名呢,大家一起交流交流下即可 [s:170] --- 对不起。我全部删掉了。很希望和你们交流下。对你们的操作系统很是感兴趣。能帮我解释下上面的问题吗?
bernard
2014-04-29
这家伙很懒,什么也没写!
RT-Thread本身初期提供的是rt_device_read/write/open/close/control的API,但是显然,这些API并不可能代表所有的设备操作,特别是一些设备可能是基于另外一些外设(例如基于SPI Flash的块设备,块设备依然是read/write等接口,但是SPI设备则完全不需要) 所以这中间还有一类设备,它的接口也相对统一、固定,但是是由上层固定的组件或其他逻辑层的设备驱动来使用,所以这个时候依然使用device_read/write已经失去意义了。但设备注册依然有好处,注册设备后,可以根据设备名称来查找到相应的设备,然后进行访问。
撰写答案
登录
注册新账号
关注者
0
被浏览
12.2k
关于作者
aozima
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
提问
92
回答
4482
被采纳
381
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-Thread项目助手v0.2.0 - 支持Env Windows
2
RttreadV5.10上,GD32F450Z RTC时间显示问题
3
rt-smart启动流程分析
4
EtherKit快速上手PROFINET
5
RTThread USB转串口无法接收数据
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部