To design an app for tm4c_os and use SPI on an external device.
I improved the makefile for tm4c_os by developing a module-based makefile wherein the main makefile searches for modules that can add their own files and libraries.
This idea was inspired by a research document which uses module-based makefiles as a solution to a flaw in make projects that causes make to build incorrectly in some circumstances.
For more LCD screen projects, see Number Recognition
Texas Instruments TM4CGH6PM SoC with ARM Cortex-M4
Adafruit USB to TTL Serial Cable - Debug / Console Cable for Raspberry Pi (Product ID 954)
I initially planned to complete this project with an LCD screen from Riverdi. Still, after discovering that their GitHub example code didn't compile, I decided to use a different screen from Matrix Orbital instead. Matrix Orbital had better resources, including multiple GitHub repositories and better-quality data sheets. They also had a USB to SPI driver for Windows, which I used to prove the screen was functional. I used Matrix Orbital's code as a starting point and ported it so that it could work on tm4c_os.
I faced many issues before I got the screen to turn on.
The Matrix Orbital screen does not include an external clock, so sending commands to switch to the external clock prevented it from turning on.
When I tried to debug the SPI using an oscilloscope, I unknowingly caused electrical interference because my lines were not the same length and/or insufficient quality to transmit the SPI without noise.
Once I had the Matrix Orbital screen working, I was able to turn on the Riverdi LCD screen. The Riverdi LCD was slightly different because it had an external clock, and to turn the screen on, you had to provide a backlight voltage of 5V as well as 3v3 Vcc to turn on the screen.
I chose not to iron out the remaining bugs or take the project beyond slightly modifying Matrix Orbitals' Github code. I felt that the only benefit to further development would have been becoming an expert on LCD screens, which was not my goal.
Demonstrated ability to write makefiles with modules
Improved proficiency with SPI software/hardware
Learned to work with LCD screens