강좌 & 팁
글 수 2,412
2014.07.26 10:16:36 (*.37.214.48)
42145
지난주에 lcd interface 를 rgb 로 연결해 사용 하는 방법을 설명 했는데요
누군가 그 글을 보고 그대로 했다가 안된다고 할까봐 중요한 한가지 팁을 추가 합니다.
사실 그대로 하면 분명히 화면은 나올 것 입니다.
하지만, 어디서부터 그 그림이 시작될지는 알 수 없기 때문에 정상적으로 이미지가 나왔다면 거의 기적입니다.
그렇기 때문에 VSINC 신호를 잡아 LOW 일때를 시작으로 이미지를 LCD 에 그려주어야 합니다.
( vsinc 를 다른 gpio 로 다시 입력되도록 회로를 설계해 두어야 합니다. )
또한 이미지를 그려주기 시작하는 순간에 LCD 첫번째 주소를 가리켜야 합니다.
결국, 부트로더에서 CPU Interface 로 lcd 에 이미지를 띄웠다면,
부팅이 된 이후에 아래와 같은 과정을 다시 켜쳐야 합니다.
1. lcd 에 이미지를 그려넣을 시작 주소를 설정 합니다.
2. vsinc 입력을 while() 루프로 감시해 low 가 된 순간 MUX IC 를 제어해 RGB INTERACE 의 신호가 LCD 로 출력되도록 절체 시켜야 합니다.
물론 이 방법은 문제점이 있습니다.
바로 외부의 노이즈나 다른 이유로 단 한번의 we 신호가 밀리면, 다시 복구가 되지 않는 다는 문제점 입니다.
여기서 cs 한 구간의 데이터는 화면 1 프레임이 되고, we 는 한 줄의 이미지가 되는데요
만약 800x480 해상도라면,
cs 한 구간에는 800x400 픽셀의 데이터가 나가고, we 한 구간에는 800 픽셀의 데이터가 나가게 됩니다.
cs 가 한번 틀어지더라도 화면의 처음부터 이미지를 그리기 때문에 문제가 없지만,
we 가 틀어지면 틀어진 타이밍 만큼 줄의 수가 틀어지므로, 결국 이미지가 틀어지게 됩니다.
바로 이 we 타이밍을 처음 위치로 복구 시킬 방법이 없다는 것이 문제의 핵심 입니다.
정확히 말하면 시스템은 we 가 틀어졌다는 것을 확인 할 방법이 없습니다.
확인 할 수 있는 것은 인간의 눈 뿐이고, 확인한 순간 이를 바로 잡을 수는 있다는 것 입니다.
(확인 할 방법을 누군가 안다면 댓글로 한 수 가르쳐 주세요 )
바로 다시 cpu interface 로 변경해 시작 주소를 다시 잡아주고, 다시 rgb interface 로 절체 시키면 되겠습니다.