일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 패턴 인식
- BAM
- Google App Engine
- Neural Network
- 증강현실
- 가상화
- 동아리
- Python
- 물걸레로봇청소기추천
- 신경망
- Bidirectional Associative Memory
- Friendship
- SSM
- 패턴인식
- 나르왈프레오
- 갤럭시탭S8울트라
- 신경회로망
- 인공지능
- 삼성
- 삼성소프트웨어멤버십
- 하이퍼바이저
- 빅데이터
- 구글 앱 엔진
- NarwalFreo
- 파이썬
- 삼성전자 소프트웨어멤버십 SSM
- hopfield network
- 고려대학교
- 멤버십
- 물걸레자동세척로봇청소기
- Today
- Total
정보공간_1
[2기 대전 김호원] Concerto MCU 3.클럭 설정과 GPIO 본문
[2기 대전 김호원] Concerto MCU 3.클럭 설정과 GPIO
알 수 없는 사용자 2012. 10. 16. 18:27안녕하세요 대전 멤버십 21기 김호원 입니다.
저번 포스팅에서 프로젝트 생성과 환경설정에 대해서 마쳤고
이번에 포스팅 주제는 클럭 설정과 GPIO에 관련된 것으로 하겠습니다.
먼저 Concerto MCU의 클럭 설정부터 진행하겠습니다.
아래 내용의 자료들은 ti.com에서 인용 하였습니다.
전체 시스템의 클럭은 다음과 같이 4-20MHz의 Xtal을 PLL로 클럭을 증가시킨 다음 나눠서 사용을 하
게 됩니다.
M3같은 경우는 최대 100MHz C28은 150MHz까지 시스템 클럭을 사용 할 수 있습니다.
하지만 위에 구조를 보게 되면 PLLSYSCLK이 최대가 150MHz이지만 M3쪽으로 클럭을 나눌 수 있는 경
우가 1, 2, 4밖에 없으므로 150MHz와 100MHz둘다 최대 클럭으로는 사용을 할 수가 없습니다. 아래의
표가 사용 할 수 있는 클럭의 경우에 수에 대해서 나와 있습니다.
간단하게 클럭을 설정해 보면 먼저 PLLSYSCLK은
PLLSYSCLK = Fref * SYSPLLMULT /2 /SYSDIVSEL divider
다음과 같은 식으로 됩니다.
이것 대로 계산을 해보면 제가 만들 회로는 Fref를 외부 20MHz를 장착해서 사용하고 있기 때문에
150에 75를 설정해야 되면 150 = 20 * SYSPLLMULT /2 /SYSDIVSEL divider 이므로
SYSPLLMULT /2 /SYSDIVSEL divider 7.5 가 되야 됩니다. SYSDIVSEL divider 는 1로 설정하고 나면
SYSPLLMULT 가 15가 되면 됩니다. 그리고 M3는 C28계산한 것에 / M3SYSDIVSEL divider 이거만 추가 되므로
/ M3SYSDIVSEL divider 가 2가 되면 150/75가 됩니다.
클럭 설정등 기타 전체적인 MCU의 설정은 M3에서 해서 사용을 하게 됩니다.
M3부분에서 클럭을 설정하고 C28쪽에서는 하지 않습니다.
먼저 M3는 75MHz C28은 150으로 설정을 해보면 아래와 같은 형태가 됩니다. 위에 설명한 방법대로
설정을 해놓았습니다. 먼저 Xtal클럭에 * 0x0f를 해 15를 곱하고 전체 시스템 클럭은 /1해서 C28쪽에
주고 M3에는 /2를 해서 75로 만들어서 클럭을 주었습니다.
SysCtlClockConfigSet(SYSCTL_USE_PLL | (SYSCTL_SPLLIMULT_M & 0xF) |
SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_2);
다음과 같이 설정을 하게 되면 100/100으로 사용이 됩니다.
SysCtlClockConfigSet(SYSCTL_USE_PLL | (SYSCTL_SPLLIMULT_M & 0xA) |
SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_1);
다음으로 간단하게 LED를 이용해서 GPIO를 사용 하는 방법에 대해서 진행 하겠습니다.
GPIO는 아래 그림과 같이 구성이 되어 있습니다. 기본적으로는 M3에서 모든 권한을 가지고 있어서
C28에서 핀을 사용하기 위해서는 M3에서 설정을 해주어야 되고 C28에서 Pull up을 사용하기 위해서
는 M3에서 설정을 해 주어야 합니다.
일단 RAM 부팅으로 하겠습니다. 다음 포스팅에는 RAM부팅과 Flash부팅에 대해서 설명 하겠습니다.
M3쪽에서는 특별한 것 없이 GPIO라이브러를 인클루드 하고 사용을 하면 됩니다.
저는 H PORT에 LED를 붙여 놓아서 이걸로 진행하겠습니다.
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH) PORT에 클럭을 주어서 사용 할 수 있도록 하고
GPIOPinTypeGPIOOutput(GPIO_PORTH_BASE, 0xff) 출력으로 설정 합니다.
GPIOPinWrite(GPIO_PORTH_BASE, 0xff, 1); 3번째 파라메터에 0을 주면 LOW가 되고 1을 주면 HIGH가
됩니다.
간단하게 위의 코드를 돌려보면
테스트 보드를 제작 한지가 오래되어서 LED가 끝부분이 고장이 났네요..;
다음과 같이 깜박이게 동작을 하게 됩니다.
C28에서 핀을 사용하려면 M3에서 C28로 권한은 넘겨 주어야 합니다.
이런 방법으로 핀 하나씩 설정을 할 수 있고 아래처럼 할 수도 있습니다.
GPIOPinConfigureCoreSelect(GPIO_PORTH_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT);
먼저 M3에 이 코드가 있는 소스를 다운로드 하고
GpioG1CtrlRegs.GPBDIR.bit.GPIO48 = 1; 사용할 Pin을 출력으로 설정
GpioG1DataRegs.GPBCLEAR.bit.GPIO48 = 1; 출력을 LOW로 합니다.
GpioG1DataRegs.GPBSET.bit.GPIO48 = 1; 출력을 HIGH로 합니다.
위의 사진과 동일하게 동작을 하게 됩니다.
이번 포스팅에서는 클럭 부분과 GPIO부분에 대해서 간단하게 사용을 해봤는데 다음 포스팅에는
RAM과 FLASH 부팅과 TIMER에 대해서 정리해서 올리겠습니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[2기 대구 최진원] Constructor & Destructor (0) | 2012.10.17 |
---|---|
[2기 부산 이환승]Django를 이용한 Google App Engine 개발. -2- (0) | 2012.10.16 |
[2기 광주 박정태]Arduino 의 모든것#2 (0) | 2012.10.15 |
[2기 광주 조영진] C++ Template 활용 3번째 (0) | 2012.10.15 |
[2기 수원 이동열] VMWare의 Virtualization (0) | 2012.10.15 |