Embedded Computing
  • About
  • Blog
  • Hardware
    • Which Platform?
    • Controller Platforms >
      • Adafruit Platform
      • Arduino Plaform
      • BBC micro:bit
      • Espressif Platform
      • iLabs Platform
      • Raspberry Pi Platform (MCU)
      • Seeed Platform
      • Silicon Labs Platform
      • Teensy Plaform
    • Computer Platforms >
      • BeagleBone Platform
      • Raspberry Pi Platform (SBC)
      • UDOO Platform
    • Peripherals >
      • Shields
      • Grove System
      • Sensors
      • Actuators
    • Displays >
      • E-Paper Displays
      • Reflective Displays
      • TFT Displays
      • LCD Displays
    • Legacy Platforms >
      • chipKIT Plaform
      • 4D Systems Platform
      • Intel Platform
      • LaunchPad Plaform
      • BoosterPacks for LaunchPads
      • LightBlue Bean
      • Maple Plaform
      • Mediatek Platform
      • Microsoft Azure IoT DevKit
      • Particle Platform
  • Software
    • Exploring RTOS with Galaxia >
      • Event Library
      • Semaphore Library
      • Mailbox Library
      • Timer Library
      • Clock Library
      • SWI Library
      • Task Library
    • Ultra-Low Power with EnergyTrace >
      • Ultra-Low Power with MSP430
      • Ultra-Low Power with Energia MT and Galaxia
    • Using Integers Instead of Reals
    • Going Python?
  • IoT
    • IoT Platforms: Which Hardware? >
      • Matter with Silicon Labs MG24
    • IoT Services: Which Solution? >
      • Recommended IoT Solutions
      • Platform-Specific IoT Solutions
      • Other IoT Solutions
      • Not tested IoT Solutions
      • Notification Solutions
    • Get Date and Time from Internet with NTP
    • Fast and Easy WiFi Connection with QR-Code
  • Tools
    • How to Start?
    • Reference >
      • Asking for Help
      • Boards Pins Maps
      • Ruler
      • Boards and Plugs
      • I²C Logic Level Converter
      • Standards for Connectors
    • Training >
      • Texas Instruments Workshops
      • Embedded Systems: Shape The World — MOOC edX UTAustinX UT.6.02x
      • Embedded Systems - Shape The World: Microcontroller Input/Output — MOOC edX UTAustinX UT.6.10x
      • Embedded Systems - Shape The World: Multi-Threaded Interfacing — MOOC edX UTAustinX UT.6.20x
      • Real-Time Bluetooth Networks: Shape the World — MOOC edX UTAustinX UT.RTBN.12.01x
      • Systems Thinking with Texas Instruments Robotics System Learning Kit
    • Books >
      • Getting Started with the MSP430 LaunchPad
      • Getting Started with Arduino
      • Arduino Cookbook
    • IDE >
      • The Battle of IDEs
      • More Options
      • Assessing the Next Generation of IDEs
      • Tools for Documentation
    • Equipment >
      • Saleae Logic Analyser
      • Rigol DS1102E Oscilloscope
      • XDS110 Debug Probe with EnergyTrace​
      • Segger J-Link Programmer-Debugger
      • Nordic Power Profiler Kit II
  • Projects
    • Libraries >
      • Master I²C Software Library
      • Date and Time Library
      • highView Library Suite
      • Others Libraries
    • smartDevices >
      • I²C smartColours Smart Sensor
      • I²C smartRFID Smart Sensor
      • I²C smartLED Display
      • I²C smartControls Smart Device
      • I²C smartWiFi Smart Device
      • I²C smartBLE Smart Device
      • I²C smartNode Smart Device
    • IoT Projects >
      • Remote E-Paper Weather and Message Board
      • Typie-Walkie with LoRa and E-Paper Screen
      • Typie-Walkie with E-Paper Screen
      • Remote e-Paper Pictures Panel
      • Remote e-Paper Messages Panel
      • Industrial IoT Project
      • Remote Contactless Temperature Monitor
      • Using Node-RED for IIoT
      • Low Power Home Network Weather Monitoring
      • Updated Low Power Home Network Weather Monitoring
      • Weather and Security Station with Blynk
      • SensorTag to Blynk Using Node-RED
      • Pervasive Reporting
    • AI Projects >
      • Colour Recognition with Neural Network
    • Other Projects >
      • Air Quality Monitoring
      • Driving a Large E-Paper Display with a Compact Xiao RP2040
      • Low-Power E-Paper Weather Station
      • Portable Particulate​ Matter Monitor
      • FRAM-based E-Paper Screen Controller
      • General Purpose 3.5" Screen
      • Colour Recognition with Neural Network
      • A Low Power Weather Station
      • Digital Volt-Amp-Watt Meter
      • Mobile Measurement with LCD Display
      • Screen with SRAM for GUI
      • Volt-Amp-Watt-Meter for Grove
      • Multi-Touch Project with CapTIvate

