본문 바로가기
728x90
CAN 통신 ID 값이 뭘 의미하는지 & OBD Broadcast에 관하여 CAN 통신을 이해한 줄 알았는데 막상 코드로 구현하려니 헷갈리는 부분이 너무 많았다. 이번 글을 통해 내가 헷갈렸던 부분을 정리하려고 한다. CAN 통신 수신 송신 데이터 CAN ID는 11비트를 사용하는 경우 반드시 0x7DF로 해야 한다. ECU의 브로드캐스트 주소 : 0x7DF 이 부분이 헷갈렸다. ECU의 정보를 가져오기 위해 ID값에 브로드캐스트 address 값만 넣으면 ID값이 왜 필요한 거지? 각각의 ECU는 모든 메시지를 받고 이 메시지가 자신에게 필요한 메시지인지를 판별한다는데, 브로드캐스트 주소로 메시지를 보내면 도대체 ECU는 이 메시지가 자신에게 필요한 메시지인지 어떻게 판별하지? 자동차별로 ID값이 다르다는데 그 ID값을 어떻게 찾지? OBD 정보를 얻기 위해서 브로드캐스트 주.. 2022. 1. 28.
CAN OBDII 통신 관련 링크 & 파일 모음 CAN 통신을 개발하면서 정보가 너무 없어서 힘들었다😭 개발하면서 찾은 CAN 통신 관련 링크와 pdf를 첨부하니 다른 분들은 레퍼런스 찾는데 너무 많은 시간을 쏟지 않길... https://en.wikipedia.org/wiki/OBD-II_PIDs OBD-II PIDs - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search OBD-II PIDs (On-board diagnostics Parameter IDs) are codes used to request data from a vehicle, used as a diagnostic tool. SAE standard J1979 defines many OBD-II.. 2022. 1. 28.
CAN통신 MCP2515 Mask와 Filter CAN 통신으로 자동차와의 통신을 구현하려고 하는데.. 예제 코드를 보니 Mask와 Filter를 해줬다. 근데 내가 지금까지 공부한 개념에는 Mask와 Filter는 없었는데.. 인터넷에 찾아도 제대로 나오지 않고ㅠㅠ MCP2515 Datasheet를 봤더니 Block Diagram에서 mask와 filter를 찾을 수 있었다. Mask와 Filter의 개념을 아직 이해하지는 못했지만.. 아마도 TX와 RX로 받아온 데이터를 처리(필요 없는 값을 거르는..?)하는 역할을 하는 것 같다.. 더 자세한 내용을 찾게 되면 밑에 추가로 적도록 하겠다. Mask와 Filter는 CAN Message 수신 시 특정한 ID 또는 어떤 범위의 ID만 받기 위한 설정! Mask는 Filter의 사용 여부(Enable/.. 2022. 1. 27.
CAN 통신 모듈(MCP2515) MCP2515 내장된 can 통신 모듈을 사용해서 can 통신을 구현할 것이다. MCP2515은 CAN Bus Contoller이다. CAN Bus Contoller에 대해 자세히 알고 싶다면 밑에 링크 클릭! 더보기 https://developer-eun-diary.tistory.com/77 Can Controller, CAN Transceiver CAN 통신에는 Microcontroller, Can Controller, CAN Transceiver가 필요하다. CAN Transceiver 물리적 level을 detection 하는 부분입니다. (High/Low level detection) OSI 7 Layer 중 Physical Layer이다. MC.. developer-eun-diary.tisto.. 2022. 1. 26.
Can Controller, CAN Transceiver CAN 통신에는 Microcontroller, Can Controller, CAN Transceiver가 필요하다. CAN Transceiver 물리적 level을 detection 하는 부분입니다. (High/Low level detection) OSI 7 Layer 중 Physical Layer이다. MCP2551가 있다. 받을 때 : CAN transceiver는 CAN bus level에서 CAN controller가 사용하는 levels로 데이터 스트림을 변환한다. CAN controller를 보호하기 위해 보호 전기 회로망을 가지고 있다. ​ 보낼 때 : CAN transceiver는 CAN controller로부터 CAN bus levels로 데이터 스트림을 변환한다. CAN Controll.. 2022. 1. 25.
CAN 통신 프레임(Frame) 타입 CAN 통신에는 4가지 프레임 타입을 정의하고 있다. 데이터 프레임(data frame) 각 노드로 전송되는 데이터가 들어 있는 프레임 CAN 2.0A, CAN 2.0B 두 가지의 포맷으로 구성 Aribitration Field의 RTR 값이 0이면 해당 메시지 프레임이 데이터 프레임임을 인지. CAN 2.0A CAN 2.0B 리모트 프레임(remote frame) 다른 노드로부터의 데이터 전송 요구를 알리는 프레임 Aribitration Field의 RTR 값이 1이면 해당 메시지 프레임이 리모트 프레임임을 인지. 에러 프레임(error frame) Bus Error가 검출되었음을 알리는 프레임 Bit Error 전송된 Bit의 상태를 Bus 상에서 관측하여 다른 경우 발생 단 ACK Field, Ar.. 2022. 1. 25.
CAN 통신 우선순위 결정 방법 데이터 전송 방법 CAN 통신은 우선순위를 통해 효율적인 통신을 돕는다. 어떻게 우선순위를 결정할까? CAN 통신에는 우성(dominant) 비트와 열성(recessive) 비트가 있다. 우성 비트 : 논리적인 비트 값 0을 가진다. 예를 들어 전기적으로 신호 값을 강제로 low로 내린다. 열성 비트 : 논리적인 비트 값 1을 가진다. 예를 들어 전기적으로 high 상태에 머물러 있는다. 데이터를 전송하는 노드가 2개 이상일 경우 충돌이 발생할 수 있다. 둘이 동시에 보내는 비트 값이 같으면 문제가 되지 않는다. 두 노드가 서로 동시에 0을 보내면 네트워크상에서 0이 지나가며, 둘 다 1이면 1이 지나간다. 그러나 두 노드가 동시에 보내는 비트가 다르다면 네트워크 상에는 우성 비트인 0이 지나가게 된다... 2022. 1. 25.
CAN 통신 동작 원리 CAN 통신은 다중 통신망(Multi Master Network)이며 CSMA/CD+AMP(Carrier Sense Multiple Access / Collision Detection with Arbitration on Message Priority) 방식을 이용한다. CAN Node에 메시지를 보내기 전에 CAN 버스라인이 사용 중인지를 파악한다. 또한 메시지 간의 충돌 검출을 수행한다. 이러한 방식은 이더넷 통신 방식과 유사하다. 어떠한 Node로부터 보내어진 데이터 메시지는 송신 측이나 수신 측의 주소를 포함하지 않는다. 대신에 각 노드의 데이터 메시지 항목에 CAN 네트워크 상에서 노드를 식별하기 위한 식별자(ID, 2.0A : 11bits, 2.0B : 29bits)를 가진다. 네트워크 상에 연.. 2022. 1. 25.
CAN 통신 메시지 구조 CAN 통신에서 메시지 프레임을 사용하여 송수신이 이루어진다. 메시지 프레임은 하나 또는 그 이상의 송신 노드로부터 데이터를 수신 노드로 운반한다. CAN Protocol은 다음과 같은 두 가지 형태의 메시지 프레임을 지원합니다. 표준 CAN (버전 2.0A) 확장 CAN (버전 2.0B) 표준 CAN 메시지 구조(2.0A) 7개의 서로 다른 필드로 구성 프레임의 시작(SOF : Start Of Frame) 필드 메시지 프레임의 시작을 표시하기 위한 필드이다. 메시지 프레임의 최우선에 위치하며 디폴트 "0" 값을 가진다. 중재 필드(Arbitration Field) 11비트의 식별자와 원격 전송 요구(RTR)비트로 구성되어있다. 디폴트 "0"을 가지는 RTR 비트는 비트값이 "0" 일 때 CAN 메시지가.. 2022. 1. 25.
CAN 규격에 따른 종류 CAN의 규격에 따른 종류 CAN 메시지에 있는 식별자(ID)의 길이에 따라 두 가지로 구분 표준 CAN(버전 2.0A) : 11비트 식별자 확장 CAN(버전 2.0B) : 29비트 식별자 CAN 2.0A Controller는 오직 표준 CAN 포맷 방식(CAN 2.0A)의 메시지만 전송 및 수신이 가능하다. 확장 CAN 포맷 방식(CAN 2.0B)의 메시지를 수신 하더라도 그 데이터를 무시해 버린다. 그러나 CAN 2.0B Controller는 모든 메시지 포맷(CAN 2.0A, CAN 2.0B)의 메세지를 송수신 가능하다. ISO 규격에 따라 두 가지로 구분 : 물리계층에서 차이를 가진다. CAN high Speed(ISO 11898) : 1Mbps이상의 고속 통신 가능 CAN Low Speed(IS.. 2022. 1. 25.
728x90