You are on page 1of 9

자율주행 보드 CAN 프로그램 형상

자율주행 보드 CAN 인터페이스


이더넷 프로토콜

• Intel Xeon 보드 위에 can board가 탑재되어 있음


• Intel Xeon과 can board간의 통신은 이더넷 소켓통신을 사용
• Can board는 서버
• Intel Xeon은 클라이언트 프로그램 구성
• Can board IP는 : 169.254.233.4
• Port : 6000
제어패킷 1. 패킷종류 (1byte) : ‘0x00’ 파라메터 셋팅 할 때는 ‘0x00’
데이터 패킷은 ‘0x01’ [can data 송신할 때]
Intel xeon  can board 2. Can 1, 2, 3 경우 rate (1byte):
파라메터 셋팅용 패킷 • ‘0x00’ : 1Mbps
‘0x00’
• ‘0x01’ : 500kbps
• ‘0x02’ : 250kbps
패킷종류 Can 1 rate Can 1 F_ID Can 1 F_ID Can 1 F_ID Can 1 F_ID Can1 MASK Can1 MASK Can1 MASK Can1 MASK • ‘0x03’ : 125kbps
1byte MSB LSB MSB LSB
1byte 3. Can FD 4,5 경우 rate (1byte):
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte
• ‘0x00’ : 500K_1Mbps
Can 2 rate Can 2 F_ID
MSB
Can 2 F_ID Can 2 F_ID Can 2 F_ID
LSB
Can2 MASK
MSB
Can2 MASK Can2 MASK Can2 MASK
LSB
• ‘0x01’ : 500K_2Mbps
1byte
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte • ‘0x02’ : 500K_5Mbps
• ‘0x03’ : 500K_8Mbps
Can 3 rate Can 3 F_ID Can 3 F_ID Can 3 F_ID Can 3 F_ID Can3 MASK Can3 MASK Can3 MASK Can3 MASK • ‘0x04’ : 1000K_4Mbps
1byte MSB LSB MSB LSB
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte • ‘0x05’ : 250K_500Kbps
• ‘0x06’ : 125K_500Kbps
Can 4 rate Can 4 F_ID Can 4 F_ID Can 4 F_ID Can 4 F_ID Can4 MASK Can4 MASK Can4 MASK Can4 MASK 4. Can 1 F_ID(4byte)
1byte MSB LSB MSB LSB
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte • Can 1의 필터 ID
• 2.0A 모드 경우 11bit, 2.0A 모드 경우 29bit
Can 5 rate Can 5 F_ID
MSB
Can 5 F_ID Can 5 F_ID Can 5 F_ID
LSB
Can5 MASK
MSB
Can5 MASK Can5 MASK Can5 MASK
LSB
• MSB – LSB 총 4byte
1byte
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte • ex) 2.0A id 0x7ff 일 경우  0x00 0x00 0x07 0xff
• Ex) 2.0B id 0x717ff일 경우  0x00 0x07 0x17 0xff
Can1 mode
2.0 A/B
Can2 mode
2.0 A/B
Can3 mode
2.0 A/B
Loopback
mode
5. Can 1 MASK(4byte)
1byte 1byte 1byte 1byte • Can 1의 필터 마스크
• MSB – LSB 총 4byte
• F_ID의 경우와 비슷하게 마스크 값을 셋팅
6. Can 2, 3, 4, 5 F_ID세팅은 Can 1 의 F_ID 셋팅법과 동일
7. Can 2, 3, 4, 5 MASK 셋팅은 Can 1 MASK 셋팅법과 동일
8. Can 1 mode, Can 2 mode, Can 3 mode
• ‘0x00’ : can 2.0 A mode
• ‘0x01’ : can 2.0 B mode
• Can 4,5 FD 는 ID extension mode만 지원, 추후 사
용자 요구에 따라서 변경가능
9. Loopback mode(1byte)
• ‘0x04’ : 모든 can은 루프백모드를 사용, 자체 테스
트 용으로만 사용, 외부 can 연결 없이도 송수신 테
스트가능
• ‘0x03’ : normal mode, 정상모드
송신 데이터 패킷
Intel Xeon  can board
Can data 송신용 패킷
‘0x01’

패킷종류 Can 선택 Can ID Can ID Can ID Can ID Can 데이터 Can 데이터 Can 데이터 Can 데이터 1. 패킷종류 (1byte) : 데이터 패킷은 ‘0x01’ [can data 송신할
1byte MSB LSB 길이 [0] [1] [2]
1byte
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte
때]
2. Can 1 선택 (1byte):
Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 • ‘0x00’ : can 1
[3] [4] [5] [6] [7] [8] [9] [10] [11]
• ‘0x01’ : can 2
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte
• ‘0x02’ : can 3
Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 • ‘0x03’ : can 4
[12] [13] [14] [15] [6] [7] [8] [9] [20]
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte
• ‘0x04’ : can 5
1byte
3. Can ID(4byte)
• Can ID 값 셋팅
… • 2.0A 모드 경우 11bit, 2.0A 모드 경우 29bit
• MSB – LSB 총 4byte
Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 • ex) 2.0A id 0x7ff 일 경우  0x00 0x00 0x07 0xff
[56] [57] [58] [59] [60] [61] [62] [63]
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte
• Ex) 2.0B id 0x717ff일 경우  0x00 0x07 0x17 0xff
4. Can 데이터 길이(1byte)
• 송신데이터 byte 수 넣음
5. Can 송신 데이터 [0]-[63]
• 2.0A, 2.0B 모드일 경우 송신데이터는 max 8byte
• 따라서 [0]-]7] 까지 사용[데이터 가변 가능]
• Can FD 모드(can 4포트와 can 5포트)는 max 64byte
• 따라서 [0]-[63] 까지 사용[데이터 가변 가능]
수신 데이터 패킷
can board Intel Xeon
Can data 수신 패킷

