M0216SD-162SDAR2-1 Jumper Settings
J2 open
J3 short (solder bridge)
J5 short
J4 = 10k (default)
J6 = 0 (default)
J7 = open (default)
I have the connector signals as follows:
Pin 1: Gnd
Pin 2: +5V
Pin 3: Sdata
Pin 4: Strobe
Pin 5: N/C
Pin 6: Sclk
I am sending the following 16-bit groups after startup:
0xF838 (Function Set)
0xF806 (Display Entry Mode)
0xF80C (Display Enable)
0xF801 (Clear Display)
0xFA20, 0xFA30, 0xFA31, etc (Character data)
Display remains blank. Any suggestions on what to check? Many thanks.
-
Mike,
Your jumper settings seem fine.
Would you possibly be able to share your commands for how you send bits to the display?
Are you also pulling the STB pin low for the 2 Bytes you send to the display?0 -
I am using a CPLD to generate the SPI-type interface, running the clock at about 32kHz.
Reset state is strobe high, clock high.
Strobe asserted low 1/2 clock period, then clock is set low.
16 cycles on clock, then strobe deasserted high 1/2 clock period later.
Data is driven on falling edges of clock, held stable on rising edges. Sending MSB first.
strobe is deasserted one clock period between write cycles, clock held high during idle period.
I am waiting approx. 250 microseconds between power application and transmission of Function Set command.0 -
Update:
Presently the +5V power regulator is set up for a soft-start rise time of 15ms. I see in the datasheet that the max rise time is specified at 10ms. Could the 15ms rise time cause the malfunction I described?
Thanks!0 -
Mike,
That could be a possibility, however, you could always delay writing to the display until the voltage reaches 5 V0 -
I recently got one of these M0216SD-162SDAR2-1 and am having a problem with the same symptoms as Mike_B back in 2016 - the display does not seem to turn on at all. I'm trying to use the display by bit-banging serial with an arduino.
I've bridged J3 and J5 and left the other jumpers alone.
I'm using pins as follows:
Pin 1: Gnd
Pin 2: +5V
Pin 3: Serial I/O
Pin 4: Strobe
Pin 5: not connected
Pin 6: Clock
I set the pins as output, and then send the following bytes (same as Mike_B was sending above)
send_byte(B11111000);
send_byte(B00111000);
send_byte(B11111000);
send_byte(B00001100);
send_byte(B11111000);
send_byte(B00000001);
my send_byte function is:// transmit byte serially, MSB first
void send_byte(unsigned char data)
{
output_low(PORTD, 3); //begin write cycle
delay(1);
int i;
// send bits 7..0
for (i = 0; i < 8; i++)
{
// consider leftmost bit
// set line high if bit is 1, low if bit is 0
if (data & 0x80)
output_high(PORTD, 2);
else
output_low(PORTD, 2);
// pulse clock to indicate that bit value should be read
output_low(PORTD, 4);
delay(1);
output_high(PORTD, 4);
// shift byte left so next bit will be leftmost
data <<= 1;
delay(1);
}
output_high(PORTD, 3); //end write cycle
output_low(PORTD, 2); //end write cycle
output_high(PORTD, 4); //end write cycle
delay(1);
}Anyone have any thoughts on what i might be doing wrong?
0 -
Hi kpengwin,
Have you been able to resolve this issue?0 -
kpengwin, Mike_B,
First off check your jumper settings. Default is J3 -> J7 Open, Shorted, Open, shorted, open. You said you shorted J3 and J5 for serial operation which is good, but did you open J4? J4 needs to be opened for serial ops, and these ship with it shorted with a 10k resistor. REMOVE IT!.
As long as your delays are long enough and you don't brown out from current draw like I did then it'll work great. I have succesfully used a PIC16F1619 and using the hardware SPI module with this. Even at clock speeds up to 2 MHz, the published max.0 -
Thanks for your post!
This information will be very useful for others facing the same issue.
Best Regards,0
Please sign in to leave a comment.
Comments
8 comments