I still haven’t gotten the OLED display working. I am beginning to question Pinouts and even if the driver IC listed by the seller(s) is correct. At this point I can’t even tell if the device is seeing my commands. I checked the board for shorts/solder bridges and even replaced the OLED display. I still can’t get anything to show up on the display.
I think a reasonable test would be to measure current to the display and send it a power on command. If I am sending commands correctly, I should see a change in current draw. After that, I will try working through the commands available in the datasheet for a SSD1332 chip looking for a change in the display or the current draw.
Just like refactoring the code, It’s time to refactor the electronics design. I checked on my feature request on the Espressif forum. Nothing new has happened. So I am considering adding an external ADC to measure voltages.
Planning and Research:
I think 0.1 volts is an accurate enough measurement for both VPP and Vtarget. I will look for an inexpensive ADC with at least 8 bits of resolution. Also speed is not very important. I am also looking into the possibility of using a switching voltage regulator to control the Vpp supply. This will require that I only have to measure the voltage while setting it up and then rely on the regulator to make the adjustments. This means more research.
I am not satisfied with the level shifter. It is working with the resistors. I think I can reduce costs and make the level shifter more effective if I go with a more specific design. I’ll use a chip that is very compatible with SPI for the SPI pins, and another kind of chip for I²C signals. For wider busses, I’ll use a SPI port expander on an interface board between the programmer and the target.
Rather than overlap the SPI with the HSPI, I think it will be better to use the HSPI pins directly. This reduces the number of available IO pins but makes firmware development easier.
As I looked at the schematic, I realized, not using HSPI really limits the number of IO I can have. I started looking for ways to reduce the pins I needed. I noticed that the SPI RAM won’t help with speed much if at all, If I limit data to the block size of the target being programmed, I can probably store it within the built in RAM.
The SPI RAM is gone! The connections to Pins 9-14 are gone! I re-labeled pins so I know where HSPI pins are located. I moved the analog select control to share with the Vpp drive low control line. I tied GPIO0 to an IO pin.
Finally I put the switching voltage regulator into the design. I used a FAN5331 on my OLED breakout PCB. I used that chip with a transistor on the feedback voltage so that I can control the output voltage with the ESP-12F.(This is experimental)
I’ve uploaded the new schematic to Github. Use the hardware on GigHub link in the right column of this page to go get it. I am looking for a tool that will view KiCad files on Github.
Have you used a chip in a way that isn’t specified? I would love to hear about your successes and failures.