用C/C++修改I2C默认的SDA和SCL针脚

首先要说明一点:Pico 有两个 I2C,也就是两套 SDA 和 SCL。这点你可以在针脚图中名字看出,比如下图的 Pin 4 和 Pin 5是 I2C1 的,而默认的 Pin 6 和 Pin 7 是 I2C0 的。

请添加图片描述

默认情况下是只开启了第一个 I2C,也就是只有 I2C0 的针脚是可以使用的。如果这种情况下,你哪怕修改了针脚,但不是 I2C0 的,也是不会正常运行的。

正确修改 I2C 的 SDA 和 SCL 默认针脚的方法有两种,还有一种不推荐的方法(但也是方法)。

最推荐的是在CMakeLists.txt中设置,因为这部分是控制所有代码的,这样可以避免被 SDK 中的一些库的设置替换掉:

set(PICO_DEFAULT_I2C 1)
set(PICO_DEFAULT_I2C_SDA_PIN 18)
set(PICO_DEFAULT_I2C_SCL_PIN 19)

还有一种是在源代码中,不推荐这种是因为可能会被替换掉。将下面的代码放到导入库部分的后面,这样被替换之后可能会再次替换回来:

#define PICO_DEFAULT_I2C 1
#define PICO_DEFAULT_I2C_SDA_PIN 18
#define PICO_DEFAULT_I2C_SCL_PIN 19

这样后面的代码就会使用这个值,而不是默认的45

默认值是在头文件pico-sdk/blob/master/src/boards/include/boards/pico.h中进行设置的,设置默认值的代码部分如下:

#ifndef PICO_DEFAULT_I2C_SDA_PIN
#define PICO_DEFAULT_I2C_SDA_PIN 4
#endif
#ifndef PICO_DEFAULT_I2C_SCL_PIN
#define PICO_DEFAULT_I2C_SCL_PIN 5
#endif

当然你可以直接来修改pico-sdk中的默认值,但是不推荐,这样会搞乱的。

希望能帮到有需要的人~

你可能感兴趣的:(目前无法分类的小探究,C/C++,树莓派,pico)