Friday, 8 September 2017

Problems with a two-diode 3.3V -> 5V level shifting circuit


I'm trying to drive a strip of 57 APA102 LEDs from an ESP8266.


Driving just one LED directly (without level shifting) with a very short (about 10 cm) bus seemed to work, even though the APA102 expects 5V logic.


Now I built what I actually need:




  • the ESP is about 1m away from the strip

  • added diode level shifters for clock and data as per this answer: https://electronics.stackexchange.com/a/82112/18496

  • the circuit is wired correctly, I checked all connections twice.

  • ESP and strip are supplied by a 5V, 7A power supply, with 5V and GND connected on both sides of the strip.


The strip shows wrong colors, though. I think this is caused by the level shifting circuit, which simply can't drive the long signal lines with proper waveforms.


I lowered SPI frequency to about 500 kHz (bit-banged SPI with 1 microsecond delay between clock transitions), but the result remains the same.


It's hard for me to get many of ICs suggested for this kind of level shifting, such as the 74AHCT125 . However, I can get the 74HCT125. It can run off 5V and minimum high level input voltage is 2V. Would that be a suitable chip for this purpose?


Any other things I should try or test?


Voltage levels:




  • The APA102 has a maximum low level input voltage of 0.3 VDD = 1.5V and a minimum high level input voltage of 0.7 VDD = 3.5V.

  • The ESP outputs max 0.1 VIO = 0.33V or min 0.8 VIO = 2.64V. It seems to be able to drive 12mA.




No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...