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. The Lounge
  3. Espressif, you're not the boss of me!

Espressif, you're not the boss of me!

Scheduled Pinned Locked Moved The Lounge
designcssgraphicshardwareiot
3 Posts 2 Posters 0 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

    Over a year ago Espressif - the maker of the ESP32 MCUs broke SPI "SDA reads" under their Arduino framework implementation. An SDA read takes a normally write only data line, and reverses it, to read off it. It's a hack, but it's hack that nearly every 3-wire SPI LCD controller uses in order to report the contents of its framebuffer memory/read back from the display. You'd use this feature for example, to alpha-blend or anti-alias your draws. Without it, you're up a creek, unless you just draw everything to bitmaps first, and then send those bitmaps to the display. So I did that. Enter UIX. UIX is a user interface library I didn't want to have to write. It complements GFX, my graphics library, and the primary reason I wrote it is I can no longer reliably do SDA reads on at least on major IoT platform. UIX is a draw on demand framework that .. you guessed it, draws bitmaps and sends them to a display. It's built more to be a stateful, demand draw graphics engine than a UI framework, but you can't have the former without the latter really. I'm not happy about it. That's an extra leg of my website, an extra codebase to maintain, extra docs, extra learning curve for my code's users, etc. All for want of an SDA read. Well, now they've done it again. The ESP32 Arduino 2.0.16 bits are fundamentally slower than previous versions of the framework. I mean my fire demo gets 77 frames per second on a TTGO T1 under Arduino on 2.0.15 and just *29* under 2.0.16 That's not acceptable. Worse, Espressif has officially said they're not supporting PlatformIO packages anymore, so I can't even really submit issue over this and expect anything. Now my solution? Give my library users the option of forgoing Arduino altogether. That means making any ESP32 libraries compatible with both Arduino and the ESP-IDF so users can use the ESP-IDF and not hamstring themselves. I've got I don't know, 20 libs to upgrade? And then several projects to upgrade to be dual platform. I posted a brief example of the sausage being made at the end of the post. This stuff makes me angrier than it really should. Why? I'm not in control of my own code. I feel like a damned marionette just dancing on my strings to the music Espressif decides to play today. All of this is just one more thing pushing me away from the ESP32s altogether. That and their lack of 5GHz WiFi support. Now that the Nordic nrf7002 the ESP32 is quite a bit less appealing.

    #pragma once
    #if __has_include()
    #include
    n

    raddevusR 1 Reply Last reply
    0
    • H honey the codewitch

      Over a year ago Espressif - the maker of the ESP32 MCUs broke SPI "SDA reads" under their Arduino framework implementation. An SDA read takes a normally write only data line, and reverses it, to read off it. It's a hack, but it's hack that nearly every 3-wire SPI LCD controller uses in order to report the contents of its framebuffer memory/read back from the display. You'd use this feature for example, to alpha-blend or anti-alias your draws. Without it, you're up a creek, unless you just draw everything to bitmaps first, and then send those bitmaps to the display. So I did that. Enter UIX. UIX is a user interface library I didn't want to have to write. It complements GFX, my graphics library, and the primary reason I wrote it is I can no longer reliably do SDA reads on at least on major IoT platform. UIX is a draw on demand framework that .. you guessed it, draws bitmaps and sends them to a display. It's built more to be a stateful, demand draw graphics engine than a UI framework, but you can't have the former without the latter really. I'm not happy about it. That's an extra leg of my website, an extra codebase to maintain, extra docs, extra learning curve for my code's users, etc. All for want of an SDA read. Well, now they've done it again. The ESP32 Arduino 2.0.16 bits are fundamentally slower than previous versions of the framework. I mean my fire demo gets 77 frames per second on a TTGO T1 under Arduino on 2.0.15 and just *29* under 2.0.16 That's not acceptable. Worse, Espressif has officially said they're not supporting PlatformIO packages anymore, so I can't even really submit issue over this and expect anything. Now my solution? Give my library users the option of forgoing Arduino altogether. That means making any ESP32 libraries compatible with both Arduino and the ESP-IDF so users can use the ESP-IDF and not hamstring themselves. I've got I don't know, 20 libs to upgrade? And then several projects to upgrade to be dual platform. I posted a brief example of the sausage being made at the end of the post. This stuff makes me angrier than it really should. Why? I'm not in control of my own code. I feel like a damned marionette just dancing on my strings to the music Espressif decides to play today. All of this is just one more thing pushing me away from the ESP32s altogether. That and their lack of 5GHz WiFi support. Now that the Nordic nrf7002 the ESP32 is quite a bit less appealing.

      #pragma once
      #if __has_include()
      #include
      n

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

      Very interesting and a great post about SPI under espressif.

      Quote:

      the maker of the ESP32 MCUs broke SPI "SDA reads" under their Arduino framework implementation

      Was it a bug or a conscious decision by espressif? If a decision, what was the reasoning behind that change? I understand you may not even know that answer.

      Quote:

      Worse, Espressif has officially said they're not supporting PlatformIO packages anymore

      Why have they done that? Are they just saying they don’t care and don’t want to support?

      H 1 Reply Last reply
      0
      • raddevusR raddevus

        Very interesting and a great post about SPI under espressif.

        Quote:

        the maker of the ESP32 MCUs broke SPI "SDA reads" under their Arduino framework implementation

        Was it a bug or a conscious decision by espressif? If a decision, what was the reasoning behind that change? I understand you may not even know that answer.

        Quote:

        Worse, Espressif has officially said they're not supporting PlatformIO packages anymore

        Why have they done that? Are they just saying they don’t care and don’t want to support?

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

        raddevus wrote:

        Was it a bug or a conscious decision by espressif?

        I'm not sure. If I had to guess it's a bug but since it's a "hacky" feature they can't be bothered to make it work again.

        raddevus wrote:

        Why have they done that?

        The scuttlebutt I've heard is one of two things (or maybe both) A) the third party that was building the packages was getting paid by Espressif, and there was disagreement over compensation. I can't verify this. B) (What I found out since making this post) Espressif never officially supported it, but they had it in their docs until it became a nightmare for them because they were getting issue reports for stuff they didn't make. I think this is more likely.

        Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix

        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