RP2350은 클럭 속도가 133Mhz에서 150Mh으로 빨라 졌고 Cortex-M33 코어로 FPU 성능이 향상되었다고 한다.
우선 GPIO속도가 빨려 졌기 때문에 GPIO로 제어 하는 TFT LCD 출력 테스트를 해 보면 좋을것 같다.
RP2040으로 TFT-LCD 테스트예제를 이용해서 테스트 해보자
[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 예제를 테스트 해보자
[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이 좋은것 같다.