나만의 CAN 네트워크 구현(하)
2010년 04월호 지면기사  / 글│밥 보이스(Bob Boys) bob.boys@arm.com / Keil & RVDS Tools 프로덕트 매니저 ARM

CAN 데모 소프트웨어

MDK-ARM 소프트웨어의 최신 버전은 http://www.keil.com/ update/rvmdk.asp에서 무료로 내려 받을 수 있다. 먼저 이 소프트웨어를 PC에 설치하자.
Keil은 또한 CAN 컨트롤러를 제공하는 NXP ARM 프로세서 기반 디바이스와 다양한 8051 프로세서를 위한 시뮬레이션 소프트웨어를 제공한다. 루미나리(Luminary) 프로세서가 지원되지만, ULINK짋2나 ULINK-ME 어댑터가 있거나 혹은 Luminary USB 온보드 JTAG 어댑터에 연결된 루미나리 평가 보드를 사용해야 한다.
웹사이트 www.st.com/stm32에 게시된 Reference Manual RM0008 문서에는 ST CAN 모듈에 대한 전체 기술정보가 나와 있다. 다른 제조업체들도 자체 웹사이트에 유사한 문서를 게시해 놓고 있다.
Cortex-M3 프로세서용 ST CAN 컨트롤러
그림 1은 CAN 컨트롤러의 블록 다이어그램이다. 다음은 모든 CAN 컨트롤러의 핵심 포인트를 설명한 것이다.

1. I/O 핀: 이미 설명한 대로 CAN 트랜시버 칩의 핀 R, D와 연결된다.
2. 병렬-직렬 컨버터(Parallel-Serial Converters): CAN은 직렬 버스이지만 프로세서는 병렬이다. 여기서 변환이 일어난다.
3. Tx 메일박스: 송신될 메시지가 여기서 작성된다. ID, 데이터(있다면), 그리고 DLC가 여기로 간다.
4. 수용 필터(Acceptance Filter): 수용 필터는 FIFO를 통해 특정 메시지만을 프로세서로 통과시킨다. RESET에서 디폴트로, 수용 필터는 모든 메시지를 FIFO로 보낸다. 여러분의 소프트웨어가 수용 필터를 설정해야만 메시지를 필터링 할 수 있다.
5. FIFO 0&1: 각 수신 FIFO는 3개의 CAN 메시지를 임시 저장할 수 있다. 프로세서에 대해 버퍼링 시스템을 제공한다.
6. 컨트롤(Control), 상태(Status), 환경설정(Configuration) 레지스터: 소프트웨어는 보통 초기화 단계에서 컨트롤, 상태, 환경설정 레지스터를 구성해야만 한다. 여기에는 다양한 플래그와 스위치가 있다. CAN 속도 설정, 송신 요청, 수신 메시지 관리, 인터럽트 작동, 진단 정보 취득 등이 예이다. Keil은 이러한 레지스터를 어떻게 설정하고 사용하는 지 보여주는 예제를 제공한다.

모든 CAN 컨트롤러는 기본 아키텍처가 동일하다. 컨트롤러가 다르면, 수신 FIFO 버퍼 수, 전송 버퍼, 수용 필터 크기, 비트 매핑, 그리고 다양한 환경설정 레지스터의 주소 및 정의 등에서 차이를 갖게 될 것이다. 독일 로버트 보쉬(Robert Bosch GmbH)가 모든 CAN 컨트롤러에 대한 라이선스를 제공한다. 따라서 로버트 보쉬는 서로 다른 제조업체 간에 기본 CAN 속성이 일치하도록 상당한 영향력을 행사할 수 있다.
이는 모든 CAN 컨트롤러가 믿을 수 있고 예측 가능한 방법으로 서로 통신할 수 있다는 의미이기도 하다.
Keil 예제 CAN 프로그램
1. 데스크톱에 있는 아이콘(CAN1번.JPG)을 클릭하여 μVision짋을 시작한다.
2. 프로젝트/프로젝트 열기(Project/Open Project)를 선택한다. 파일을 연다.
C:\Keil\ARM\Boards\Keil\MCBSTM32\CAN\CAN.Uv2

3. 타깃(Target) 창에서 “시뮬레이터(Simulator)”를 선택한다.
4. 소스 파일에 오타가 있다. CanDemo.c 파일에서 126 라인으로 가라.아마 다음과 같을 것이다.

   Delay (45000000); //wait for initial display (~5s)

   이것은 너무 길다. 낮은 값으로 변경하시오. 45000이면 괜찮다.
5. 구축(Build) 아이콘      을 클릭하여 소스 파일을 컴파일 하라. 오류나 경고 없이 컴파일 할 것이다.
6. 타깃(Target) 아이콘      에 대해서 옵션(Options)을 클릭한다. 그런 다음, 디버그(Debug) 탭을 선택하고 “Use Simulator”가 체크되었는지 확인한다.
7. 디버그 아이콘      을 클릭해서 디버그(Debug) 모드로 들어간다. 평가 모드(Evaluation Mode) 박스가 나타나면 OK를 선택한다.
8. 툴박스(Toolbox), CAN : 커뮤니케이션(Communication)과 CAN: 컨트롤러(Controller) 창의 위치를 적절하게 정한다.
9. 돌리기(RUN) 아이콘      을 클릭한다. 참고: 중지(STOP) 아이콘      으로 프로그램을 중단할 수 있다.
10. ID가 0x21인 CAN 메시지가 CAN: 커뮤니케이션(Communications) 창에 나타날 것에 주목하자. 송신 및 수신 프레임을 모두 볼 수 있다. CAN 컨트롤러는 자신의 메시지를 볼 수 있는 특별 테스트 모드(Test Mode) 상태에 있다.
11. 툴박스(Toolbox) 창에서 “Analog Sweep 0…3.3v” 버튼을 클릭하라.
12. A/D 컨버터에서 나온 출력을 나타내는 데이터 값을 변경하는 것이 이제 CAN 메시지에 나타날 것이다.

Keil CAN 데모 소프트웨어: 작동 원리
Keil은 개발 툴과 함께 실제로 사용되는 CAN 예제를 제공한다. 여러분은 이 예제를 이미 컴파일하고 돌려보았다. C 소스 파일을 디버그 모드이든 아니든 열람하고 편집할 수 있다. 하지만, 컴파일 하기 위해서는 디버그 모드에 있어서는 안 된다. 이 예제는 (거의) 전부    C로 작성되었기 때문에, 어셈블리 코드를 거의 사용하지 않는다.    모든 소스 파일은 파일(File)/열기(Open)를 클릭하고, 선택했을 때  이미 보이지 않는다면, μVision에서 열 수 있다. 3개의 소스 파일을 살펴보도록 하자.



AEM_Automotive Electronics Magazine


<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>


  • 100자평 쓰기
  • 로그인


  • 세미나/교육/전시

TOP