fix #1422 correct i2c max xfer len (size in bits)#1431
Conversation
|
note related, but I need to re-enable |
|
@hathach FYI - you ddn't need to enable MICRO_PY_FRAMEBUF in the build, but if it i not there, then you do need to install the library adafruit_framebuf and the latest adafruit_ssd1306 library. Both are in the latest "Bundle" https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases or in their individual repos: https://github.com/adafruit/Adafruit_CircuitPython_framebuf https://github.com/adafruit/Adafruit_CircuitPython_SSD1306 |
|
ah, I got it, framebuf is now a optional lib instead of built-in. I use the 24 Dec release, which is a few day old :D . @dhalbert |
dhalbert
left a comment
There was a problem hiding this comment.
Thanks for the fix! One Q.
|
@jerryneedell should the docs for SSD1306 also add framebuf as its dependency |
|
@hathach yes -- the dependency should be added. It was hidden before as a builtin. |
|
the ssd1306 docs were updated - we'll be writing a guide soon that will help too |
TWIM0_EASYDMA_MAXCNT_SIZE=16is bit size, which means each xfer can be up to 65K bytes.Issue is caused since it is mistaken as 16 bytes. Which auto break the framebuf data into sub transaction
1 frame data (513 bytes) = Control byte (0x40) + 512 bytes (pixel)
That confuse SSD1306 data parser since data is split in odd position due to control byte.
We won't probably write more than 65KB at a time, so it is safe for 840.
Note for 832: the max size is 255 bytes, SSD lib should write only part of a frame at a time, since it is not possible for i2c driver to do that in the semantic way to conform SSD1306 decoder !!! (not sure).
SSD1306 i2c mode
