CAN 통신

Similar documents
<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

untitled

T100MD+

SRC PLUS 제어기 MANUAL

untitled

hd1300_k_v1r2_Final_.PDF

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

MR-3000A-MAN.hwp

1

CANTUS Evaluation Board Ap. Note

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

MicrocontrollerAcademy_Lab_ST_040709

Microsoft PowerPoint - polling.pptx

歯설명서_020925_.PDF

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

한글사용설명서


untitled

bn2019_2

슬라이드 1

untitled

K&R2 Reference Manual 번역본

BJFHOMINQJPS.hwp

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Remote UI Guide

TCP.IP.ppt

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

[8051] 강의자료.PDF

TTA Verified : HomeGateway :, : (NEtwork Testing Team)

슬라이드 제목 없음

AN2629

DSP_MON 프로그램 메뉴얼

adfasdfasfdasfasfadf

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

PowerPoint 프레젠테이션

AN_0005B_UART

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

untitled

2주차: 입출력 제어 복습

Microsoft Word - ASG AT90CAN128 모듈.doc

untitled

Microsoft PowerPoint - 부호기와 복호기.PPT

CPX-E-EC_BES_C_ _ k1

MAX+plus II Getting Started - 무작정따라하기

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

CAN-fly Quick Manual

인켈(국문)pdf.pdf

USB3-FRM13 API 매뉴얼

KEY 디바이스 드라이버

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Microsoft Word - STM32 BxCAN.doc

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

<4D F736F F D E20B4DCB8BB20C1A1B0CB20B9D720C1B6C4A120B8C5B4BABEF35F76312E335F2E646F63>

PowerPoint 프레젠테이션

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

ARMBOOT 1

PowerPoint 프레젠테이션

ARQ (Automatic Repeat reQuest)

1217 WebTrafMon II

PowerPoint 프레젠테이션

(72) 발명자 정진곤 서울특별시 성북구 종암1동 이용훈 대전광역시 유성구 어은동 한빛아파트 122동 1301 호 - 2 -

PowerPoint Presentation

CD-RW_Advanced.PDF

Microsoft PowerPoint - Chapter 8_USART Serial Communication

슬라이드 1

PowerPoint 프레젠테이션

그룹웨어와 XXXXX 제목 예제

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

i-movix 특징 l 안정성 l 뛰어난화질 l 차별화된편의성

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

API 매뉴얼

