Open BravoHoseok opened 2 months ago
자세한 리뷰 감사합니다. 읽어보면서 제가 그냥 적당히 검색하고 넘어간부분도 있는데 하나하나 고치면서 넘어가야겠네요. 그리고 다른 리뷰에서도 비슷한 내용이 있는데 네트워크 관련해서 일반적인 지식들을 하나로 묶어서 설명해야할거같네요. 그전까진 appendix나 링크같은걸로 남기는게 좋겠어요
위키피디아 링크 추가
BUS 네트워크 노드 관련 내용 삭제
이후 추가할 내용
CAN message 관련 실제 사진
CAN 스펙 관련 자세한 설명
그 외 추가 설명
CAN FD
고민해볼것
현재 우리 Target은 초보자가 이해하는 수준으로 작성 해야 되기 때문에, 보고 이해하기 어려운 용어들은 Wikipedia나 혹은 다른 자료로 링크를 달아 주면 좋을 것 같다.
Point2Point 사용 했던 실사례는 어떤것이 있고 그에 대한 단점이 무었이 있었는지 설명해주면 왜 CAN 통신을 사용해야 하는지에 대한 이유가 명확해져서 좋을 것 같다.
전송속도는 숫자를 써주면 비교하기가 쉬울 것 같아 좋을 것 같음.
동기화 라는 용어도 관련 설명을 달아 주면 좋을 듯. 직렬/병렬 통신에 대해 그림을 넣어주면 상대적으로 이해하기 쉬울 듯
제가 잘못 알고 있을 수도 있는데 이론적으로 무한개가 아니였던 것 같았는데 다시 한번 확인 해보면 좋을 듯.
1나의 CAN Topology에 묶일 수 있는 노드의 갯수들은 각 노드가 전송하는 메세지 전송 속도 갯수 양에 따라 제한이 거릴 수가 있기 때문에, 관련 자료를 좀더 찾아보고 명확히 할 수 있으면 좋을 것 같음. 신뢰성 있는 자료를 링크 달아 주어도 좋을 듯
Multi Master Network랑 Half-duplex 용어설명과 차이를 링크로 달아주면 좋을 듯. 어느때 Full/Half를 사용하는지 등.
Autosar CAN TP 설정에 보면 Full Duplex, Half Duplex에 대한 설정도 가능하기 때문에 관련 문서에 대한 설명을 달아 주면 독자들이 이해하기 더 쉬울 듯.
CAN 버스에서 충돌 방지를 위한 설명이라면 CAN ID 가 정해지는 이유로 설명해주는게 적합 할듯?
실제로 CAN ID를 Bus의 상태와 AND 연산을 통해 CAN BUS가 점유가 되어있는 상태인지 아니인지 판단하고 메시지를 보내는 형태로 우선순위를 판단 하고 있는 것으로 알고 있음.
Dominant와 Recessive가 왜 그 의미를 가지는지 설명해주면 좋을 것 같음
예를들면 왜 0을 Dominant로 부르냐 => &연산에 대해 지배권을 가지고 있는 수이기 때문에
CAN-H, CAN-L의 차동신호는 예전에 알기로는 +5V - 0V 사이의 값이 였던걸로 기억하는데 관련된 내용을 그림으로 넣어주면 이해가 쉬울 듯
예를 들면, CAN-H (5.0v) - CAN-L (0v)= 5V => 1 (Dominant) / CAN-H(2.5v) - CAN-L(2.5v) = 0V => 0 (Recessive)
CAN에 대한 우선순위 및 충돌 방지 방식을 설명하고자 하면 일반적인 네트워크 충돌 회피법은 Appendix로 따로 분류 해도 좋을 것 같음
CAN 메시지 프레임에 관한 설명 내용이 먼저 나오면 좋을 것 같음
상태처리는 어떤 상태를 의미하는지 자세히 써주면 좋을 것 같음
오류라고 하면 어떤 오류들을 처리하는지 예시들이 있으면 좋을 것 같음
수락필터링은 한글보다는 영어로 쓰는게 좋을듯, 영어를 한글로 그대로 번역하면 어색한 부분이 있는듯
과부하, 복구관리 어떤 의미인 것인지 명확히 설명해주는 부분이 있으면 좋을 듯
예를들면 복구관리의 경우 Bus Off로 빠지게 되는경우 실제 Error Counter가 몇에 도달하면 빠지고 복구시 어떠한 매커니즘으로 복구하는지 설명이 있으면 이해하기가 쉬울듯. Autosar Concept으로가 아니라 일반적인 MCU 동작 관련하여 설명 하면 좋을 듯
직렬화/디 직렬화도 영어로 작성하는 것이 이해가 빠를듯 그리고 이 용어 설명이 필요 할 듯
개인적인 의견으로는 OSI랑 CAN 계층에 대한 비교 및 차이점은 Appendix 형태로 넣는 것이 초보자들이 이해 할 때 많은 정보를 넣지 않아도 되서 이해가 좋을듯. 결론은 CAN의 계층에 대해서만 설명해도 충분 할 것 으로 보임
메시지 Frame, Field, Signal을 어떠한 범위로 용어를 사용하는지 이야기 해주면 좋을 듯
CAN Frame 그림은 조금더 직관적인 걸로 사용 하는 것이 좋을 것 같고 맨 상단에 위치하는게 좋을 듯
실제로 CAN Message (Frame)하나가 나갈 떄 Frame안에 어떤 데이터들이 (0101 or 0xdf)들어가는지 시각적으로 보여 주면 이해가 쉽게 될 듯.
이 부분도 그림과 매칭시켜서 설명 해주고 실제로 들어가는 데이터 숫자가 어떻게 되는지 시각적으로 보여 주면 좋을 듯
에러가 발생할 때 어떤 에러 프레임이 나가고 그 에러프레임 데이터 안에는 어떤 숫자들이 들어가는지 시각적으로 그림과 그 안에 데이터를 명시해서 보여주면 좋을 듯
AND 연산으로 버스가 높은 Priority를 가진 CAN ID에 점유되고 있는중인지 아닌지라고 설명을 덧 붙이면 이해가 쉬울듯
AND 연산으로 어떻게 CAN BUS가 점유 되어있는지 아닌지도 보충 설명을 해주면 도움이 될 듯
Message Masking Filtering을 왜 사용하는지 어떤 목적을 위한 Filtering인지에 대해 이유를 달아 주면 좋을듯
MCU 내 CAN device Peripheral 에서 CAN ID Masking이 가능한데 이는 CAN Device Peripheral에 물리적으로 구성된 CAN RX Buffer 개수가 모자를때 이러한 테크닉을 사용 함. Don't Care 처리된 Message 아이디들에 대한 CAN Message Receive Interrupt를 발생시키고 내가 원하는 메시지 아이디인지 확인 후, 메시지 데이터를 을 읽어 들이는 기법이다.
다른 경우로는, Autosar에서 CAN ID Filtering을 걸 수가 있는데, 이는 내가 원하는 메시지만 받기를 위함이고 과도한 인터럽트 발생에 의한 MCU 과부화를 막을 수 있음. Interrupt가 많이 발생 한다는 것은 Stack을 많이 사용하게 되고 이는 곳 Stack Overflow를 야기 할 수 있음
그림으로 그려진 회로도가 있으면 더 좋을 것 같고 왜 120옴 저항을 달면 노이즈에 강건해지는지 설명이 추가되면 더 좋을 것 같다.
CAN FD 설명을 조금더 Technical 하게 설명 하면 좋을 것 같다.
CAN FD의 경우 기존 CAN Frame에 보면 Reserved 되어있는 비트가 있다.
이 비트를 1로 활성화 하면 CAN FD 전송이라는 것을 Tranceiver는 인지 하게 되고
DATA Field를 1M, 2M 등의 주파수로 데이터를 읽어 들이는 형식으로 고안이 되었다.
이는 기존 CAN 통신과 호환을 시키기 위함이다.
기존 CAN 통신과 호환이 되기 위해서는 Data Field를 제외한 영역은 일반 CAN 통신 주파수로 샘플링하여 읽고 DATA 영역만 다르 주파수로 읽어 더 많은 데이터를 전송해도 하나의 Frame으로 보았을 때, CAN Data 전송 Latency를 최소화 하는 방향으로 호환성을 맞추고 고안이 된 걸로 알고 있음.