一、前言
zephyr调用硬件的i2c驱动是通过调用HAL库形式,硬件参数设置更多的是在工程的配置文件中设置,比如dts、.conf、.overlay文件,这里主要是介绍下调试官方demo过程中涉及到的一些工程配置和关键api介绍。
二、I2C启动流程
简单梳理下I2C驱动在zephyr的初始化,关键函数会在流程中列出。
三、关键API
static const struct i2c_driver_api api_funcs = {
.configure = i2c_stm32_runtime_configure,
.transfer = i2c_stm32_transfer,
#if defined(CONFIG_I2C_SLAVE)
.slave_register = i2c_stm32_slave_register,
.slave_unregister = i2c_stm32_slave_unregister,
#endif
};
I2C操作的api都会注册进i2c_driver_api 结构体,下面具体讲讲每个函数。
i2c_configure
函数原型
int i2c_configure(const struct device *dev, uint32_t dev_config) 配置主机的i2c控制器 0成功,非0失败
参数介绍
dev const struct d