() Aloha Netowrk ether(,, )network Ehternet, DEC, ( DIX(DEC, Intel, Xerox) IEEE(, ) 5 9,, (Xerox) (Bob Metcalfe), (, ) A

PowerPoint 프레젠테이션

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft Word - SRA-Series Manual.doc

untitled

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

슬라이드 제목 없음

이 발명을 지원한 국가연구개발사업 과제고유번호 부처명 지식경제부 연구사업명 IT 융합 고급인력과정 지원사업 연구과제명 스마트 자동차를 위한 AUTOSAR 기반 차량 내외부 통신 플랫폼 및 응용기술 주관기관 정보통신산업진흥원 연구기간

歯DCS.PDF

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

슬라이드 1

untitled

PRO1_09E [읽기 전용]

untitled

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

PRO1_16E [읽기 전용]

PowerPoint 프레젠테이션

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

목차 1. 개요 USB 드라이버 설치 (FTDI DRIVER) FTDI DRIVER 실행파일 USB 드라이버 확인방법 DEVICE-PROGRAMMER 설치 DEVICE-PROGRAMMER

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

Index

DSP_MON 프로그램 메뉴얼

Transcription:

CAN 통신 2008 년 4 월 2 일에이스트로닉스 양은숙

목차 CAN 통신이란 CAN 통신특징 CAN 통신규격 CAN 통신응용범위 AT90CAN128 의특징 AT90CAN128 의회로구조 CAN Controller 의구조 AT90CAN128 의 CAN Register Source 예제

1. CAN 통신이란 1988년 Bosch와 Intel에서개발된차량용네트워크시스템. 마이크로컨트롤러들간의통신을위해설계된시리얼네트웍통신방식 1993년도에 ISO에서국제표준규격으로제정.

2. CAN 통신특징 2 가닥의꼬임선 (Twist Pair Wire) 으로연결되어반이중통신 (Half Duplex) 방식 주소가아닌 ID(identifier) 에의해메시지의내용뿐만아니라우선순위도결정.

3. CAN 통신규격 CAN 메시지에있는식별자 (ID) 의길이 표준 CAN ( 버전 2.0A) : 11 비트식별자 확장 CAN ( 버전 2.0B) : 29 비트식별자 ISO 규격에따라구분 ISO 11898 : 1Mbps 이상의고속통신가능 ISO 11519 : 125Kbps 까지의통신가능

표준 CAN ( 버전 2.0A)

확장 CAN ( 버전 2.0B)

4. CAN 통신응용범위 일반차량 : ECU 포함전자장치들간의통신및차체 utility 제어 the leading vehicle bus protocol in Europe 건설용중장비차량및열차 산업자동화 : 제어기와센서, 액츄에이터사이데이터통신서로다른지능모듈들을연결 의료장비, 건물자동화

5. AT90CAN128 특징 AVR 8-bit Microcontroller FLASH : 128k bytes EEPROM : 4k bytes SRAM : 4k bytes 최대 64k bytes 의외부메모리공간 JTAG(IEEE 1149.1 호환 ) Interface CAN Controller 2.0A & 2.0B 내장 15 개의 MOB 를가짐 8 채널, 10bit SAR ADC 2.7 ~ 5.0V 에서동작 Maximum Frequency : 8MHz(2.7V), 16MHz(4.5V)

7. CAN Controller 구조

8. CAN Register - CANGCON ABRQ (Abort Request) 1 : 모든 MObdisabled 통신전면중단 OVRQ (Overload Frame Request) 1 : overload frame 전송요청 (1) (90CAN128 은매우바쁠수있다.) TTC (Time Trigger Communication) 1 : TTC mode 에러발생해도, 해당프레임은전송 SYNTTC (Synchronization of TTC) 0 : SOF 에서 TTC timer 동작 sync. 1 : EOF 마지막 bit 에서 TTC timer 동작 sync.

LISTEN (Listening Mode : 수신전용 ) 1 : listening mode hardware loop back TEST (Test Mode) 개발자용아님. 0 으로고정 ENA/STB (Enable/Standby Mode) 0 : standby mode 진입명령 1 : enable mode 진입명령 11 recessive bit 검출후진입 SWRES (Software Reset Request) 1 : CAN controller reset (BOFF Error Active 진입시사용 )

8. CAN Register - CANEN 각 MOb 의사용가능상태를표현 0 : 해당 MOb 가 disable 상태또는송수신완료후대기상태 1 : 해당 MOb 가 enable 상태또는송수신중

8. CAN Register - CANGIE ENIT (Enable All INTs) = 1 INT 가능 (OVRTIM 제외 ) ENBOFF (Enable Bus Off INT) = 1 BOFF INT 가능 ENRX (Enable Receive INT) = 1 Receive INT 가능 ENTX (Enable Transmit INT) = 1 Transmit INT 가능 ENERR (Enable MOb Errors INT) = 1 MOb Errors INT 가능 ENBX (Enable Frame Buffer INT) = 1 Frame Buffer INT 가능 ENERG (Enable General Errors INT) = 1 General Errors INT 가능 ENOVRT (Enable CAN Timer Overrun INT) = 1 OVRTIM INT 가능

8. CAN Register CANIE2/1 1 : 해당 MOb 의 INT 발생가능

8. CAN Register - CANHPMOB HPMOB[3:0] (Highest Priority MOb Number) : INT 발생 MOb 중최고우선순위를갖는 MOb number CGP[3:0] (CAN General Purpose Bits) : CANPAGE register 조합형범용 bit

8. CAN Register CANBT1 BRP (Baud Rate Prescaler) = [0..63]

8. CAN Register CANBT2 SJW (Re-Synchronization Jump Width) : Bit Resynchronization을위한 Bit time 조절폭 = [0:3] Tsjw = Tscl (SJW + 1) = 1~4 TQ PRS (Propagation Time Segment) : input comparator, output driver 에의한 delay 및 propagation delay 보상용 = [0:7] Tprs = Tscl (PRS + 1) = 1~8 TQ

8. CAN Register CANBT3 PHS2 (Phase Segment 2) : Phase edge error 보상에사용 ( 필요에따라 SJW 만큼단축 ) = [0..7] Tphs2 = Tscl (PHS2 + 1) = 1~8 TQ 단, 1 PHS2 PHS1 PHS1 (Phase Segment 1) : Phase edge error 보상에사용 ( 필요에따라 SJW 만큼연장 ) = [0..7] Tphs1 = Tscl (PHS1 + 1) = 1~8 TQ SMP (Sample Point) = 1 3 sampling per bit time = 0 1 sampling per bit time

8. CAN Register CANTCON CAN Timer Prescaler : TclkCANTIM = TclkIO 8 (CANTCON+1)

8. CAN Register CANPAGE MOBNB[3:0] (Mob Number) : MOb number 선택 (0~14) AINC (Auto Increment of the FIFO CAN Data Buffer Index) 0 : auto increment of the index (default value) INDX[2:0] (FIFO CAN Data Buffer Index) : FIFO 내 CAN 데이터의 byte 위치지정

8. CAN Register CANSTMOB DLCW (Data Length Code Warning) : 수신메시지의 DLC 가기대와다를때 TXOK : 송신완료 flag INT 발생가능 확인후 CLEAR! RXOK : 수신완료 flag INT 발생가능 확인후 CLEAR! BERR : Bit Error( 예외는?) INT 발생가능 확인후 CLEAR! SERR : Stuff Error INT 발생가능 확인후 CLEAR! CERR : CRC Error INT 발생가능 확인후 CLEAR! FERR : Form Error INT 발생가능 확인후 CLEAR! AERR : Ack. Error INT 발생가능 확인후 CLEAR!

Boad Rate setting

10. Source 예제 void main(void) { CANGCON=0x02; CANGIE=0xA0; CANEN2=0xFF; CANEN1=0x7F; CANIE2=0xFF; CANIE1=0x7F; CANHPMOB=0x00; CANBT1=0x00; CANBT2=0x0C; CANBT3=0x36; CANTCON=0x00; Boad Rate : 1000K bps 로설정함!

while (1) { if(rx_counter0>0) { uart0_char=getchar(); can_msg.mob=tx_mob; can_msg.id=myid; can_msg.rtr=0; can_msg.dlc=3; can_msg.data[0]='a'; can_msg.data[1]='b'; can_msg.data[2]='c'; can_msg.data[3]='d'; can_msg.data[4]='e'; can_msg.data[5]='f'; can_msg.data[6]='g'; can_msg.data[7]='h'; } printf("%2x r",tx_st_can(can_msg)); } if(can_rx_index>0) { read_rx_message(&can_msg); printf("id:%03x, DLC:%1d, %c%c%c%c%c%c%c%c %d r",can_msg.id,can_msg.dlc,can_msg.data[0],can_msg.data[1],ca n_msg.data[2],can_msg.data[3],can_msg.data[4],can_msg.data[5],can_msg.data[6],can_msg.data[7],c an_rx_index); } };

unsigned char Tx_st_can(can_msg_t msg) { unsigned char i,cancdmob_temp; Can_set_mob(msg.mob); // 사용할 MOB 선정 Can_clear_mob(); //MOB 상태초기화 Can_set_std_id(msg.id); //ID 세팅 (Standard CAN) Can_set_dlc(msg.dlc); //DLC 세팅 //MOb 에데이터기록 for (i=0; i<msg.dlc;i++) { CANMSG = msg.data[i]; } Can_config_tx(); //MOB Set Tx //CANGIE = (1<<7);//CAN_IT_ENABLE; } while(canstmob==0);// 인터럽터가수행되면 CANSTMOB 값이변경된다. cancdmob_temp=canstmob; CANSTMOB=0; return cancdmob_temp;

void read_rx_message(can_msg_t* msg) { U8 data_index; if(can_rx_index==0) return; // 받은데이터가없으면아무짓도안한다 Can_set_mob(can_rx_index-1); Can_get_std_id(msg->id); msg->dlc=can_get_dlc(); msg->rtr=can_get_rtr(); for(data_index=0;data_index<(msg->dlc);data_index++) msg->data[data_index]=canmsg; } Can_config_rx(); // 수신가능한상태로바꾼다 // 데이타필드를초기화시키지않기때문에이후에들어오는데이터가 // 이전의데이터길이보다짧으면나머지는이전값을유지하므로 // 데이터를사용할때는 dlc 까지만사용해야한다 can_rx_index--;