Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
I2C_IIC
设备驱动框架
关于I2C驱动框架存在的问题
发布于 2021-12-02 20:21:46 浏览:1924
订阅该版
在使用驱动框架的过程中发现一个问题,跟大家讨论一下,描述如下: i2c.h中,关于i2c总线设备的结构体如下 ``` struct rt_i2c_bus_device { struct rt_device parent; const struct rt_i2c_bus_device_ops *ops; rt_uint16_t flags; rt_uint16_t addr; // I2C总线设备中,这个addr,并未用到, //想想,好像i2c总线设备,确实不需要地址,只有i2c从设备才有地址 struct rt_mutex lock; rt_uint32_t timeout; rt_uint32_t retries; void *priv; }; ``` 上面的`addr`字段,通读整个驱动I2C框架,以及设备驱动,其实并没有实际的用途,很容易让人confuse,甚至使用出错,说明如下。 - 设备驱动中,并未使用该字段,不管是软件i2c驱动框架中,即i2c-bit-ops.c,还是最底层的drv_i2c.c中,都是使用msg->addr作为设备的addr的,并未使用设备总线bus中的addr字段 ![image.png](https://oss-club.rt-thread.org/uploads/20211202/1d00a6bba900c7240617e577744ed24d.png.webp) - `i2c_dev.c`中的`i2c_bus_device_control`函数中,设置总线设备的地址没什么意义 ![image.png](https://oss-club.rt-thread.org/uploads/20211202/2f1dce58e79e186025ea26294b24320d.png.webp)
查看更多
RTT_逍遥
认证专家
2021-12-02
https://github.com/supperthomas
我觉得这个addr可能如你所说,当时预留的,后面可能没用到
3
个回答
默认排序
按发布时间排序
李肯陪你玩赚嵌入式
认证专家
2021-12-02
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
你这么一说,我们现在在用的Alios Things封装的`hal/i2c`也有类似的问题: 接口里面的dev_addr和配置结构体里面的dev_addr,只用其一。 ```c /* This struct define i2c config args */ typedef struct { uint32_t address_width; /**< Addressing mode: 7 bit or 10 bit */ uint32_t freq; /**< CLK freq */ uint8_t mode; /**< master or slave mode */ uint16_t dev_addr; /**< slave device addr */ } i2c_config_t; /* This struct define i2c main handle */ typedef struct { uint8_t port; /**< i2c port */ i2c_config_t config; /**< i2c config */ void *priv; /**< priv data */ int sda_pin; int scl_pin; } i2c_dev_t; /** * I2c master send * * @param[in] i2c the i2c device * @param[in] dev_addr device address * @param[in] data i2c send data * @param[in] size i2c send data size * @param[in] timeout timeout in milisecond, set this value to HAL_WAIT_FOREVER * if you want to wait forever * * @return 0 : on success, otherwise is error */ int32_t hal_i2c_master_send(i2c_dev_t *i2c, uint16_t dev_addr, const uint8_t *data, uint16_t size, uint32_t timeout); /** * I2c master recv * * @param[in] i2c the i2c device * @param[in] dev_addr device address * @param[out] data i2c receive data * @param[in] size i2c receive data size * @param[in] timeout timeout in milisecond, set this value to HAL_WAIT_FOREVER * if you want to wait forever * * @return 0 : on success, otherwise is error */ int32_t hal_i2c_master_recv(i2c_dev_t *i2c, uint16_t dev_addr, uint8_t *data, uint16_t size, uint32_t timeout); ```
liuduanfei
2021-12-03
这家伙很懒,什么也没写!
这个是不是为了 i2c slave 方式用的呢
撰写答案
登录
注册新账号
关注者
0
被浏览
1.9k
关于作者
chenyingchun
这家伙很懒,什么也没写!
提问
22
回答
83
被采纳
16
关注TA
发私信
相关问题
1
NXP的I2C应该比ST的好用吧
2
Use of I2C device driver
3
关于I2C 驱动问题请教
4
我如何知道这个iic的io配置和我电路设计的是一致的?
5
I2C模拟读操作失败,不知道问什么进不去读函数
6
RTT的I2C有官方文档资料没有
7
求 STM32F103 IIC 自定义IO初始化 代码
8
报一个LPC4008代码中I2C的bug
9
RTOS IIC总线使用
10
关于在RTT中使用STM32 I2C的疑问
推荐文章
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
如何在master上的BSP中添加配置yml文件
2
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
3
RT-Thread 发布 EtherKit开源以太网硬件!
4
rt-thread使用cherryusb实现虚拟串口
5
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
热门标签
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
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
14
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部