I have built an oscilloscope using a Feather M0 and 3.5 inch tft display (pid:2050). You can see it in operation at https://www.youtube.com/watch?v=s2gPyz4bXjo. I realize I could get a Chinese kit cheaper than even the cost of the display but what fun would that have been.
I’m pretty happy with the way it is right now but I want to take the scope to the next level. The current problem I’m trying to address has to do with showing individual points across the screen. When looking at a relatively slow-moving signal it is satisfactory to put a pixel at each location representing the time value and the voltage value. But if the signal has a high slew rate (relative to the sweep speed) the voltage at “this” point in time can be quite a bit different that the voltage at the previous point in time. This makes for pixels that are quite a distance apart and thus a display that is difficult to see. I believe the solution is to draw a line between the points rather than just lighting up individual points.
Trouble is drawing lines seems really slow. I’m using SPI since I don’t have the pins to use the 8-bit interface. I’m using SW SPI since my early speed testing showed SW to be quicker. But when I went back to look over my speed testing I rediscovered when I draw individual points SW SPI is indeed faster. But if I draw a line, HW SPI is faster (as long as the line is straight). A straight line is one that has either x1==x2 or y1==y2. I understand that the HX8357 library takes advantage of features of the controller chip that allow drawing n consecutive points faster than n individual points. What I don’t understand is why there would be a difference in speed advantage of SW SPI vs HW SPI for lines vs points.
You can find the GitHub repo here.
Featured Adafruit Products!
3.5″ TFT 320×480 + Touchscreen Breakout Board w/MicroSD Socket – HXD8357D: Add some jazz & pizazz to your project with a color touchscreen LCD. This TFT display is big (3.5″ diagonal) bright (6 white-LED backlight) and colorful! 480×320 pixels with individual RGB pixel control, this has way more resolution than a black and white 128×64 display, and double our 2.8″ TFT. As a bonus, this display has a resistive touchscreen attached to it already, so you can detect finger presses anywhere on the screen. Read more.