@Mr.Blinky, So I finally have my flash arrived.
Flashed an example from your repository.
It works but I have an issue with the boot-loader menu.
I can see only a splash screen. But after doing any navigation screen turns black.
However navigation actually occurs on the background (its just not visualised ) because I can burn a game from flash and play it.
My set up is: ProMicro (Standard wiring), ssd1309 screen, CS outs of flash and screen are connected to transistor (as mentioned a couple of comments above).
For some reason 2SA1015 transistor didn’t work for me so I found one with a similar parameters (russian KT209K).
Can not figure out where is the problem. Does anyone have a working prototype with a transistor?
Here is how my navigation looks like at the moment:
Just to double check: CS pin of the flash card should be connected to the 0 PORTD2 of the ProMicro and to base pin of the transistor via 10K resistor; and CS pin of the screen should be connected to the collector pin. Is it correct?
Never mind the question above. I had enough of those playings with a transistor and resistors so solved it radically. I followed @Cheungbx example and soldered 3 additional wires directly to the chip on ProMicro. Now everything works like a charm.
Just curious if anyone has a working prototype with a transistor…
Big thanks to Mr. Billy Cheung and to the whole community!!!
Oops, I misread and thought you were using an npn as a rtl inverter. The way you originally had it wired is correct for a pnp transistor. You may want to double check with the datasheet for your specific transistor though that the 10k base resistor is enough to bias the base with enough current to switch the transistor on in the saturation region (you may have to decrease the resistance if it isn’t turning on fully).
Thanks for the reply, @Mr.Blinky. Good to hear that it works and someone can benefit from this. In the end I’m glad that I broke out those wires. Currently I’m in process of soldering everything permanently on prototype board after total verification of all functions.
So you have connected the OLED chip select line to GND ? In which case I would expect you to see some garbage/distorted screen because all the data written to flash would also be written to the display.
The thing is both flash and the display share the same SPI bus. only one of the devices should be active at one time.
With the standard wiring the OLED chip select line is not available and the OLED chip select is connected to GND causing the display to be always selected. This is fine when there is no flash chip used. But when a flash chip is connected the OLED chip select must be inactive high whenever the flash is selected.
A way to achieve this is by connecting an inverted flash chip select to the OLED chip select. An inverter can be made out of a transistor or by using a (single gate) inverter chip.
Yes if you use RX as flash chip select (CART_CS) then you connect it to the transistors base resistor and the flash chips chip select pin. The schematic is just for generating an inverted chip select for the OLED display.
@facelessloser, I would really recommend you to give a try braking out three additional wires directly to chip - it’s quite easy and works great.
Check those out: ArduWideBoy + InchBoy
The other problem with alternative wiring is that you wont be able to patch binaries for ssd1309 screen. So the solution is three additional wires + selecting Leonardo/Micro board while flashing.