RP2040에서 HDMI(DVI) 출력을 할수 있는 라이브러리 PicoDVI를 이용하여 W55RP20 SSM 보드에서 HDMI를 출력 하는 테스트를 진행 해 보았다.
W55RP20은 이더넷을 기본 내장하고 있기 때문에 네트웍으로 전송받은 이미지나 데이터를 HDMI 모니터로 출력해서 저렴한 네트웍 광고판을 만들 수 있을것 같다.
HDMI 출력 회로
[RP2040_W5500] HDMI출력 확장 테스트 보드에서는 Arduino 개발 환경에서 테스트 했지만 이번에는 Pico SDK에서 코드를 작성해서 테스트 해보자
#include <stdio.h>
#include <stdlib.h>
#include "pico/stdlib.h"
#include "pico/multicore.h"
#include "hardware/clocks.h"
#include "hardware/irq.h"
#include "hardware/sync.h"
#include "hardware/gpio.h"
#include "hardware/vreg.h"
#include "dvi.h"
#include "dvi_serialiser.h"
#include "common_dvi_pin_configs.h"
//#include "testcard_320x240_rgb565.h"
#include "img_rp2040exp.h"
// DVDD 1.2V (1.1V seems ok too)
#define FRAME_WIDTH 320
#define FRAME_HEIGHT 240
#define VREG_VSEL VREG_VOLTAGE_1_20
#define DVI_TIMING dvi_timing_640x480p_60hz
struct dvi_inst dvi0;
void core1_main() {
dvi_register_irqs_this_core(&dvi0, DMA_IRQ_0);
while (queue_is_empty(&dvi0.q_colour_valid))
__wfe();
dvi_start(&dvi0);
dvi_scanbuf_main_16bpp(&dvi0);
}
int main() {
vreg_set_voltage(VREG_VSEL);
sleep_ms(10);
set_sys_clock_khz(DVI_TIMING.bit_clk_khz, true);
setup_default_uart();
dvi0.timing = &DVI_TIMING;
dvi0.ser_cfg = DVI_DEFAULT_SERIAL_CONFIG;
dvi_init(&dvi0, next_striped_spin_lock_num(), next_striped_spin_lock_num());
// Core 1 will wait until it sees the first colour buffer, then start up the
// DVI signalling.
multicore_launch_core1(core1_main);
// Pass out pointers into our preprepared image, discard the pointers when
// returned to us. Use frame_ctr to scroll the image
uint frame_ctr = 0;
while (true) {
for (uint y = 0; y < FRAME_HEIGHT; ++y) {
uint y_scroll = (y + frame_ctr) % FRAME_HEIGHT;
//const uint16_t *scanline = &((const uint16_t*)img_bmp)[y_scroll * FRAME_WIDTH];
const uint16_t *scanline = img_bmp[y_scroll * FRAME_WIDTH];
//const uint16_t *scanline = &((const uint16_t*)testcard_320x240)[y_scroll * FRAME_WIDTH];
queue_add_blocking_u32(&dvi0.q_colour_valid, &scanline);
while (queue_try_remove_u32(&dvi0.q_colour_free, &scanline));
}
++frame_ctr;
}
}
W55RP20 HMDI 출력 테스트 결과
https://youtube.com/shorts/eDpEfAm8tHE?feature=share
반응형