2017-12-20 30 views
1

CAN의 경우 SOF (0)에 도달하면 프레임이 시작됩니다. 그러나 우리 시스템이 CAN에 합류했다는 것을 말하면 새로운 CAN 프레임의 시작을 어떻게 감지 할 수 있을까요?CAN 버스 유휴 감지

EOF는 7 개의 열성 비트와 3 개의 IFS (프레임 간 간격) 비트입니다. 따라서 10 개의 연속적인 1을 기다릴 수 있고 이후에 0으로 전환 할 수 있으면 새로운 것의 시작으로 간주 할 수 있습니다 틀.

그러나 이전에 단 하나의 노드가 연결되어 있었다면 제 질문이있었습니다. 그런 다음 ACK 비트가 1이면 ACK 구분 기호 비트는 1이고 7 EOF 프레임 비트는 1입니다. 따라서 3 IFS 비트 전에 10 비트 (열성)를 얻습니다. 노드가 IFS에서 데이터를 보내기 시작하면 무슨 일이 일어날까요?

답변

0

죄송합니다, 내 가정에 오류가있었습니다. 우리가 CAN 프레임 구조를 본다면 노드는 버스를 모니터링 할 필요가 있으며 11 개의 연속적인 비트가 '1'로 감지되면 노드 만이 버스를 유휴 상태로 간주합니다.

위 설명문에 대한 설명. 1 ACK_DELIMETER 비트, 7 EOF 비트 및 3 IFS 비트.

이제 노드 하나만 시스템에 연결되었다고 가정하고 첫 번째 노드가 CAN 프레임의 데이터 부분을 전송하는 동안 다음 노드가 연결되었다고 가정합니다.

두 번째 노드는 CRC-DELIMETER에서 1, ACK_SLT, ACK_DELIMETER, 7 EOF 비트 및 3 개의 IFS 비트를 감지합니다. 노드 2가 전송할 데이터를 가지고 있다면, 그 순간에 버스가 유휴 상태임을 고려하여 IFS 시간의 2 비트로 전송할 것이다 (11 비트의 1 값이 왔기 때문에). 그러나 노드가 IFS 시간의 1 및 2 비트에서 0 비트를 감지하면 Bosch의 CAN 2.0 프로토콜 사양에 따라 과부하 플래그를 시작하여 보냅니다. 노드 1은 과부하 플래그 전송을 시작하고 다음 번부터 통신을 시작합니다 올바르게 작동합니다.

1이 또한 CRC의 마지막 비트로 존재하면 두 번째 노드가 IFS 시간의 1 자리 비트에서 프레임 전송을 시작할 수 있고 노드 1이 사양의 일부로 과부하 프레임 전송을 시작하면 동일한 현상이 발생합니다 .

이것이 완료되지 않은 방법이라고 생각되는 경우 리뷰를 남겨 주시기 바랍니다.