작성
·
156
답변 2
0
이해하신게 맞습니다.
수신측 제어기는 ack 라는 새로운 메세지로 답장을 보낸다는 개념이 아니고.
송신측이 보낸 메세지 프레임 중에서 ack 비트 부분만 0으로 채우는겁니다.
0이 도미넌트니까 버스 전체에 ack가 0 이 될꺼고. 송신측은 그걸 보고 내가 송신한 메세지가 문제 없이 다른 제어기에게 전해졌다고 판단하게됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
박연수님께서 질문하신 CAN 통신의 ACK 기능에 대한 의문은 많은 분들이 공통적으로 가지는 궁금증입니다. CAN 통신 과정에서 ACK(Acknowledgment) 비트는 데이터 프레임이나 원격 프레임이 성공적으로 수신된 것을 표시하는 데 사용되며, 매우 중요한 역할을 합니다.
질문하신 내용에 대해 직접적으로 관련된 내용을 제공할 수 있는 링크는 다음과 같습니다:
ACK 메커니즘에 대해 조금 더 설명드리면, CAN 네트워크에서 한 노드가 메시지를 송신할 때, 모든 수신 노드가 해당 메시지를 수신하고 정상임을 확인한 경우에는 ACK 슬롯에 도미넌트(0) 값을 채웁니다. 이는 수신 노드들이 메시지를 제대로 받았다는 것을 의미하며, 이 과정은 하드웨어 레벨에서 자동으로 이루어지기 때문에 수신 노드가 별도로 전체 CAN 프레임을 송신하는 것이 아니라, 전체 네트워크 상에서 제어 신호를 통해 이루어집니다. CAN 네트워크의 이러한 특성은 효율적인 통신과 더불어 네트워크 상의 충돌을 방지하는 데 기여합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
빠른 답변 감사합니다.
그러면 송신제어기가 메시지를 보낼때 ack비트까지
작성하고 잠시 대기하면서 수신제어기들이 메시지를 정상적으로 수신하고 ack비트에 0을 쓰는 것을 확인한 뒤에, 다시 송신제어기가 end of frame을 보내면서 송신이 마무리된다고 보면될까요?
*ack비트를 보낸 뒤에 수신제어기들이 메시지를 정상적으로 확인하고 CRC체크하고 하는 과정들이 곧바로 이루어지진 않을 것 같아서 질문드립니다.