Using arduino hardware serial for GU7000

Stingpie  Aug 19, 2021

Hello, I am trying to connect more advanced microcontrollers to my GU7000, and the arduino library that comes with the display didn't seem to work with the microcontroller I was using (RP2040). I looked into the library, and it looks like the serial interface is implemented in software. Is there any good reason for this? I've tried using the hardware serial library to interface with the VFD, and I've been able to display characters, but there are weird quirks with it. For example, after every character I send, I have to send an FF byte to actually display the character. In addition, the character codes seem to be backwards. 

I am using the earlphilhower raspberry pi pico compiler. 

here is the code I have written so far:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial1.setRX(17);
  Serial1.setTX(16);
  delay(500);
  Serial1.begin(115200);
  
  init();
  clear();
  
  
  
}
 void loop() {
  // put your main code here, to run repeatedly:
  delay(500);
  clear();
  for(char i=32;i<255; i++){
    
    
    
    delay(1);
    
    text(i);
  }
  
}

void print(String s){
  for(byte i=0; i     command(s[i]);
  }
}
void text(char c){
  command(255-c);command(255);
}

void command(char c){
  Serial1.write(c);
  
}
void init(){
  command(255-0x1b);command(255-0x40);
}
void clear(){
  command(255-0x0c);
  
}

Noritake VFD  Aug 19, 2021

Hello Stingpie,

The GU-7000 Arduino code library has not been tested with the RP2040.Therefore, there may be some nuances when using this library.

The GU-7000 Arduino code library was created a while ago, so I am unable to ask the original developer why the interface is software-based.

It seems you are flipping the command byte bits.

0x1B = 0b00011011

0xFF - 0x1B = 0xE4 = 0x11100100

Can you check your GU-7000 product number? I would like to check the display's communication polarity.

The product number is located somewhere on the PCB, usually on the back. It is formatted similar to this: GU140X32F-7000B

Stingpie  Aug 19, 2021

yes, It's a GU256x64D-7000BX

Noritake VFD  Aug 20, 2021

Thank you.

According to its datasheet, the GU256x64D-7000BX display's asynchronous serial interface can accept RS-232 level input as seen below:

However, it seems your host board is communicating using CMOS level signals. Which is why you need to invert your data via software.

Assuming your host board is using 5V signals, then you need to invert your TX/RX communication signals. Afterwards, software data inversion will not be necessary. This may also eliminate the need to send an extra 0xFF data byte.

As a side note: the GU-7000 Arduino code library will automatically invert the communication level signals based on the display generation number. (7000, 7003, etc.)

Stingpie  Aug 20, 2021

Thank you. I included a 74HC04, which allowed me to interface with the VFD. I was even able to do a little bit of color dithering! I think I'm gonna have a lot of fun with this. 

Noritake VFD  Aug 20, 2021

That is great to hear! Glad the 74HC04 solved your issue.

If you have any other questions or issues, feel free to create another thread.

Have fun!