This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

need help with oled and NRF52 DK

Hi, i was interfacing oled with nrf52 board. I got some example and modified bit to use it with GCC. But it is now working. Oled not at all starting. oled is 0.96 inch, I2C based 128x64. Vdd = 5v sda = p0.26 scl = p0.27

Here is code github.com/.../

Parents
  • Hi,

    The problem seems to be that you are using the TWI driver in non-blocking mode, but you do not have any mechanism implemented to make sure that the previous transfer is done before starting a new transfer. If you check the return code of your calls to nrf_drv_twi_tx() in ssd1306_command(), you will see that you get a lot of error code 0x11 - NRF_ERROR_BUSY. This leads to that the commands is not sent to the OLED.

    A simple fix to this problem is to switch to blocking mode for the TWI instance. This is done by passing NULL to event_handler argument of nrf_drv_twi_init().

    Best regards,

    Jørgen

Reply
  • Hi,

    The problem seems to be that you are using the TWI driver in non-blocking mode, but you do not have any mechanism implemented to make sure that the previous transfer is done before starting a new transfer. If you check the return code of your calls to nrf_drv_twi_tx() in ssd1306_command(), you will see that you get a lot of error code 0x11 - NRF_ERROR_BUSY. This leads to that the commands is not sent to the OLED.

    A simple fix to this problem is to switch to blocking mode for the TWI instance. This is done by passing NULL to event_handler argument of nrf_drv_twi_init().

    Best regards,

    Jørgen

Children
Related