본문 바로가기

RaspberryPi/RP2350

[RP2350_W6100 SM] TFT LCD (COM26T2844) 테스트 -Julia Set Fractal calculation

RP2350은 클럭 속도가 133Mhz에서 150Mh으로 빨라 졌고 Cortex-M33 코어로 FPU 성능이 향상되었다고 한다. 

우선 GPIO속도가 빨려 졌기 때문에 GPIO로 제어 하는 TFT LCD 출력 테스트를 해 보면 좋을것 같다.

 

RP2040으로 TFT-LCD 테스트예제를 이용해서 테스트 해보자

https://nexp.tistory.com/3872 

 

[RP2040 SSM] TFT LCD (COM26T2844) 테스트

EXP_4030_LCD_HDMI 확장 보드를 이용하면 12핀 SSM-Type EVM에서 TFT LCD보드 제어를 할 수 있다. 표준 핀맵의 확장 핀맵은 아래와 같이 구성 하였다. 소스코드는 https://github.com/adafruit/TFTLCD-Library 를 참고 수

nexp.tistory.com

 

 

동일 코드 인데... LCD 출력이 나오지 않는다.

인터페이스 보드가 달라서 그런가?

SM NET EXP 보드로 변경하고 핀정의를 다시 설정 했다.

//SM NET
#define LCD_LAT_BIT						22
#define LCD_LAT_PORT					
#define LCD_LAT_ON()				  sbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_LAT_OFF()					cbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_DATA_LATCH()				LCD_LAT_ON();LCD_LAT_OFF();

#define LCD_EN_BIT						20
#define LCD_EN_PORT						
#define LCD_ENABLE()					cbi(LCD_EN_PORT, LCD_EN_BIT);
#define LCD_DISABLE()					sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT						//BIT8
#define LCD_RST_PORT					//PORTB
#define LCD_RST_ON()					//Sbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_OFF()					//Cbi(LCD_RST_PORT, LCD_RST_BIT)

#define LCD_RS_BIT						24
#define LCD_RS_PORT						
#define LCD_RS_OFF()					cbi(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_RS_ON()						sbi(LCD_RS_PORT, LCD_RS_BIT)

#define LCD_WR_BIT						7
#define LCD_WR_PORT						
#define LCD_WR_OFF()					cbi(LCD_WR_PORT, LCD_WR_BIT);lcd_delay()
#define LCD_WR_ON()						sbi(LCD_WR_PORT, LCD_WR_BIT);lcd_delay()

#define _LCD_DAT_OUT(Data)				PORTA = (PORTA&0xFFFF00FF) | (Data);\
                                  LCD_DATA_LATCH();\
                                 	PORTA = (PORTA&0xFFFF00FF) | ((Data&0xFF)<<8);

 

 

이미지 1장 출력할때 걸리는 시간을 표시 해서 확인하니 11ms 가 소요된다.

12.5ms 이내면 출력을이 안되는데.. RP2350의 GPIO 토글 속도가 너무 빨라서 그런것 같다. 

uint32_t   Begin_Time, End_Time, User_Time;

void loop() {
    digitalWrite(LED_BIT, 1);
    
    Begin_Time = micros();
	Disp_Full_Color(Red);
	End_Time = micros();
    
    digitalWrite(LED_BIT, 0);
    
    User_Time = End_Time - Begin_Time;

    Serial.print("Execution ends : ");
    Serial.println((float)User_Time / 1000., 3);

    Delay(100);
    Disp_Full_Color(Green);
    Delay(100);
    Disp_Full_Color(Blue);
    Delay(100);
}

 

 

 

 

기존에는 lcd_delay()를 사용하지 않았어도 되는데 RP2350은 GPIO속도가 너무 빨라 NOP() 함수 추가가 필요할것 같다.

#define _NOP()          asm("nop")
#define _NOP2()         asm("nop");asm("nop")
#define _NOP5()        asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")

#define lcd_delay()     _NOP2()

 

 

NOP추가후 LCD가 정상 출력 되는것을 확인 할 수 있다.

 


GPIO속도는 조금 빨라 졌는데... 좀더 개선된 FPU성능을 테스트 하기 위해 예전에 테스트 했던 Julia Set Fractal calculation 예제를 테스트 해보자

 

https://nexp.tistory.com/2961

 

[STM32H7 EVM] FPU test - Julia Set Fractal calculation

STM32H7 에서 FPU 성능을 좀더 테스트하기 위해 Julia Set Fractal Calculation을 LCD에 출력하는 테스트를 해 보았다. STM32H7 EVM FPU성능FPU_SPEED 테스트 참고 STM32H7에서 구동시켜 보면... 그렇다면 하드웨어 핀

nexp.tistory.com

 

 

https://youtube.com/shorts/qghsOOF-iLE

 

 

테스트 결과 Julia Set 연산속도가 14.8ms로 측정이 된다. 참고로 Cortex-M4코어 STM32F4 보드에서 테스트한 결과 28ms 보다 2배 정도 빠르다. 가격대비 성능비로 보면 RP2350이 좋은것 같다.

 

 

 

반응형