[STM32F4_ZE_NET] FSMC 테스트 - TFT LCD 출력 테스트
STM32F4의 FSMC를 이용하면 TFT-LCD를 버스 방식으로 제어 가능하다.
STM32F4의 FSMC는 4개의 64MB로 할당 가능하다.
STM32F405 FSMC 블록도
STM32F405 FSMC 테스트 초기화 코드
초기화 코드
#define LCD_BANK_ADDR ((uint32_t)0x6C000000)
#define _LCD_CMD_OUT(Data) (*(uint16_t *) (LCD_BANK_ADDR) = Data)
#define _LCD_DAT_OUT(Data) (*(uint16_t *) (LCD_BANK_ADDR) = Data)
#define _LCD_DATA(p) (*(volatile uint16_t*) (LCD_BANK_ADDR + (p<<1)))
#define Lcd_Cmd(reg) _LCD_DATA(0x0000) = reg;
#define Lcd_Data(dat) _LCD_DATA(0x0002) = dat;
테스트 코로 테스트 해 보면 CMD출력 할때 RS(A1)가 low가 되는것을 확인 할 수 있다.
while(1)
{
Lcd_Cmd(0x0200);Lcd_Data(0x0000);
Lcd_Cmd(0x0201);Lcd_Data(0x0000);
Delay(delay_time);
}
/CS와 /WR 신호를 확인 해 보면 4개의 /CS,/RS가 출력 되는것을 확인 할 수 있다.
타이밍을 최적화 해 보면 300ns 내에 4개의 명령이 수행 되는것을 확인 할 수 있다.
/* Timing */
Timing.AddressSetupTime = 4;
Timing.AddressHoldTime = 4;
Timing.DataSetupTime = 8;
Timing.BusTurnAroundDuration = 6;
Timing.CLKDivision = 2;
Timing.DataLatency = 2;
LCD에 이미지 한장 출력하는데 7.5ms 정도 소요된다.
TFT-LCD에 BMP 파일 출력 해보면 정상 적으로 잘 출력 되는것을 확인 할 수 있다.
반응형