8 years, 11 months ago.

D0 states are 0 -> 2V(approx.) and 1 -> 3.3V, links SB62,SB63 ON, how to toggle D0 from 0V to 3V?

#include "mbed.h"

DigitalOut myled(LED1);

DigitalOut LCD_D0(D0);
DigitalOut LCD_D1(D1);
DigitalOut LCD_D2(D2);
DigitalOut LCD_D3(D3);
DigitalOut LCD_D4(D4);
DigitalOut LCD_D5(D5);
DigitalOut LCD_D6(D6);
DigitalOut LCD_D7(D7);
DigitalOut LCD_D8(D8);
DigitalOut LCD_D9(D9);
DigitalOut LCD_D10(D10);
DigitalOut LCD_D11(D11);
DigitalOut LCD_D12(D12);
DigitalOut LCD_D13(D13);
DigitalOut LCD_D14(D14);
DigitalOut LCD_D15(D15);

int main() {
    while(1) {
        //myled = 1; // LED is ON
        //wait(0.2); // 200 ms
        //myled = 0; // LED is OFF
        //wait(1.0); // 1 sec
        
        LCD_D2 = 1; // D2 = 1
        LCD_D1 = 1; // D1 = 1
        LCD_D0 = 1; // D0 = 1
        wait(3); // 3 sec
        LCD_D2 = 0; // D2 = 0
        LCD_D1 = 0; // D1 = 0
        LCD_D0 = 0; // D0 = 0
        wait(3); // 3 sec
    }
}

1 Answer

8 years, 11 months ago.

I think your D0 is also connected to Serial TX of the interface chip (which runs STLink). Default state of TX is high (3.3V), so your low is trying to pull it low, while his high is trying to pull it high, ending up somewhere in between. You would then need to cut the connection to the interface chip, but if possible it might be easier to use a different pin so you keep your serial connection.

Accepted Answer