Trouble porting ILI9341 8bit parallel driver

I've been spending a long time trying to write a driver for the ILI9341 8080 8bit bus interface but all I can't seem to get the display to do anything at all. I'm just seeing a white screen no matter what I do. At this point I am starting to wonder if the module is broken but as I'm new to embedded development and zephyr, it's equally likely that I am doing some dumb mistake. The module I'm using is this: Elegoo 2.8 Inch Touch Screen (manual and code). Zephyr already has a drive for the ILI9341 SPI interface, but this module uses an 8bit bus interface so I can't use it.

I connect it directly on top of my nrf52840dk as a shield.

In my latest attempt, I tried to use an existing C library and adapt it to Zephyr. You can see this attempt here: https://github.com/olalonde/ili9341wip/commit/f22f22b156fa5a4ff0d0c560078464946eca5214

Unfortunately, all I'm seeing is a white screen no matter what I do. I'm hoping someone can have a look at my code and immediately spot a dumb error... Maybe there's something wrong with my device tree files for example?

Otherwise, any tip on what to do next? I'm a bit stuck. Thanks.

  • Hi,

     

    The shield has pinout for normal SPI pins. Have you checked with the manufacturer if it is at all possible to use this in a SPI mode instead of a parallel mode?

    I'd recommend scoping the pins to see if there's any abnormal behavior.

     

    Kind regards,

    Håkon

  • Troubleshooting White Screen Issue with ILI9341 8-bit Parallel Driver

    If you're encountering a white screen while porting the ILI9341 8-bit parallel driver, try the following steps:

    1. Check Connections: Ensure all data and control pins are correctly connected and that the power supply meets the module's specifications.

    2. Device Tree Configuration: Verify that your device tree file correctly defines the data bus and control pins according to your hardware setup.

    3. Initialization Code: Review your initialization code against the ILI9341 datasheet. Ensure you perform a proper reset and configure all required registers.

    4. Data Transmission: Confirm that your data sending function is implemented correctly, paying attention to command/data modes and timing.

    5. Debugging Output: Add debug statements to your code to track execution and print register values during initialization.

    6. Reference Examples: Look for known working examples or libraries to compare against your implementation.

    7. 3D Scanner for Prototyping: If you have a prototype, consider using a 3D scanner (like the MIRACO Plus) to create an accurate model of your display module, which can help with circuit design and connection layout. www.revopoint3d.com/.../support-download

    8. Community Support: If issues persist, seek help from developer forums or GitHub, providing detailed information about your hardware and code.

    By following these steps, you should be able to identify and resolve the issue with your ILI9341 display. Good luck!

Related