Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Other Discussions
  3. The Weird and The Wonderful
  4. GDMA on the ESP32S3

GDMA on the ESP32S3

Scheduled Pinned Locked Moved The Weird and The Wonderful
rubyperformancehelpworkspace
5 Posts 2 Posters 2 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    honey the codewitch
    wrote on last edited by
    #1

    I'd just like to point out a gem I found underneath a semi-private portion of the ESP-IDF development framework. The headers for it reside under a folder called "esp_private" The magic sauce here is access to a very cool coprocessor of sorts. What it does is take a series of pins, which it then treats as bits - High = 1, Low = 0, like that. Then you give it a clock frequency and a memory buffer, and that little coprocessor will traverse that memory buffer in the background flipping those pins off and on based on the data in the buffer you gave it. It all happens as rapidly as you need it to, and in the background. You can use it to power things like RGB interfaced LCD controllers, Hub75 LED matrices, or anything else where you need a battery of digital signaling you can control with a byte buffer. Very cool. Very undocumented. I'm busy hacking my way through it because while Espressif exposed a higher level RGB LCD panel interface that uses it under the covers, that doesn't work in my environment as the tech is very new. The older tech is incomplete and not functional in that capacity, but it's what I'm stuck with so I'm going to the metal myself. But that's not important. The takeaway here is the amazing technology, and the fact that they're in no hurry to expose it to downstream consumers of the platform.

    To err is human. Fortune favors the monsters.

    R 1 Reply Last reply
    0
    • H honey the codewitch

      I'd just like to point out a gem I found underneath a semi-private portion of the ESP-IDF development framework. The headers for it reside under a folder called "esp_private" The magic sauce here is access to a very cool coprocessor of sorts. What it does is take a series of pins, which it then treats as bits - High = 1, Low = 0, like that. Then you give it a clock frequency and a memory buffer, and that little coprocessor will traverse that memory buffer in the background flipping those pins off and on based on the data in the buffer you gave it. It all happens as rapidly as you need it to, and in the background. You can use it to power things like RGB interfaced LCD controllers, Hub75 LED matrices, or anything else where you need a battery of digital signaling you can control with a byte buffer. Very cool. Very undocumented. I'm busy hacking my way through it because while Espressif exposed a higher level RGB LCD panel interface that uses it under the covers, that doesn't work in my environment as the tech is very new. The older tech is incomplete and not functional in that capacity, but it's what I'm stuck with so I'm going to the metal myself. But that's not important. The takeaway here is the amazing technology, and the fact that they're in no hurry to expose it to downstream consumers of the platform.

      To err is human. Fortune favors the monsters.

      R Offline
      R Offline
      raddevus
      wrote on last edited by
      #2

      Very interesting. How did you discover this undocumented functionality? I'm a hacker (the good kind) and I'm always curious about how people find the stuff that is hidden. Also, I'm working on a ESP32 thing right now because you advised that it would be a good platform for my BLE work. It's going really well and I can't believe I've finally made a break-thru. Anyways, while looking at a small ESP32 dev board at amazon, I stumbled upon this picture from amazon that is absolutely hilarious[^]. Can you advise on that use of the ESp32 with those tweezers? :laugh: :laugh: I believe he is trying to dip his ESP32 switches into the main board which will surely create a new computing platform. :laugh: :laugh:

      H 1 Reply Last reply
      0
      • R raddevus

        Very interesting. How did you discover this undocumented functionality? I'm a hacker (the good kind) and I'm always curious about how people find the stuff that is hidden. Also, I'm working on a ESP32 thing right now because you advised that it would be a good platform for my BLE work. It's going really well and I can't believe I've finally made a break-thru. Anyways, while looking at a small ESP32 dev board at amazon, I stumbled upon this picture from amazon that is absolutely hilarious[^]. Can you advise on that use of the ESp32 with those tweezers? :laugh: :laugh: I believe he is trying to dip his ESP32 switches into the main board which will surely create a new computing platform. :laugh: :laugh:

        H Offline
        H Offline
        honey the codewitch
        wrote on last edited by
        #3

        I was trying to figure out if the ESP LCD Panel API in the ESP-IDF went underneath SPI Master actually (it doesn't) but while I was there I was looking at their i8080 bus code, and saw it used this thing called GDMA and gathered what it did from context, at least in broad strokes. I then did a bit of googling around and found other people hacking it, using it to drive LED matrices and such. :) I recommend the ESP32-S3 for all new development. At least until the ESP32-P4 is released. It has more pins, a more refined hardware architecture, including GDMA, and native USB 1.1 support, so you don't need to fab a serial UART USB bridge to program the damned thing. Just wire D- and D+ of your USB to pins 19 and 20 respectively.

        To err is human. Fortune favors the monsters.

        R 1 Reply Last reply
        0
        • H honey the codewitch

          I was trying to figure out if the ESP LCD Panel API in the ESP-IDF went underneath SPI Master actually (it doesn't) but while I was there I was looking at their i8080 bus code, and saw it used this thing called GDMA and gathered what it did from context, at least in broad strokes. I then did a bit of googling around and found other people hacking it, using it to drive LED matrices and such. :) I recommend the ESP32-S3 for all new development. At least until the ESP32-P4 is released. It has more pins, a more refined hardware architecture, including GDMA, and native USB 1.1 support, so you don't need to fab a serial UART USB bridge to program the damned thing. Just wire D- and D+ of your USB to pins 19 and 20 respectively.

          To err is human. Fortune favors the monsters.

          R Offline
          R Offline
          raddevus
          wrote on last edited by
          #4

          Very cool and thanks for the advice on the boards. I'm just getting started and my first need is a device that supports BLE (i know many people hate Bluetooth, but every phone has it and this is an app that will be used by phones). By the way, is there a good way to decide if a ESP32 supports BLE? Or is that basically built-in/ always present like the wifi connection? I know there are too many h/w companies to say for sure but is it basically an expectation of the platform? Just curious, I know BLE is not something you're interested in. thanks

          H 1 Reply Last reply
          0
          • R raddevus

            Very cool and thanks for the advice on the boards. I'm just getting started and my first need is a device that supports BLE (i know many people hate Bluetooth, but every phone has it and this is an app that will be used by phones). By the way, is there a good way to decide if a ESP32 supports BLE? Or is that basically built-in/ always present like the wifi connection? I know there are too many h/w companies to say for sure but is it basically an expectation of the platform? Just curious, I know BLE is not something you're interested in. thanks

            H Offline
            H Offline
            honey the codewitch
            wrote on last edited by
            #5

            BLE is present on every ESP32 in the line, as far as I know. I'd definitely go with an S3 board, just so you're future proofing the experience you get.

            To err is human. Fortune favors the monsters.

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • World
            • Users
            • Groups