【NCS随笔】nRF54L15初始化一个I2C外设

nRF54L15初始化一个I2C外设
本文章主要是讲解如何使用nRF54L15初始化一个I2C

一、如何初始化

1、添加宏

CONFIG_I2C=y

2、添加overlay

工程目录下新建一个nrf54l15dk_nrf54l15app.overlay文件,在编译选型添加此overlay
在这个overlay里面添加I2C的节点

&pinctrl {
    i2c22_default: i2c22_default {
        group1 {
            psels = <NRF_PSEL(TWIM_SCL, 1, 11)>,
                    <NRF_PSEL(TWIM_SDA, 1, 12)>;
            bias-pull-up;
        };
    };
    i2c22_sleep: i2c22_sleep {
        group1 {
            psels = <NRF_PSEL(TWIM_SCL, 1, 11)>,
                    <NRF_PSEL(TWIM_SDA, 1, 12)>;
            low-power-enable;
        };
    };
};

&i2c22 {
    status = "okay";
    clock-frequency = <I2C_BITRATE_STANDARD>;
    pinctrl-0 = <&i2c22_default>;
    pinctrl-1 = <&i2c22_sleep>;
    pinctrl-names = "default", "sleep";

    mysensor: mysensor@77 {
        compatible = "i2c-device";
        status = "okay";
        reg = <0x77>;
    };
};

3、添加代码

3.1

添加代码

#include <zephyr/kernel.h>
#include <zephyr/drivers/i2c.h>
#include <zephyr/sys/printk.h>

#define I2C_NODE DT_NODELABEL(mysensor)


//main函数里面添加
	printf("Hello World! %s\n", CONFIG_BOARD_TARGET);
	static const struct i2c_dt_spec dev_i2c = I2C_DT_SPEC_GET(I2C_NODE);

if (!device_is_ready(dev_i2c.bus)) {
	printk("I2C bus %s is not ready!\n\r",dev_i2c.bus->name);
	return -1;
}
    printk("I2C bus %s is  ready. \n");
    // 写寄存器 0x03,写入 0x8C
    uint8_t config[2] = {0x03, 0x8C};
    int ret = i2c_write_dt(&dev_i2c, config, sizeof(config));
    if (ret != 0) {
        printk("Failed to write to I2C device address %x at reg. %x\n", dev_i2c.addr, config[0]);
        return ret;
    }

    // 读寄存器 0x03
    // 先写寄存器地址,再读数据
    uint8_t reg_addr = 0x03;
    uint8_t data = 0;
    ret = i2c_write_read_dt(&dev_i2c, &reg_addr, 1, &data, 1);
    if (ret != 0) {
        printk("Failed to read from I2C device address %x at reg. %x\n", dev_i2c.addr, reg_addr);
        return;
    }
    //printk("Read from I2C device address %x at reg. %x the value %x\n", dev_i2c.addr, reg_addr, data);
	return 0;

可以看到I2C准备好了,不过我没有外挂I2C设备,所以写数据失败了
image

你的点赞、收藏和评论是对我最大的支持,有问题多多指教,如果有需要Nordic开发板、Nordic的芯片以及Nordic技术支持的可以在个人资料获取我的联系方式,感谢读者支持!
posted @ 2025-09-30 17:25  TedLee  阅读(37)  评论(0)    收藏  举报