Toggle navigation
首页
问答
文章
话题
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
I2C
设备驱动框架
关于I2C驱动框架存在的问题
发布于 2021-12-02 20:21:46 浏览:756
订阅该版
在使用驱动框架的过程中发现一个问题,跟大家讨论一下,描述如下: 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字段  - `i2c_dev.c`中的`i2c_bus_device_control`函数中,设置总线设备的地址没什么意义 
查看更多
RTT_逍遥
认证专家
2021-12-02
https://github.com/supperthomas
我觉得这个addr可能如你所说,当时预留的,后面可能没用到
3
个回答
默认排序
按发布时间排序
recan
认证专家
2021-12-02
【架构师李肯】 http://yyds.recan-li.cn 【一个专注于嵌入式软件架构设计的新生代农名工】
你这么一说,我们现在在用的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
This guy hasn't written anything yet
这个是不是为了 i2c slave 方式用的呢
撰写答案
登录
注册新账号
关注者
0
被浏览
756
关于作者
chenyingchun
This guy hasn't written anything yet
提问
22
回答
82
被采纳
14
关注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
五分钟玩转RT-Thread新社区
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
7
国产MCU移植系列教程汇总,欢迎查看!
8
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
9
STM32的“GPU”——DMA2D实例详解
10
RT-Thread隐藏的宝藏之completion
最新文章
1
J-Trace入门系列:2)ART-PI 也能玩转Stream Trace
2
【RA6M4学习RT-Thread相关bug答疑】
3
RT-Thread CAN驱动无法通讯的问题与解决
4
FlashDB环境搭建
5
40P转LVDS小板
热门标签
RT-Thread Studio
串口
LWIP
Env
AT
FinSH
Bootloader
SPI
ART-Pi
Hardfault
USB
CAN
文件系统
DMA
studio
RT-Thread
线程
Nano
stm32
ota
MQTT
SCons
ESP8266
rtthread
UART
freemodbus
I2C
flash
软件包
定时器
RTC
cubemx
W5500
FAL
rtt
rt-smart
BSP
PWM
AB32VG1
ADC
编译报错
msh
socket
SDIO
SFUD
keil
C++
MicroPython
中断
RT-Studio
本月问答贡献
crystal266
20
个答案
12
次被采纳
rcp
10
个答案
3
次被采纳
lchnu
5
个答案
2
次被采纳
sync
4
个答案
2
次被采纳
小小李sunny
12
个答案
1
次被采纳
本月文章贡献
不讲武德的老法师
3
篇文章
4
次点赞
喵小黑
3
篇文章
4
次点赞
RTT_逍遥
2
篇文章
6
次点赞
还没想好
1
篇文章
11
次点赞
RTT_Studio
1
篇文章
10
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部