-
adi2can 사용자 설명서hardware 2025. 7. 21. 15:46
개요
- 기능: 아날로그, 디지털 입력 신호를 CAN 메시지로 전송
- 입력
- 아날로그: 0V ~ 5V x 2 채널 (5V를 초과하면 칩에 영구적인 손상이 발생할 수 있습니다.)
- 디지털: 5V ~ 12V x 6 채널 (12V를 초과하면 칩에 영구적인 손상이 발생할 수 있습니다.)
- 출력
- CAN 메시지
- Tx: aMsg x 1, dMsg x 1, sMsg x 1
- Rx: cMsg x 1 (Msg Id, 전송 주기 설정용)
- aMsg, dMsg, sMsg, cMsg에 대한 상세는 차차 설명합니다.
사용법
- 먼저 설정하고 측정에 사용합니다.
- 첨부 dbc 파일로 aMsg, dMsg, sMsg의 신호들을 볼 수 있다.
adi2can의 aMsg, dMsg, sMsg 정의가 포함된 dbc 파일
- 첨부 T7z 파일은 TSMaster 프로젝트를 Export하여 생성한 것이다.
2025_07_21_15_55_39.T7z0.63MB- 이 파일을 다운로드하고, (TSMaster가 설치된 상태라면) 파일을 더블 클릭하면, TSMaster가 실행된다.
- 임시 디렉토리에 저장하거나 새 디렉토리를 만드는 창이 뜬다.
- 이 파일을 다운로드하고, (TSMaster가 설치된 상태라면) 이 파일을 더블 클릭하면 TSMaster가 실행된다. 임시 디렉토리에 저장하거나 새 디렉토리를 만드는 창이 뜬다.

- Select a working directory를 선택하여, 새 디렉토리를 만들고 선택하면, 그 디렉토리에 프로젝트가 압축 해제되어 저장된다.
- 아래 adi2can 설명은 이 프로젝트를 기준으로 한 것이다.
설정
- adi2can은 총 4개의 CAN 메시지(aMsg, dMsg, sMsg, cMsg)를 송/수신합니다. 각 메시지의 디폴드 아이디는 아래와 같습니다.
- aMsg: 0x1234567A
- dMsg: 0x1234567D
- sMsg: 0x12345675
- cMsg: 0x1234567C
- 측정 환경에서 메시지 아이디 충돌이 발생하는 경우, 충돌 개수만큼 사용되지 않는 아이디가 필요합니다.
- 먼저, adi2can과 TSMaster만 연결합니다.

설정 단계에서는 adi2can과 TSMaster만 연결합니다. - adi2can의 USB-C 포트를 통해서 전원을 공급합니다. (외부 전원을 이용하거나 PC에 연결합니다.)
- cMsg를 이용하여 아이디가 충돌이 되는 메시지들의 아이디를 변경합니다.
- cMsg를 이용하여 aMsg, dMsg의 전송 주기를 변경할 수 있습니다. 필요에 따라 전송 주기를 변경합니다.
- cMsg를 이용하여 설정을 변경하는 방법은 cMsg에 대한 설명을 참조하십시오.
- cMsg로 변경한 설정은 즉시 적용됩니다.
- 변경된 설정은 EEPROM에 저장되고, adi2can이 부팅될 때 설정이 적용됩니다.
측정
- 측정할 아날로그, 디지털 신호의 전선을 adi2can의 터미널 블록에 연결합니다.
- 아날로그 선을 연결할 때는 AGND에, 디지털 선을 연결할 때는 DGND에 그라운드를 연결합니다.
- AGND, DGND 핀의 위치는 아래 그림과 같습니다.

adi2can의 핀 위치 - 1 채널 CAN 하드웨어를 사용할 경우, adi2can을 측정하려는 CAN 버스에 연결합니다.

측정을 할 때는 adi2can, TSMaster, DUT (Device Under Test)를 연결합니다. - 다채널 CAN 하드웨어를 사용할 경우, adi2can을 여분의 CAN 채널에 연결할 수도 있습니다.
- adi2can는 전원을 공급받으면 즉시 부팅을 시작하고, 부팅이 완료되면 (< 1.5sec) CAN 메시지 전송을 시작합니다.
- 필요한 시점에 CAN 버스 측정을 시작합니다.
aMsg
- 아날로그(analog) 입력 전송용 CAN 메시지
- 길이: 8 바이트
- 아이디:
- 디폴트: 0x1234567A (Analog)
- cMsg로 변경 가능
- 전송 주기:
- 디폴트: 500msec
- cMsg로 변경 가능
- 신호:
- A4, A5 (아두이노 핀번호)
- 10bit (아두이노 ADC의 분해능)
- 0 ~ 5V까지 표시

aMsg의 신호 레이아웃

