Repository navigation
Release 0.2.33 - #350
Merged
Merged
Release 0.2.33#350
Conversation
…a write reports NACK (m5stack#339)
When the first descriptor of a DMA queue is in external RAM and too short to align, execDMAQueue sends it through the CPU. For 65 to 1023 bytes that non-DMA writeBytes copied the data into the flip buffer, and a getDMABuffer() buffer queued after it could be that same buffer, so its contents were overwritten before the DMA read them. Send the head in pieces of at most 64 bytes, which always take the register path. Each piece is first copied to a local word buffer, because the register copy rounds the length up to whole words and would otherwise read past the end of the source. Reproduced on ESP32-S3 with octal PSRAM: queue a 70 or 80 byte PSRAM buffer starting 4 or 6 bytes past a 64-byte boundary, then two getDMABuffer() buffers. Before this change the first getDMABuffer() buffer arrived corrupted every time; after it the readback matches.
… a DMA transfer Port of the develop change to the master layout: the write-back moves ahead of the CPU-written head on every PSRAM-DMA target, and the ESP32-P4 write-back after the descriptor setup is skipped when the buffer is already clean.
The backlight is driven directly by LDO3 (1.8V + 0.1V * N) and does not light below 2.5V (N = 7), so brightness values 1..71 produced a dark screen and 1..4 wrote voltages that can never light it. Map 1..255 onto N = 7..15 instead; 0 still turns LDO3 off and 255 is unchanged (3.3V).
Enabling BUS_OUT_EN into an empty BUS_OUT on a weak USB supply pulls an AXP2101 DCDC under its threshold and the PMIC powers the board off before the display comes up. Pulse BUS_OUT_EN with growing on-time first (the sequence of M5Unified::setExtOutput()), verify the final enable, and only warn on failure.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes
init()of an I2C panel could hang right after a hardware reset and stay hung until the next reset. The I2C state machine was never reset on these chips after a forced STOP. Under ESP-IDF 6 the reset had also been dropped on C5, C6, C61, H2 and P4 (the capability macro moved). (I2C: reset the state machine on the C2/C3 and under ESP-IDF 6 #341)pin_backup_tdid not restore the input routing of a pin: the input selector was compared with the wrong number, sorestore()never put it back. Board detection uses it to restore the pins it probes. (ESP32: pin_backup_t::backup() が入力選択フィールドをピン番号ではなく信号番号と比較している #348, Fix pin_backup_t missing the input routing of a pin #349)execDMAQueue()could overwrite agetDMABuffer()buffer queued after a short PSRAM buffer. (Small fixes: Bus_SPI queue head, board detection cleanups #338)