Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
I2C_IIC
设备驱动框架
关于I2C驱动框架存在的问题
发布于 2021-12-02 20:21:46 浏览:1587
订阅该版
在使用驱动框架的过程中发现一个问题,跟大家讨论一下,描述如下: 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.6k
关于作者
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
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
[Vision Board创客营]WDT实践之配置、issue、PR一条龙
2
恩智浦FRDM-MCXN947上的RW007联网实践
3
[Vision Board创客营]学习片上Flash移植FAL
4
MCXN947测评系列(二)串口设备测评
5
NXP MCXN947实践:基于 rt-thread的驱动模块配置PWM
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
CAN总线
Hardfault
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
cubemx
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
keil_MDK
编译报错
socket
MicroPython
GD32
msh
Debug
ulog
SDIO总线
SFUD
rt_mq_消息队列_msg_queue
C++_cpp
本月问答贡献
sakumisu
4
个答案
3
次被采纳
xiaorui
6
个答案
2
次被采纳
三世执戟
31
个答案
1
次被采纳
梦笑真美
17
个答案
1
次被采纳
踩姑娘的小蘑菇
13
个答案
1
次被采纳
本月文章贡献
Z_Y
2
篇文章
5
次点赞
2345vor
2
篇文章
1
次点赞
比特饼干
1
篇文章
6
次点赞
Lu_盼盼
1
篇文章
3
次点赞
猪的行独
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部