drv_hw_i2c层:没有软件I2C的bit_opt层,而是直接对接i2c_core层提供的结构体:struct rt_i2c_bus_device_ops。作者为了简单说明,写了个例子(简单粗暴的例子): 代码语言:javascript 代码运行次数:0 运行 AI代码解释 struct rt_i2c_bus_device i2c1_bus;I2C_HandleTypeDef hi2c1;staticrt_err_ti2c_hw_init(void...
i2c_dev.h中相关数据结构(struct rt_i2c_priv_data用于i2c_bus_device_control()函数中RT_I2C_DEV_CTRL_RW控制标志): #defineRT_I2C_DEV_CTRL_10BIT 0x20#defineRT_I2C_DEV_CTRL_ADDR 0x21#defineRT_I2C_DEV_CTRL_TIMEOUT 0x22#defineRT_I2C_DEV_CTRL_RW 0x23structrt_i2c_priv_data {structrt_i2c_...
i2c_dev.h中相关数据结构(struct rt_i2c_priv_data用于i2c_bus_device_control()函数中RT_I2C_DEV_CTRL_RW控制标志): #defineRT_I2C_DEV_CTRL_10BIT 0x20#defineRT_I2C_DEV_CTRL_ADDR 0x21#defineRT_I2C_DEV_CTRL_TIMEOUT 0x22#defineRT_I2C_DEV_CTRL_RW 0x23structrt_i2c_priv_data {structrt_i2c_...
i2c_dbg("I2C bus [%s] registered\n", bus_name);returnres; } i2c-bit-ops.c中主要实现了利用GPIO模拟IIC总线时序的相关接口函数,如:i2c_start(),i2c_restart(),i2c_stop(),i2c_waitack(),i2c_writeb(),i2c_readb(),i2c_send_bytes(),i2c_send_ack_or_nack(),i2c_recv_bytes(),i2c_send_ad...
bit_ops是RTT为软件I2C提供的中间层,它的作用:为底层模拟I2C驱动提供回调接口,为核心层提供统一I2C...
实现硬件I2C驱动接口本质是去替换 i2c-bit-ops.c 这个文件,将里面的 i2c_bit_xfer 通过硬件I2C驱动的...
一、RT-Thread I2C 总线注册 1.1 I2C 设备使用步骤 1.2 检查问题 二、温湿度传感器软件包 2.1 添加及基本测试 2.2 程序中使用 三、EEPROM软件包 3.1 添加及基本测试 3.2 程序中使用 结语 前言 组件与软件包部分之前文章我们学习了 2 个组件: SFUD组件与 AT组件。 RT-Thread 丰富的生态系统,除了一些标准的组件...
I2C的基本原理之前在公众号就有相应的文章了,很早之前发的,接下来我们来学习RT-Thread I2C总线设备的使用!这是RTT官方设计的一个软件框架,学习一个新东西,还是一样,我个人主张带着需求去学习,而不是漫无目的的去学,有了需求驱动,并且是一个努力付出就可以拥有的成果,那么这还不容易嘛!
RT-Thread is an open source IoT Real-Time Operating System (RTOS). - feat:[STM32][I2C] 添加阻塞模式并区分 POLL、INT、DMA 模式 · RT-Thread/rt-thread@4d70ea7
ifx_i2c_gpio_init(&i2c_obj[i]); } } /** * This function sets the sda pin. * Expand Down Expand Up @@ -112,13 +122,15 @@ static rt_int32_t ifx_get_scl(void *data) static const struct rt_i2c_bit_ops ifx_bit_ops_default = { .data = RT_NULL, .pin_init = ifx_i2c_pi...