esp32 余弦发生器的使用问题
Posted: Mon Dec 23, 2024 9:37 am
我打算用 rust + embassy 使用 esp32 dac 的余弦发生器(cw)。查阅了 rust 的 esp-hal 库,里面并没有提供 cw 的抽象与实现,dac 的 hal 也没有相关的函数,于是打算自己实现。
参考了 https://github.com/krzychb/dac-cosine 的源码,编译、烧录后验证确实产生了波形。分析代码,里面调用了 `dac_rtc_pad_init()` 函数(位于 esp-idf 的 dac_common_legacy.c 中),函数中再调用了 `rtc_gpio_init()` 函数(位于rtc_io.c中),函数里面再调用了 `io_mux_enable_lp_io_clock()` 函数(位于io_mux.c中),里面又调用了 `rtcio_ll_enable_io_clock()` 函数。
这个 rtcio_ll_enable_io_clock() 里面的实现代码在哪?我找不到了,无法弄清楚要启用 cw 前,具体需要初始化 rtc_gpio 所需要的步骤,手册(esp32 技术参考手册版本5.2)里也没写。手册里图 29.9 只描述了启动 cw 的过程,但没有 rtc gpio 的初始化过程。
大家有谁知道初始化 rtc gpio 具体需要完成哪些步骤吗?
参考了 https://github.com/krzychb/dac-cosine 的源码,编译、烧录后验证确实产生了波形。分析代码,里面调用了 `dac_rtc_pad_init()` 函数(位于 esp-idf 的 dac_common_legacy.c 中),函数中再调用了 `rtc_gpio_init()` 函数(位于rtc_io.c中),函数里面再调用了 `io_mux_enable_lp_io_clock()` 函数(位于io_mux.c中),里面又调用了 `rtcio_ll_enable_io_clock()` 函数。
这个 rtcio_ll_enable_io_clock() 里面的实现代码在哪?我找不到了,无法弄清楚要启用 cw 前,具体需要初始化 rtc_gpio 所需要的步骤,手册(esp32 技术参考手册版本5.2)里也没写。手册里图 29.9 只描述了启动 cw 的过程,但没有 rtc gpio 的初始化过程。
大家有谁知道初始化 rtc gpio 具体需要完成哪些步骤吗?