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

Example at ...\ncs\v1.4.0\zephyr\samples\display\cfb does not work with SSD1306 wired directly to nRF9160DK

Despite following the procedure listed below, no text appears on the OLED display, despite the driver being able to communicate with the device.

I am using nRF Connect SDK v1.4.0.

I build the example that I copied from {INSTALLDIR}\ncs\v1.4.0\zephyr\samples\display\cfb with the following modifications/additions:

  1. added nrf9160dk_nrf9160ns.overlay custom device tree overlay file
  2. updated prj.conf file to include SSD1306 and to enable the I2C port.

I build the example from within a bash window with the command "west build -b nrf9160dk_nrf9160ns".

After building, I program the nrf9160 with the cfb/build/zephyr/merged.hex.


7317.cfb.zip

Parents
  • Hi, Craig!

    From what I can see your code works. How much voltage are you supplying to the device? I haven't seen the datasheet, but my guess is that 3V is not adequate.

    Best regards,
    Carl Richard

  • I am supplying the OLED with 5V from the nRF9160 header pin.

    The device does display text when connected to an arduino uno and running code that uses the u8g2 library.

    Would you recommend another sample build to try? Any other suggestions?

    Would the /SSD1306-LCD-on-NRF52 project that was mentioned on this devzone work on the nRF9160?

  • Hi again!

    Good. Then that should be OK! Jimmy actually has a series of samples for the nRF9160 where Example 4 shows how the SSD1306 can be used. Have you made sure to include the shield in CMakeLists.txt like this?



    The Zephyr documentation contains more info about the generic SSD1306 shields.

    Best regards,
    Carl Richard

  • Adding the set(SHIELD ssd1306_128x32) causes the device tree overlay to result in errors.

    The new log file from the west build is:

    $ west build -b nrf9160dk_nrf9160ns
    [0/1] Re-running CMake...
    Including boilerplate (Zephyr base (cached)): D:/Users/craig/ncs/v1.4.0/zephyr/cmake/app/boilerplate.cmake
    -- Application: D:/nordicProjects/cfb
    -- Using NCS Toolchain 1.4.0 for building. (D:/Users/craig/ncs/v1.4.0/toolchain/cmake)
    -- Zephyr version: 2.4.0 (D:/Users/craig/ncs/v1.4.0/zephyr)
    -- Found west (found suitable version "0.7.2", minimum required is "0.7.1")
    -- Board: nrf9160dk_nrf9160ns
    -- Cache files will be written to: D:/Users/craig/ncs/v1.4.0/zephyr/.cache
    -- Found dtc: D:/Users/craig/ncs/v1.4.0/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
    -- Found toolchain: gnuarmemb (D:/Users/craig/ncs/v1.4.0/toolchain/opt)
    -- Found BOARD.dts: D:/Users/craig/ncs/v1.4.0/zephyr/boards/arm/nrf9160dk_nrf9160/nrf9160dk_nrf9160ns.dts
    -- Found devicetree overlay: D:/Users/craig/ncs/v1.4.0/zephyr/boards/shields/ssd1306/ssd1306_128x32.overlay
    -- Found devicetree overlay: D:/nordicProjects/cfb/nrf9160dk_nrf9160ns.overlay
    Error: nrf9160dk_nrf9160ns.dts.pre.tmp:572.1-13 Label or path arduino_i2c not found
    FATAL ERROR: Syntax error parsing input tree
    CMake Error at D:/Users/craig/ncs/v1.4.0/zephyr/cmake/dts.cmake:213 (message):
    command failed with return code: 1
    Call Stack (most recent call first):
    D:/Users/craig/ncs/v1.4.0/zephyr/cmake/app/boilerplate.cmake:590 (include)
    D:/Users/craig/ncs/v1.4.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:24 (include)
    D:/Users/craig/ncs/v1.4.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:40 (include_boilerplate)
    CMakeLists.txt:7 (find_package)


    -- Configuring incomplete, errors occurred!
    See also "D:/nordicProjects/cfb/build/CMakeFiles/CMakeOutput.log".
    See also "D:/nordicProjects/cfb/build/CMakeFiles/CMakeError.log".
    FAILED: build.ninja
    D:\Users\craig\ncs\v1.4.0\toolchain\opt\bin\cmake.exe -SD:\nordicProjects\cfb -BD:\nordicProjects\cfb\build
    ninja: error: rebuilding 'build.ninja': subcommand failed
    FATAL ERROR: command exited with status 1: 'D:\Users\craig\ncs\v1.4.0\toolchain\opt\bin\cmake.EXE' --build 'D:\nordicProjects\cfb\build'

  • Hi again!

    I see. I mixed the nRF9160DK and nRF52840DK. You can remove it from the CMakeLists.txt again and try the following overlay instead:



    Best regards,
    Carl Richard

  • I'm facing the same issue. I any solution in sight?

Reply Children
  • Hi!

    As this is a Zephyr sample and not nRF we can't guarantee that it will work out of the box with our devices. Did you try the suggestions I posted above? 

    It should only be a matter of using the correct overlay for the nRF9160.

    Best regards,
    Carl Richard

  • Hi Richard,

    I did try what you and you co-worker suggested above and more, but was unable to get the display working with the nrf9160 dev kit.

    We need to use a low-cost, small display on our new product. If the example is a zephyr example and not a nrf9160 example, can you please provide me and other customers a code example for displaying characters on thr SSD1306 OLED? Can you work with zephyr to fix the example for your customers? Can your developers use a debugger and step through the driver?

    Thank you for continuing to help your customers integrate the ssd1306 into their products that use the nrf9160.

  • Hi again, Craig!

    I understand. I'm now working together with Håkon, who handles your second case on the matter, to solve this. As he has the display and are able to test things I believe we will find a solution soon. Thank you for the patience! 

    Best regards,
    Carl Richard