일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 자동차sw
- python
- AUTOSAR
- 토플 라이팅
- it
- 확률
- 파이썬
- Bitcoin
- toefl writing
- 클라우드
- 백테스트
- 개발자
- 블록체인
- 자동매매
- TOEFL
- GeorgiaTech
- 백트레이더
- backtrader
- backtest
- 오토사
- 프로그래밍
- 암호화폐
- 비트코인
- probability
- AWS
- 토플
- can
- 아마존 웹 서비스
- Cloud
- 퀀트
- Today
- Total
목록분류 전체보기 (686)
Leo's Garage

CAN 통신 스택은 AUTOSAR에서 CAN 버스를 활용한 차량 통신 시스템 모듈 그룹이다. 이는 애플리케이션에서 프로토콜 및 메시지 속성을 숨기는 것과 함께 CAN 네트워크에 대한 균일한 Interface를 제공한다. Low Level은 통신 스택에서 처리되며, CAN 통신 스택은 표준 CAN 및 CAN FD(하드웨어에서 지원하는 경우)을 지원한다. 위의 불록도는 AUTOSAR 의 CAN 통신과 관련된 세부 레이어를 간략하게 보여주고 있다. 다만 해당 블록도가 전부는 아니다. 이 블록도에서는 통신 서비스, 통신 하드웨어 추상화, 통신 드라이버만 고려하고 있다. 1. CAN NM: CAN Network Manager, CAN 종속 모듈이긴 하지만, HW에 대해서는 독립적인 모듈이다. 주요 목적은 CAN ..

Multiplex message는 일반적으로 메시지의 DLC가 허용하는 것보다 더 많은 Signal을 전달할 수 있게 한다. Multiplex message를 정의하려면 포함된 signal이 "multiflexor"로 설정된 경우 해당 값(index)은 message의 나머지 바이트에서 어떤 데이터가 전송되는지를 나타낸다. ECU는 현재 Multiplex message를 사용하고 있다. Signal1는 모든 경우 전송되는 고정 Signal이다. 그리고 multiplexor signal에 따라서 나머지 두 Byte의 Signal의 경우 서로 다른 내용을 송신할 수 있게 된다. 즉, 제한적인 DLC를 최대한 활용해보고자 하는 방안이라고 생각할 수 있다. 물론 CAN FD의 경우에는 DLC를 최대 64Byte..

배경은 역시나 일반 CAN의 한계 때문이다. 자동차가 발전 됨에 따라서 더 많은 기능과 제어기가 들어가게 되었다. 따라서 CAN의 네트워크 속도는 한계에 직면했고 돌파구가 필요했다. 그래서 CAN을 개발한 Bosch는 2012년에 CAN의 확장 형태인 CAN FD(CAN with Flexible Data rate)의 사양을 발표했다. 표준 CAN 네트워크는 Frame 당 최대 payload가 8bytes인 1Mbit/s로 제한된다. CAN FD는 CAN의 physical layer를 변경하지 않고도 Frame당 최대 64bytes까지 더 긴 Data Field를 허용하여 유효 데이터 전송률을 높인다. 또한 CAN FD는 일반적인 CAN bus arbitration을 유지하여 Arbitration이 끝날 ..

Error Handling은 CAN protocol에 정의되어 있으며, CAN 시스템 성능에 매우 중요한 역할을 한다. Error Handling은 CAN 버스의 메시지의 오류를 감지하여 일반적으로는 송신기가 오류 메시지를 재전송할 수 있게 하는 것을 목표로 하고 있다. 따라서 버스 내의 모든 CAN controller는 메시지 내에서 오류를 감지하려고 시도한다. 일단 오류가 발견되면, 오류를 발견한 노드는 Error Flag를 전송하여 Bus traffic을 파괴한다. 다른 노드는 이 Error flag를 통해서 오류를 감지하고 현재 메시지를 폐기하는 등의 조치를 취한다. 각 노드는 두 개의 Error Counter, 전송 Error Counter와 수신 Error Counter를 가지고 있다. 이 C..