A4 (A5) 신호의 정의

aMsg 출력. A4, A5 두 아날로그 채널들의 신호 값을 읽을 수 있다.
dMsg
- 디지털(digital) 입력 전송용 CAN 메시지
- 길이: 8 바이트
- 아이디:
- 디폴트: 0x1234567D (Digital)
- cMsg로 변경 가능
- 전송 주기:
- 디폴트: 500msec
- cMsg로 변경 가능
- 신호:
- D3, D4, D5, D6, D7, D8 (아두이노 핀번호)
- 2bit (0:on, 1:off, 2:reserved, 3:failure)

aMsg의 신호 레이아웃

D3 (= D5 ~ D8) 신호의 정의

dMsg 출력. D3, D8 여섯 디지털 채널들의 신호 값을 읽을 수 있다.
sMsg
- 상태(status) 표시용
- 길이: 8 바이트
- 아이디:
- 디폴트: 0x12345675 (5tatus)
- cMsg로 변경 가능
- 전송 주기:
- on demand
- cMsg로 변경 가능
- 신호
- 설정 변경 결과
- 현재 동작 상태
- 설정값 오류 코드
- 메시지 카운터

sMsg의 신호 레이아웃 
sMsg 출력. adi2can의 상태를 알 수 있다. cMsg
- aMsg, dMsg의 아이디, 전송 주기 설정(configure)에 사용함
- 길이: 8 바이트
- 아이디:
- 디폴트: 0x1234567C (Configure)
- cMsg로 변경 가능
- 전송 주기:
- adi2can 설정 변경이 필요할 경우
cMsg 메시지 구조
- [command] [target] [parameter]
- command
- 0x01: change message id
- 0x02: change message Tx period
- 0x03: debug output to serial monitor
- 0x04: apply filter
- 0x05: get status
- target
- command에 따라 다름
- 일반적으로, 0x01: aMsg, 0x02: dMsg
- parameter
- command와 target에 따라 다름
cMsg – change msg id

- D0 바이트: 0x01
- D1 바이트:
- 대상 메시지
- 0x01: aMsg
- 0x02: dMsg
- 0x03: sMsg
- 0x04: cMsg
- D2 ~ D5 바이트:
- 새 Msg Id
cMsg의 change msg id 사용법 cMsg – change msg tx period

- D0 바이트: 0x02
- D1 바이트:
- 대상 메시지
- 0x01: aMsg
- 0x02: dMsg
- D2 ~ D3 바이트:
- 새 전송 주기
- msec
cMsg의 change msg tx period 사용법 cMsg – debug output to serial monitor

- adi2can은 USB로 시리얼 통신을 함
- 시리얼 통신으로 aMsg, dMsg의 내용을 전송할 수 있음
- D0 바이트: 0x03
- D1 바이트:
- 대상 메시지
- 0x01: aMsg
- 0x02: dMsg
- D2 바이트:
- 0x00: 전송 중지
- 0x01: 전송 시작
cMsg의 debug output to serial monitor 사용법 cMsg – apply filter

- 필터 사용 여부 설정
- CAN 버스에 메시지가 많아 adi2can의 처리 용량이 부족할 경우를 대비함
- CAN 콘트롤러 칩에 있는 하드웨어 필터를 설정하여 cMsg만 수신하도록 함
- D0 바이트: 0x04
- D1 바이트: 0x01
- D2 바이트:
- 0x00: 필터 적용 중지
- 0x01: 필터 적용
cMsg로 apply filter 사용법 cMsg – get status

- sMsg 전송을 요청함
- D0 바이트: 0x05
- D1 바이트:
- 0x01: 전송 주기 설정
- 0x02: 1회 전송
- D2 바이트:
- 0x00: 전송 중지
- 0x01: 전송 시작
- adi2can.dbc를 임포트하여 sMsg의 내용을 CAN Trace 창에서 편리하게 볼 수 있음

get status 요청으로 sMsg를 업데이트한다. cMsg로 get status 사용법 ADI2CAN 개선 :: hsl's tsmaster 사용기 <-- 개발 배경이 궁금하신 분들께
디지털/ 아날로그 신호를 CAN 신호와 함께 측정하기 - ADI2CAN :: hsl's tsmaster 사용기 <-- 발단이 궁금하신 분들께
'hardware' 카테고리의 다른 글
ADI2CAN 개선 - Open Source 공개 (1) 2025.07.19 CAN과 CAN-FD를 혼합 사용하면 ...? (3) 2025.06.13 timestamp, ACK와 ACK error (0) 2025.06.11 디지털/ 아날로그 신호를 CAN 신호와 함께 측정하기 - ADI2CAN (1) 2025.06.07 Q&A: 옵션에 없는 CAN(-FD) baud rate 설정하는 방법 (0) 2024.12.06