TWI - 模块使用说明
本章节主要描述 TWI (I2C) 模块的常见功能配置和使用。
环境配置
软件环境
- 相关源码路径:
bsp/drivers/twi/twi-sunxi.c
硬件环境
- 开发板。
- 测试使用的 I2C 设备为
eeprom,连接到i2c0,涉及PA10和PA11两个 GPIO 引脚。 - 注意外设的供电、GND、I2C 引脚的硬件连接。
驱动配置
- 执行
make kernel_menuconfig。 - 选择以下配置项:
Allwinner BSP --->
Device Drivers --->
TWI Drivers --->
<*> I2C Support for Allwinner SoCs
DTS 配置
使用对应的 TWI 通道前,需要在 board.dts 文件中配置 TWI 引脚和状态:
- 进入
device/config/chips/{CHIP}/configs/{BOARD}目录,编辑board.dts文件。
提示
备注
提示
备注
{CHIP} 为芯片名称(如 v821、v861 等),{BOARD} 为板级配置名称。具体路径请参考对应芯片的 SDK 目录结构。
:::
- 配置
twi0引脚:
twi0_pins_default: twi0@0 {
pins = "PA10", "PA11";
function = "twi0";
drive-strength = <10>;
bias-pull-up;
};
twi0_pins_sleep: twi0@1 {
pins = "PA10", "PA11";
function = "gpio_in";
};
提示
备注
提示
备注
示例使用 PA10/PA11 作为 TWI0 引脚,实际引脚配置请参考对应芯片的数据手册。
:::
- 配置
twi0设备:
&twi0 {
clock-frequency = <400000>;
pinctrl-0 = <&twi0_pins_default>;
pinctrl-1 = <&twi0_pins_sleep>;
pinctrl-names = "default", "sleep";
twi_drv_used = <1>; /* 推荐设置为 1,以确保稳定性和向后兼容性 */
status = "okay";
};
软件包配置
- 执行
make menuconfig。 - 选中以下 I2C 测试工具软件包配置:
CONFIG_BUSYBOX_CONFIG_I2CGET=y
CONFIG_BUSYBOX_CONFIG_I2CSET=y
CONFIG_BUSYBOX_CONFIG_I2CDUMP=y
CONFIG_BUSYBOX_CONFIG_I2CDETECT=y
CONFIG_BUSYBOX_CONFIG_I2CTRANSFER=y