CAN/CAN Open

CANOpen Slave 개발 (STM32 MCU 활용)

임베디드 친구 2025. 8. 13. 20:24
728x90
반응형

CANOpen Slave 개발 (STM32 MCU 활용)

개요

CANOpen Slave 장치는 CANOpen 네트워크에서 마스터의 명령을 수신하고 응답하는 역할을 합니다. 본 장에서는 STM32F429 MCU와 STM32CubeIDE 및 HAL 라이브러리를 활용하여 CANOpen Slave 장치를 개발하는 방법을 설명합니다.

CANOpen Slave 개념

CANOpen Slave는 다음과 같은 주요 기능을 수행합니다.

  • PDO(프로세스 데이터 객체) 전송 및 수신
  • SDO(서비스 데이터 객체)를 통한 설정 변경
  • NMT(네트워크 관리) 명령 처리
  • Heartbeat 및 Node Guarding 기능 지원

개발 환경 구축

CANOpen Slave 개발을 위해 다음과 같은 환경이 필요합니다.

  • 하드웨어: STM32F429 개발 보드, CAN 트랜시버 (MCP2551 등), CAN 분석기
  • 소프트웨어: STM32CubeIDE, STM32CubeMX, CANOpenNode (오픈소스 CANOpen 스택)

STM32CubeMX 설정

  1. CAN 주변 장치 활성화

    • CAN1 또는 CAN2 활성화
    • CAN 속도(baud rate) 설정 (예: 125kbps, 250kbps, 500kbps 등)
    • 필터 설정 (모든 메시지 수신 또는 특정 ID만 수신 가능하도록 설정)
  2. GPIO 설정

    • CAN RX/TX 핀을 설정 (STM32F429의 경우, 기본적으로 PA11PA12 사용 가능)
  3. 클럭 설정

    • CAN을 위한 적절한 클럭 설정 (APB1 클럭 확인 필요)
  4. 코드 생성 및 프로젝트 열기

    • HAL 라이브러리를 활용한 기본 코드 생성
    • 프로젝트를 STM32CubeIDE에서 열고 코드 수정

CANOpenNode를 활용한 Slave 개발

CANOpenNode는 오픈소스 CANOpen 스택으로, STM32 MCU에서 실행할 수 있도록 포팅할 수 있습니다.

CANOpenNode 다운로드 및 설정

  1. CANOpenNode GitHub 저장소에서 코드 다운로드
  2. device 폴더 내에 STM32 프로젝트 생성
  3. CO_driver 파일 수정하여 STM32 HAL 드라이버에 맞게 변경

Slave 기본 기능 구현

  1. SDO 서버 설정

    • SDO 서버를 통해 파라미터 읽기/쓰기 기능 추가
    • 객체 사전(Object Dictionary)에 필요한 변수 정의
  2. PDO 통신 구현

    • TPDO (Transmit PDO) 및 RPDO (Receive PDO) 설정
    • 자동 전송 모드 또는 이벤트 기반 전송 설정
  3. NMT 상태 관리

    • NMT 명령을 수신하여 Pre-Operational, Operational, Stopped 상태 전환 구현
  4. Heartbeat 및 Node Guarding 설정

    • Heartbeat 메시지 전송 구현
    • Node Guarding 방식으로 슬레이브 상태 모니터링 기능 추가

CANOpen Slave 테스트 및 디버깅

  1. CAN 분석기를 사용하여 메시지 확인

    • 슬레이브 장치가 올바른 CANOpen 메시지를 송수신하는지 확인
    • SDO 요청에 대한 응답 확인
  2. PDO 데이터 모니터링

    • TPDO 데이터가 올바르게 전송되는지 확인
    • RPDO를 통한 입력 데이터 변경 테스트
  3. NMT 및 Heartbeat 테스트

    • NMT 명령에 따라 상태가 정상적으로 변경되는지 검증
    • Heartbeat 메시지가 주기적으로 전송되는지 확인

마무리

본 장에서는 STM32 MCU를 활용하여 CANOpen Slave 장치를 개발하는 방법을 설명하였습니다.

728x90
반응형