Hi Robert,

I discovered that the issue is in the ESP32's I2C driver.

First I tested in the BluePill (stm32f103-minimum) and the LCD worked fine.

Editing the esp32_i2c.c and changing the FIFO from 255:

#define I2C_FIFO_SIZE (32)

fixed the error sendblk timeout.

But the LCD image is not good as in STM32 board.

We need to do more some investigation to know why it is happening.

BR,

Alan

On 11/9/22, Robert Alexa <robertalexa2...@gmail.com> wrote:
> Hi Alan,
>
> I've modified my defconfig file so that it looks almost exactly the same as
> the one you mentioned. I'm attaching it to this email so that you can have
> a look at it.
>
> Regarding the I2C address, I've used i2ctool and confirmed that the OLED
> display is discoverable and reachable at 0x3c. This is also consistent with
> the behaviour I've experienced - the ssd1306_sendbyte commands do not fail,
> it's only the block transfers that cause the issue.
>
> Thank you,
> Robert
>
> On Wed, 9 Nov 2022 at 14:33, Alan C. Assis <acas...@gmail.com> wrote:
>
>> Hi Robert,
>>
>> I suggest you to verify if all needed options for SSD1306 are met, you
>> can compare with other boards, i.e.:
>>
>> arm/rp2040/raspberrypi-pico-w/configs/ssd1306/defconfig
>>
>> Also you can enable the i2ctool (CONFIG_SYSTEM_I2CTOOL) to scan your
>> I2C bus to confirm the I2C OLED address.
>>
>> BR,
>>
>> Alan
>>
>> On 11/9/22, Robert Alexa <robertalexa2...@gmail.com> wrote:
>> > Hi,
>> >
>> > I'm trying to set up an OLED SSD1306 128x32 display with an
>> > ESP32-Wrover
>> > board. The display module is connected through I2C and has only 4 pins
>> > exposed: SCL, SDA, VCC, GND.
>> >
>> > My custom config file starts from an esp32-wrover-kit:nsh to which I
>> added:
>> > CONFIG_LCD=y
>> > CONFIG_LCD_DEV=y
>> > CONFIG_LCD_SSD1306_CUSTOM=y
>> > CONFIG_LCD_SSD1306_CUSTOM_DEV_NATIVE_XRES=128
>> > CONFIG_LCD_SSD1306_CUSTOM_DEV_NATIVE_YRES=32
>> > CONFIG_LCD_SSD1306_CUSTOM_DEV_XOFFSET=0
>> > CONFIG_LCD_SSD1306_CUSTOM_DEV_PAGES=4
>> > CONFIG_LCD_SSD1306_CUSTOM_DEV_CMNPAD=2
>> > CONFIG_LCD_SSD1306=y
>> > CONFIG_SSD1306_NUMDEVS=1
>> >
>> > However, I'm encountering an issue at boot time regarding the I2C block
>> > transfer.
>> > ssd1306_setpower: power: 1 [0]
>> > ssd1306_sendblk: ERROR: I2C_TRANSFER failed: -116
>> > board_lcd_initialize: Bound I2C0 to OLED 0
>> > ssd1306_setpower: power: 1 [0]
>> > ssd1306_getplaneinfo: planeno: 0 bpp: 1
>> >
>> > Interesting enough, it seems like the single transfer
>> > (ssd1306_sendbyte)
>> is
>> > working fine, the problem is only with the block transfer. Do you have
>> any
>> > ideas what might cause this?
>> >
>> > Regards,
>> > Robert
>> >
>>
>

Reply via email to