CAN bus의 각 bit는 Timing을 위해 최소 4개의 Quanta로 나뉜다. 이 Quanta는 논리적으로 4개의 그룹 또는 세그먼트로 나뉘게 된다. 1. Synchronization Segment : 동기화 세그먼트 2. Propagation Segment : 전파 세그먼트 3. Phase Segment 1 : 위상 세그먼트 1 4. Phase Segment 2 : 위상 세그먼트 2 이 Segment들은 소위 Time Quantum이라고 불리는 단위 시간의 정수 배를 의미한다. Time Quantum은 CAN system의 Clock 주기와 동일하다. 이는 MCU에 의해 구현되는 것이다. 결국 이것들은 CAN message의 1bit가 날아갈 때, CAN clock의 몇 배가 각 영역에 할당되어야..

9 pin DSUB 이 커넥터는 CiA에서 권장하며 거의 산업 표준이나 다름 없다. 전원이 공급되는 경우에는 +7...+13V, 100mA 범위 내에서 공급되면 된다. 보통 2번 핀에 CAN_L, 7번 핀에 CAN_H를 연결한다.

CAN 버스는 Bit-Stuffing과 함께 NRZ(Non-Return To Zero)를 사용한다. Bit Stuffing이란 수신기에 Signal 정보를 제공하기 위한 방법 중 하나인데, Data 내에 하나 이상의 Bit를 삽입하는 것을 의미하며 일반적으로 수싯기는 이렇게 채워진 Bit를 감지하고 제거 또는 무시하는 방법을 알고 있다. 이는 동기화를 유지하기 위함으로 동일한 극성의 5 bit가 연속되면 반대 극성의 Bit가 삽입되는 것이다. NRZ Bit Coding은 전송된 Binary Signal을 직접 다룬다는 의미이고, Logic 1은 High, Logic 0는 Low에 해당한다. 그런데 이 방식의 특징 중 하나는 같은 극성을 가진 연속적인 비트의 경우 레벨의 변화가 없다는 점이다. 따라서 NR..
CAN에는 명시적인 주소가 없다는 점은 기억해야 한다. 이런 점때문에 각 CAN Controller는 Bus에서 모든 트래픽을 수집하고 HW Filter와 SW 조합으로 해당 메시지가 해당 Node에 있어서 의미있는 메시지인지 아닌지를 판단할 뿐이다. 그래서 사실 CAN에는 message 주소라는 개념은 없다. 대신에 메시지에 존재하는 Identifier를 통해서 메시지의 내용을 식별할 뿐이다. CAN 메시지는 따라서 contents-addressed로 분류한다. conventional message address는 일반적으로 Node X에 대한 메시지가 여기 있다. 라는 식으로 정보를 준다. 하지만 Contents - address의 경우에는 여기 X라는 label이 붙은 데이터가 포함된 메시지가 있다..

메시지 Arbitration ( 둘 이상의 CAN Controller가 Bus를 누가 먼저 사용할 지 합의하는 과정)은 데이터 전송을 위하여 실제 사용가능한 대역폭을 결정하는데 매우 중요하다. CAN 통신의 경우, UART와 다르게 bus 구조로 네트워크에 많은 Node가 함께 연결되어 있다. 즉 우선 순위에 대한 특정한 프로토콜이 필요하며 이를 통해서 데이터 전송에 대한 혼선을 막을 수 있다. 모든 CAN 컨트롤러는 bus가 idle 상태임을 감지하면 곧바로 메시지를 전송할 수 있다. 이 때문에 두 개 이상의 CAN 컨트롤러가 동시에 메시지를 전송하게 되는 상황이 생길 수 있는 것이다. 이러한 메시지 동시 송신은 다음의 과정을 통해서 해결할 수 있다. 메시지를 전송하는 노드는 메시지 전송을 하는 동안에..
CAN 개발을 하다보면 Basic CAN과 Full CAN이라는 용어를 만나게 된다. 도대체 이 용어간의 차이는 무엇이며 유래가 무엇인지 궁금하다. 이 용어는 사실 CAN 개발의 초창기 시절에 유래된 것이다. 아주 오래전에 프로그래머에게 DPRAM 스타일의 interface를 제공하는 Intel 82526 CAN controller가 있었다. Full CAN이라고 하며, 메시지 Buffer를 사용한다. 사용자에 따라서 크기와 개수를 지정할 수 있다. (Messge Object, Mail Box) 메시지의 종류에 따라 메시지 버퍼에 채워진다. 전용 버퍼 개념이기 때문에 각각 자신의 버퍼에 채우게 된다. 각각 Message Object, Mail box를 가지고 있기 때문에 수신된 메시지를 처리함에 있어서 ..