ESP32软件映射一个IO的输出到另一个IO的输入

ESP32 所有处理器都带有 IO MUX 功能,也就是 IO 可以随意绑定绝大部分内部功能和信号。所以就可以用未使用的内部信号绑定两个 IO,让其中一个 IO 的输出直接输出到另一个 IO 当作输入。这样,无需物理连接,就可以直接用来测试相关程序。

绑定一个输出 IO 到输入信号:

esp_rom_gpio_connect_in_signal(gpio_a, SIGNAL_IDX, false);

这里的 SIGNAL_IDX 需要在芯片对应的 soc/gpio_sig_map.h 文件中选择 SIG_IN_FUNC 开头的索引值,比如 ESP32 的 SIG_IN_FUNC228_IDX。不同芯片的可用索引值不一样。

然后将这个信号输出到另一个 IO:

esp_rom_gpio_connect_out_signal(gpio_b, SIGNAL_IDX, false, false);

输入和输出都有参数可以选择如何反转 IO 信号。

如果不需要映射,恢复输出信号的 IO 映射:

esp_rom_gpio_connect_out_signal(gpio_b, SIG_GPIO_OUT_IDX, false, false);

SIG_GPIO_OUT_IDX 的值通常是 0x100。但其实不同的驱动,IO 也会绑定到其他的信号上,所以需要参阅相关驱动代码来恢复映射设置。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据