esp32-cam-demo
esp32-cam-demo copied to clipboard
Documentation on ESP32 DMA I2S Camera mode
Two status questions if I may:
- Is the ESP32 Technical Reference Manual as it relates to I2S Camera DMA considered complete?
- Is the ESP-IDF support of ESP32 camera mode considered complete?
The back story: I have been studying the Camera support and this excellent sample on and off for a few months now and I'm making very slow progress. I study the code and contrast that against the documentation in the Technical Reference and then examine the data structures in the ESP-IDF ... but after a day or two I get frustrated and walk away to another area of the ESP32. I seem to find that the Technical Reference Manual is the briefest of summaries and while it may be technically accurate I'm afraid I have to say that is consumer unfriendly. Obviously, there is the opportunity for this just to be my lack of comprehension of what I am reading ... so if there other community members who feel they have a grasp off it, I'd dearly love to spend time with you.
Another thought I had was that this area is still being baked ... and hence this issue/question ... what is the state of I2S Camera DMA documentation and support? Is this component still "cooking" or is it considered complete? If complete, then we'll see how we can improve. If still being developed, then I'll back away until such time as it is in a more consumable state.
The second question, the one relating to ESP-IDF. It seems that the camera samples are "poking around" at the I2S registers which feels much lower level compared to the other ESP-IDF functions. Are there plans to encapsulate I2S camera DMA into higher level ESP-IDF functions?
Is the ESP32 Technical Reference Manual as it relates to I2S Camera DMA considered complete?
I wouldn't be able to write this driver if all I had was the description in the TRM. However at this time the intersection of sets of people who can write good technical documentation, who understand how I2S camera mode works, and who don't have any higher priority tasks, is essentially nil.
Same goes for camera mode support in IDF. Theoretically this code, after some refactoring, could be included into IDF. However I fear that if I do so, i will sign up for a non-trivial amount of time spent supporting people who wish to use this code. Unfortunately, this is one of the drivers that is more susceptible to wiring, signal integrity, and other hardware issues which will be hard to troubleshoot when someone reports them. So until we have a team member with enough capacity to maintain this code, i am not planning to bring it into the IDF.
As far as the code goes, i think the part in camera.c is more or less complete. Maybe it can be refactored and split into three parts: top-level camera initialization, I2S DMA support, and line filters. The remaining part of the code could use some improvements: better embedded web server, run-time configuration of camera registers, support for more camera modules, etc. I don't have specific plans for this work, but i intend to do some improvements from time to time.