Connecting display via USB-C

Hello,

i want to get familiar with the Portenta H7, so i ordered one and now i´m playing a little bit around, before starting a "CAN-BUS" project in future.

I got connection to the board, I got 2 LED´s on the different cores running, everything fine so far.

My idea was now to connect a HDMI display via USB-C to the board, so i ordered a "USB-C to HDMI" cable.
Then, i loaded the "Envie_video_coreboot.ino" example from the libraries, got it compiled and uploaded.

Next, I connected my display via the cable to the board,... and nothing happened.

I added some lines in the example to see a little bit:

#include "Portenta_Video.h"
#include "SDRAM.h"
#include "image_320x240_argb8888.h"
#include "mbed.h"

struct edid recognized_edid;

mbed::DigitalOut video_on(PK_2);
mbed::DigitalOut video_rst(PJ_3);

void setup() {

  // added for debugging
  pinMode(LEDR, OUTPUT);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDB, OUTPUT);
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDG, HIGH);
  digitalWrite(LEDB, HIGH);

  // put your setup code here, to run once:
  delay(1000);
  video_on = 1;
  delay(10);
  video_rst = 1;
  delay(10);

  int ret = -1;
  video_on = 0;
  delay(10);
  video_rst = 0;
  delay(100);

  while (ret < 0) {

    // added for debugging
    digitalWrite(LEDB, LOW);

    video_on = 0;
    delay(10);
    video_rst = 0;
    delay(100);
    video_on = 1;
    delay(100);
    video_rst = 1;

    // added for debugging
    digitalWrite(LEDB, HIGH);

    ret = anx7625_init(0);
  }

  // added for debugging
  digitalWrite(LEDB, HIGH);
  digitalWrite(LEDG, LOW);

  anx7625_dp_get_edid(0, &recognized_edid);
  anx7625_dp_start(0, &recognized_edid, EDID_MODE_800x600_59Hz);

  SDRAM.begin(getFramebufferEnd());

  // added for debugging
  digitalWrite(LEDG, HIGH);

  while (1) {
    stm32_LCD_DrawImage((void *)texture_raw, (void *)getNextFrameBuffer(), 300,
                        300, DMA2D_INPUT_RGB565);
    stm32_LCD_DrawImage((void *)texture_raw, (void *)getNextFrameBuffer(), 300,
                        300, DMA2D_INPUT_RGB565);
    delay(500);

    // added for debugging
    digitalWrite(LEDR, LOW);
    delay(500);
    // added for debugging
    digitalWrite(LEDR, HIGH);
  }
}

int i = 0;

void loop() {
  delay(1000);

  i = random(0, 0xFFFFFF);
  printf("now: %d\n", millis());

  delay(1000);
}

What I could verify:
Board is powered ;), CPU is running in general.
What I see is a periodic flashing blue LED now (about 200ms ON, about 3-4seconds OFF).

I tried:

  • Connecting the display via "USB-C to HDMI Cable" to the board
  • Connecting the board via an USB-C Adapter i normally use with my Laptop and dual HDMI monitors
  • Connecting my monitor via the cable to the board

Only the flashing blue LED on the board, but no signal on the display/monitor,
which means the software gets no positive response from the "anx7625_init" function

My questions:
Should it work to drive a HDMI monitor with (just) a "USB-C to HDMI connector" or is the more intelligence required between?

How far should the software run, even with no monitor connected? My suggestion was, the software runs to, and in the endless loop indipendend from any connected device on the USB-C port, but i have absolutely no idea how grafic-adapters work.

I would be thankful fo all help.

regards,
Martin

[edit] removed mistakely copied line from code

Howdy

My understanding is that the USB-C alt mode is pushing displayport, rather than HDMI?

I'm looking for anything that documents this feature, it's about all I'm interested in with the Portenta, and seems hugely undocumented...

I've tried with a USB-c to displayport cable and I can't seem to get it working.
I've also tried with a startech adaptor (CDP2DPUCP), no luck either.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.