내장형 하드웨어/ARM

ARM 보드와 LCD 연결 및 소스 작성

동화다아아 2011. 7. 13. 17:53
- 브레드 보드에 ARM과 LCD 연결전 결선 확인

 

⇒ PA16 - PIN.1(VSS-GND)

⇒ PA17 - PIN.2(VDD) / PIN.3(V0)

⇒ PA18 ~ PA23 - PIN.7~14(BUS)

⇒ PA24 - PIN.15(LEDK)

⇒ PA25 - PIN.16(LEDA)




PIN DESCRIPTION

No. 

Symbol

 Function

 

1

VSS

 GND(0V)

 전원에 연결

2

VDD

 Power supply for Logic(+5.0V)

3

V0

 Power supply for LCD drive

4

RS

 Register selection

 (H: Data register , L :Instruction register)

 arm에 연결

5

R/W

 Read/write selection

 (H: Read(CPU ← LCM) , L: Write(CPU → LCM))

 arm에 연결

6

E

 Enable signal for LCM

 (Enable 신호가 들어오면 LCD가 켜진다.)

 전원 or arm

7~14

DB0~DB7

 Data Bus lines

 arm에 연결

15

LEDK

 Power supply for Backlight(0V) - LED Cathode

 전원 or arm

16

LEDA

 Power supply for Backlight(+5.0V) - LED Anode

 전원 or arm



- LCD PIN 납땜

 

- 브레드 보드에 연결

 

- PIN4(RS), PIN5(R/W), PIN6(E) 결선 - 각각 PA8, PA9, PA10



 

- source insight 실행 순서
⇒ New project → Browser 선택 → Add and Remove에서 파일선택 추가 → close
⇒ 추가파일
 → AT91SAN7S256.h(include)
 → cstartup.s
 → elf32_littlearm.lds
 → main.c
 → lowlevel.c
 → makefile
 → project.h(include)


- LED PIN 번호와 ARM 보드 연결 과정

32               24

23     BUS      16

15

제어 8

7                  0

 

 

 

10

9

8

 

 

1

1

1

1

1

1

1

1

 

E

N

TW

R

S

11111111 << 16


RS    1 0000 0000 (0x100)

RW  10 0000 0000 (0x200)

EN 100 0000 0000 (0x400)

BS 1111 1111 0000 0000 0000 0000 (FF0000)


#define PIOA_PER      (*(volatile unsigned int *)0xFFFFF400)
#define PIOA_OER     (*(volatile unsigned int *)0xFFFFF410)
#define PIOA_PPUDR   (*(volatile unsigned int *)0xFFFFF460)
#define PIOA_CODR    (*(volatile unsigned int *)0xFFFFF434)
#define PIOA_SODR    (*(volatile unsigned int *)0xFFFFF430)

#define  CLCD_RS     (1 << 8// 0x100 (PA8)
#define  CLCD_RW     (1 << 9// 0x200 (PA9)
#define  CLCD_EN     (1 << 10// 0x400 (PA10)
#define  CLCD_BS     (0xFF << 16// FF0000 (PA16~23)


void OUT_INIT(void)
{
        
// Configure the pin in output
        
PIOA_OER  = CLCD_BS || CLCD_RS || CLCD_RW || CLCD_EN; 

                                        // 11가닥의 선이 활성화(PIN을 출력용으로)
        // Set the PIO controller in PIO mode instead of peripheral mode
        
PIOA_PER  = CLCD_BS || CLCD_RS || CLCD_RW || CLCD_EN; 

                                        // PIN enable
        // Disable pull-up
        
PIOA_PPUDR  = CLCD_BS || CLCD_RS || CLCD_RW || CLCD_EN; 

                                        // 해당하는 PIN의 불이 꺼진다.
}

int main(void)
{
        
volatile unsigned int iCount = 0;

        OUT_INIT();

        
while (1)
        {
                PIOA_CODR 
= 0x00000001;
                
for(iCount=0;1000000 >= iCount; ++iCount);

                PIOA_SODR 
= 0x00000001;
                
for(iCount=0;1000000 >= iCount; ++iCount);
        }
        
return 0;
}