Can mode Can 선택 Can ID Can ID Can ID Can ID Can 데이터 Can 데이터 Can 데이터 Can 데이터 1. Can mode (1byte) :
1byte 1byte MSB LSB 길이 [0] [1] [2]
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte • ‘0x00’ : Can 2.0A mode
• ‘0x01’ : Can 2.0B mode
Can 데이터 Can 데이터 Can 데이터
[5]
Can 데이터
[6]
Can 데이터
[7]
Can 데이터 Can 데이터
[9]
Can 데이터
[10]
Can 데이터
[11]
2. Can 1 선택 (1byte):
[3] [4] [8]
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte • ‘0x00’ : can 1
• ‘0x01’ : can 2
Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 Can 데이터 • ‘0x02’ : can 3
[12] [13] [14] [15] [6] [7] [8] [9] [20]
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte • ‘0x03’ : can 4
• ‘0x04’ : can 5
3. Can ID(4byte)
… • Can ID 값 셋팅
• 2.0A 모드 경우 11bit, 2.0A 모드 경우 29bit
Can 데이터
[56]
Can 데이터
[57]
Can 데이터
[58]
Can 데이터
[59]
Can 데이터
[60]
Can 데이터
[61]
Can 데이터
[62]
Can 데이터
[63]
• MSB – LSB 총 4byte
1byte 1byte 1byte 1byte 1byte 1byte 1byte 1byte • ex) 2.0A id 0x7ff 일 경우  0x00 0x00 0x07 0xff
• Ex) 2.0B id 0x717ff일 경우  0x00 0x07 0x17 0xff
4. Can 데이터 길이(1byte)
• 송신데이터 byte 수
• Can 2.0A/B는 최대 8byte
• FD 는 최대 64byte
5. Can 수신 데이터 [0]-[63]
• 2.0A, 2.0B 모드일 경우 송신데이터는 max 8byte
• 따라서 [0]-]7] 까지 사용[데이터 가변 가능]
• Can FD 모드(can 4포트와 can 5포트)는 max
64byte
• 따라서 [0]-[63] 까지 사용[데이터 가변 가능]
Can board test program [window, linux]
프로그램을 실행시키고
수신 필터 ID 값 셋팅
‘초기화'버튼 누름 Integer
1초마다 한 번씩 자동 송신됨 2.0 A/B 모두 가능
18bit(extension) + 11bit
선택: 2.0B mode
Can의 baud rate 선택 선택 안함 : 2.0A mode
선택: loopback mode
선택 안함 : normal mode

Can data 수신 수신된 can data count 수신 필터 MASK 값 셋팅


Hex 값으로 셋팅
Msb – LSB
Ex) 00 00 00 00
Can data 수신 시간 날짜 분 초 Ex) 00 0f ff ff
바이트 단위로 사용하고
수신된 Can port 종류 바이트 사이는 한 칸 띄운

수신된 Can ID integer 00000000  에러
값으로 표시 00 00 00 00  OK

수신된 data hex 바이트 사이는 한 칸 띄운다 1초마다 자동송신되지만


Can 2.0A/B는 8byte
송신 Can ID integer FD 는 최대 64byte 클릭할 때 마다 추가로 송신됨
송신 Can port 종류 선택 값으로 표시 보내고 싶은 만큼 넣는다.
테스트 프로그램의 사용
• Window • Linux
• Can_test_window.zip 을 • Can_test_linux.zip을 풀면
풀면 다음 그림과 같이 생 다음 그림과 같이 생성됨
성됨

• 여기서 Can 응용프로그램 • 여기서 linux terminal 창


을 클릭하면 실행 에서 “./can” 을 넣고 엔터
를 누르면 실행됨
리눅스에서 실행할 때
• 10Mbps로 연결된 네트웍 선택
• 네트워크 셋팅에서 '수동’ 또는 ‘manual’
• 169.254.233.6 255.255.0.0 셋팅, 나머지는 셋팅 안 해도 됨.
• ping 169.254.233.4를 실행
• ping이 정상 동작하는지 확인, 정상 동작하면 6번 실행, 아니면 1번부터 다시 확인
• Linux 용 can 프로그램을 적당한 디렉토리에 푼다.
• Command terminal 창 연다
• can 프로그램 깔린 디렉토리로 이동
• can 프로그램을 실행 가능하도록 변경
• chmod 777 can
• ./can

You might also like