修改 0x78 這個值很簡單,但關鍵在于 找到它在代碼中的位置 。0x78 是一個十六進制數,轉換成十進制是 120。
它可能代表很多含義,比如:一個 I2C 設備地址、一個 GPIO 引腳號、一個寄存器地址或數據,或者是一個普通的數值參數。
請按照以下步驟來操作:
第一步:在項目中搜索 0x78
這是最直接的方法。
- 打開項目 :在 VS Code 中打開你的
xiaozhi-esp32項目文件夾。 - 全局搜索 :
- 按下
Ctrl + Shift + F(Windows/Linux) 或Cmd + Shift + F(Mac) 打開全局搜索面板。 - 在搜索框中輸入
0x78。 - 確保搜索范圍是整個項目文件夾。
- 按下
第二步:分析搜索結果
搜索結果會列出所有包含 0x78 的文件和行。你需要根據上下文來判斷哪個才是你想要修改的。
常見的幾種情況和修改方法:
情況一:作為 I2C 設備地址(最常見)
如果你的代碼中出現類似下面的結構,那么 0x78 很可能是一個 I2C 傳感器(比如 OLED 屏幕、加速度計等)的地址。
示例代碼:
#define I2C_MASTER_SDA_IO 21
#define I2C_MASTER_SCL_IO 22
#define I2C_MASTER_FREQ_HZ 400000
#define I2C_MASTER_TX_BUF_DISABLE 0
#define I2C_MASTER_RX_BUF_DISABLE 0
// 在這里找到了 0x78
#define OLED_I2C_ADDRESS 0x78
static esp_err_t i2c_master_init(void)
{
int i2c_master_port = I2C_NUM_0;
i2c_config_t conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_MASTER_SDA_IO,
.scl_io_num = I2C_MASTER_SCL_IO,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = I2C_MASTER_FREQ_HZ,
};
i2c_param_config(i2c_master_port, &conf);
return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}
// ... 在某個函數中使用 ...
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
i2c_master_start(cmd);
// 這里用到了地址
i2c_master_write_byte(cmd, (OLED_I2C_ADDRESS < < 1) | WRITE_BIT, ACK_CHECK_EN);
// ...
如何修改:
直接修改 #define 宏定義的值即可。例如,如果你想把地址改成 0x7A,就修改成:
// 將地址從 0x78 修改為 0x7A
#define OLED_I2C_ADDRESS 0x7A
這樣,所有使用 OLED_I2C_ADDRESS 的地方都會自動生效。
情況二:作為 GPIO 引腳號
0x78(十進制 120)作為 GPIO 引腳號在 ESP32 上比較少見,因為 ESP32 的 GPIO 編號通常在 0-39 之間。但如果是在某些特定的開發板或擴展板的代碼中定義的別名,也有可能。
示例代碼:
// 假設這是一個自定義的引腳編號
#define MY_LED_PIN 0x78
void app_main(void)
{
// ...
gpio_reset_pin(MY_LED_PIN);
gpio_set_direction(MY_LED_PIN, GPIO_MODE_OUTPUT);
gpio_set_level(MY_LED_PIN, 1); // 點亮 LED
// ...
}
如何修改:
同樣,直接修改 #define 宏定義的值。例如,改成 GPIO 2:
#define MY_LED_PIN 2
情況三:作為普通數值或寄存器數據
0x78 也可能是一個函數中直接使用的數值,用于配置某個寄存器或作為一個參數。
示例代碼:
void configure_some_device(void)
{
// ... 假設 dev 是一個設備結構體 ...
// 向設備的某個寄存器寫入 0x78
dev- >write_register(REG_CONFIG, 0x78);
}
如何修改:
直接在代碼行中把 0x78 修改成你需要的值,例如 0x80。
// 將配置值從 0x78 修改為 0x80
dev- >write_register(REG_CONFIG, 0x80);
總結步驟:
- 搜索 :在 VS Code 中用
Ctrl + Shift + F搜索0x78。 - 定位 :根據搜索結果中的代碼上下文,判斷
0x78的用途。 - 修改 :
- 如果它在一個
#define定義中,直接修改這個定義的值。 - 如果它是代碼中硬編碼的數值,直接修改該數值。
- 如果它在一個
- 保存并編譯 :保存修改后的文件,然后重新編譯和燒錄項目(
idf.py build flash)。
重要提示:
在修改任何硬件相關的地址或配置之前,請 務必查閱你的硬件手冊 ,確認正確的地址或參數值。例如,如果你修改的是 I2C 地址,請確保你的硬件設備(如 OLED 屏)的實際地址就是你要修改的值(有些設備可以通過焊接電阻來改變地址)。
審核編輯 黃宇
-
I2C
+關注
關注
28文章
1547瀏覽量
130580 -
代碼
+關注
關注
30文章
4947瀏覽量
73291
發布評論請先 登錄
ESP32-S3 工具鏈+環境配置的最終步驟清單
ESP32S工具鏈
ESP8266和ESP32開發板常見的2種下載方式
使用 LinkBoy 將程序導出為 C 語言代碼并燒錄至 Arduino ESP32 開發板
小智 AI 聊天機器人 (XiaoZhi AI Chatbot)
零知開源——ESP32語音交互系統(AI小智)開發教程
使用stm8作為從機與esp32進行i2c通訊,主機掃描的i2c地址與stm8從機設置的i2c地址不一樣,如何解決?
ESP32開發中,使用ADF環境,系統報錯I2C Bus WriteReg Error和I2C Bus ReadReg Error
I2C總線設備地址設置方法
用MCUXPresso for VS Code插件 從0開始打造HelloWorld

VS Code 中`xiaozhi-esp32` 項目文件夾 修改 I2C 設備地址為 `0x78`
評論