General Purpose 3.5" Screen

Current offer on general purpose screens for the LaunchPad eco-system is rather limited. Most of the screens available are highly specialised.
  • The Kentec 3.5" SPI screen doesn't include a touch controller, and is thus incompatible with the CC3200 LaunchPad.
  • The Sharp Memory Display only offers monochrome 128x128 pixels and contrast is rather hard to read.
  • The Pervasive Displays e-paper screens are perfect for ultra-low power applications, offer monochrome and Black-White-Red variants, but require almost all the pins available.
So I decided to build my own general purpose screen.
Picture

Requirements and Specifications

I set the following requirements...
  • Good quality 3.5" screen
  • Touch
  • As few used pins and as many shared buses​ as possible
  • Total target cost < USD30
  • Compatible with existing libraries.
...which translate into the following specifications:
  • 320 x 480 pixels x 16-bit colours
  • Capacitive touch with haptic feed-back
  • Connection with shared SPI and I²C buses
  • Off-the-shelf components
  • Support of the LCD_screen Library Suite

Hardware

The screen module comes from East Rising and includes the capacitive touch with its I²C controller, a micro-SD slot and provisions for two Flash memories.


Picture

Screen Controller

The controller of the screen is the ILI9488 from Ilitek, connected through SPI. 

​The ILI9488 was rather strange to deal with: some parameters for the interface are defined with hardware shunts, while other parameters are set through software commands.


​As always, the Saleae logic analyser was of great help in debugging the communication.
​
Picture

Touch Controller

The capacitive touch controller by FocalTech is embedded into the flat cable of the screen. It is connected through I²C.

I faced no special issues while developing the library. However, the data-sheet mentions features I was unable to implement, like pressure measurement and gesture recognition.
Picture
A second SPI port connects the micro-SD card, and the two EEPROMs.

The board provisions pads for the recommended Flash Winbond W25Q128FV with 128 Mb or 16 MB in SOIC package. The Flash U2 chip exposes write-protect and hold signals, contrary to the Font U1 chip.

I faced an unexpected issue while integrating the screen, the micro-SD card and the W25Q128FV Flash on the same SPI bus.

While each component worked as expected separately, that was no longer the case when combining them. The MISO output of the ILI9488 wasn't floating (hi-z) and was thus interfering with the MISO signal from the micro-SD card and the W25Q128FV Flash.
Picture
In order to solve the conflict on the MISO signals, I used an analog switch to select between the two lines. This seems to be a common issue with SPI, as mentioned at Better SPI Bus Design in 3 Steps.

Haptic Controller

Please refer to the I²C Haptic Controller page.


Right: The DRV2605L tested with an linear resonant actuator (LRA).
​
Picture

Software

I faced no major issues adding support for this screen to the LCD_screen Library Suite, despite the rather confusing data-sheets for the screen controller and the touch controller.

Adding haptic feed-back to the LCD_GUI library was very easy. The DRV2605L includes a library of 123 different effects, with 5 variants for ERM and one variant for LRA.

​I tested three haptic motors: one ERM and two LRA, of which one branded as a genuine replacement 
Taptic Engine for iPhone 6s, as detailed at the I²C Haptic Controller page.

​
Right: The DRV2605L tested with an eccentric rotating motor (ERM).
Picture
The tests use the standard panel with one slider, an on-off button, a bar-graph, a label and an exit button.

The haptic feed-back works as follow:
  • A short tick acknowledges the touch on all elements,
  • A strong click confirms the change of the on-off button after 100 ms, 
  • A buzz varies in intensity according to the position of the slider. 

​
Right: A hard copy of the screen used for tests and validation.
Picture
Total consumption remains under 100 mA.

​This validates the use of a 3.3 V regulator on the screen and the connection to the 5 V power rail provided on pin 21, as some LaunchPad boards can't provide such power on 3.3 V.
Picture

​Finalised and Working Screen

For an unknown reason, the DRV2605L stopped working when soldered on the final board. Removing a soldered component is always a tricky operation. I replaced it for a new one, which worked as expected.

The targeted board was the MSP432 LaunchPad. Unfortunately, the SPI is facing many bugs, even after implementing the suggested solution for the mismatched modes. Luckily, the screen works fine on the Tiva C LaunchPad. 

Picture

Links

  • Buy Display - East Rising website
  • FocalTech website
  • ​Ilitek website
  • Texas Instruments DRV2605L haptic controller​ product page
Picture
Picture
Picture
Picture
Posted: March 20, 2018
​Updated: 
March 23, 2018; April 20, 2018; June 04, 2018; August 4, 2018
Powered by Create your own unique website with customizable templates.