I'm trying to interface a SparkFun Serial Enabled 16x2 LCD (3.3V) to a Beaglebone Black. Since the beagleboard has on-board 3.3v and ground, I used that for the power to the LCD. For the 3.3v TTL serial, I used Pin 21 on the P9 header (aka SPIO_D0). I've encountered an odd issue with this setup, and I need help with a possible solution, as I'm still trying to learn electronics.
The issue is that if the LCD is plugged into pin 21 during boot up, Linux starts running really slow. I found out that if I plug the pin in after (1) linux has booted, and (2) I've initialized that pin to serial mode from the software, then Linux runs fine. So it seems that pin being initialized to serial mode is a must for the OS to not crawl to a halt. And that seems that it's not the default setting during boot up - which causes any operations in a terminal (such as dmesg) take an excessively long time to complete until that pin has been initialized properly. I have no idea why that would happen, and I haven't been able to find a way around it.
So, as one possible solution, I figured I'd use one of the other GPIO pins and a transistor to turn on the LCD after I've initialized pin 21. The problem here is that the LCD really wants 3.3v, and I'm getting an 0.5v drop across the transistor, which drops the voltage too low to power the LCD. I suppose I could use the 5v line, a transistor, and a 3.3 voltage regulator, though that seems like it's probably not the best solution, since the board already has on-board 3.3v power. I suppose I don't know if this approach would actually fix my problem...
Does anybody have any suggestions on how to fix this issue?