안녕하세요 NM 관련 Communication control 강의 및 마지막 Default Session에 대한 강의를 듣다 궁금한 점이 있어 질문드리게 되었습니다. NM 개념에 대해서 간략하게 설명해주셨는데, 서로 협력하는 제어기들 사이에서 NM 메세지를 보낸다고 이해했는데, 그렇다면 하나의 can 네트워크상에서 NM 묶음?이 여러 가지 있는 것으로 보면 될까요? [ex) 한 네트워크 상에서 제어기 A,B,C가 서로 협력하는 제어기면 -> NM_1 메세지를 서로 주고 받는 형식 / 제어기 D,E,F가 한 세트면 -> NM_2 메세지를 서로 주고 받는 형식] NM 메세지를 협력하는 제어기들 사이에서 로 보내지 않아서 협력하는 제어기들이 모두 꺼진 상태에서, 다시 제어기를 사용(On)하기 위해서는 방법이 어떤 것이 있을까요? 마지막 강의 Default Session에 대하여 질문이 있는데, 전체적인 SW Update Sequence에서 (Non Default Session -> Default Session)으로 돌아가는 것을 방지하기 위해서 주기적으로 보이지는 않지만 Tester Present (0x3E) 서비스를 이용하고 있는 것으로 이해하면 될까요? 마지막 강의에서 SW Update 전체 과정에서 처음 Extended Session 이후에 계속 Non Default Session 이었다면 마지막 부분에 Default Session으로 간단히 변경만 하면 기능을 회복(초기화)할 수 있다고 말씀해주셨습니다. 그렇다면 이전의 SW Update의 마지막 프로세스[Extended Session -> Communication Control (통신 on) -> Control DTC Setting (DTC Status Byte 업데이트 활성화)]의 경우에는 중간에 Default Session으로 어쩌다 변경되었을 것 이라는 가정 하에 진행한 부분이라고 생각하면 될까요? 그리고 그게 맞다면 S3 Timer로 인한 Timeout으로 인해 자동으로 Default Session으로 변경된 것일까요? 다소 많은 질문을 드려 죄송합니다.. 항상 좋은 강의해주셔서 감사드립니다.
안녕하세요. Control DTC Setting 강의를 듣는 과정에서 질문드릴 내용이 있어 말씀드립니다! 해당 Service를 사용하는 이유는 하나의 제어기 (ex: 엔진제어기)가 SW Update 동안에 주기적인 신호 및 정보들을 다른 제어기(ex: 자율주행 제어기)에게 송신하지 못하기 때문에, 다른 제어기가 이를 Error로 인식해서 SW Update 동안에는 DTC Status Byte를 Update하지 마라는 Service로 이해했습니다. 해당 파트 동영상 3:07 부분에서 엔진제어기가 신호를 보내지 못하면 자율주행 제어기 입장에서 Error로 판단한다고 하셨습니다. 이 때 차량의 고장상태를 확인할 때에 저는 엔진제어기가 신호를 보내지 못한 것이기 때문에 자율주행 제어기가 (ex:"엔진제어기가 지금 고장났어")와 같은 엔진제어기 관련 DTC가 발생할 것으로 생각했는데, 자율주행 제어기에서 고장이 발생했었다고 DTC 코드에 기록된다고 하셔서 이 부분 관련해서 궁금합니다! (아니면 혹시, "자율주행 제어기에서 엔진제어기로부터 신호를 받지 못해서, 이에 따라 본인의 동작을 하지 못한 부분에 대한 DTC로써 자율주행 제어기에서 고장이 발생했다" 라는 말씀으로 하신것일까요?) 뒷부분에서는 Functional Address에서의 SPRMIB에 대해서 설명해주셨는데, 혹시 해당 비트를 사용하면 Positive response 응답은 없다고 하셨는데, 제어기 입장에서 Pending Response(NRC: 0x78) 후의 Positive Response를 응답할 수도 있는 것일까요? 이 부분은 OEM에 따라 상이한 부분인지, 아니면 무조건 Positive 면 응답을 하지 말라는 것일까요? 항상 좋은 강의 감사드립니다.
안녕하세요, SW Reprogramming 과정에서 궁금한 점이 있어 질문을 드리게되었습니다. Transfer Data (0x36) 과 Request Transfer Exit(0x37) 이후에 Routine Control Service (0x31)를 이용하여 다운로드가 정상적으로 진행되었는지 확인하는 과정에서 진단기의 결과값을 제어기에게 전달하는 2가지 방법에 대해 질문드릴 점이 있습니다. 2가지 방법 중, 한가지는 Hex 파일의 마지막 2byte는 진단기의 Input들의 결과 값을 적어 보낸다고 하셨는데, 나머지 1가지 방법에서는 Parameter에 담아 보낸다고 하셨습니다. 그렇다면, 후자의 경우에는 Hex 파일의 마지막 2byte에는 결과 값이 적혀있는 것이 아닌, Data 값이 적혀있을 것으로 예상이 되는데, 혹시 이 상황에서는 제어기가 마지막 2byte를 결과 값으로 판단하고 그 2byte를 제외한 Input 값을 계산할 수도 있을까요? 아니면 Parameter에 실어 보낸 경우에는 제어기가 Hex 파일에 있는 모든 값을 Data 값으로 판단하는 것일까요? 말씀주신 결과 값이 2byte라 하셨는데, 대부분 2byte로 사용하는 것일까요? 항상 좋은 강의 해주신 덕분에 많은 도움을 받습니다. 감사합니다!
안녕하세요, 강의 수강하면서 궁금한 점이 있어 질문드리게 되었습니다. Bootloader SW의 필요성에 대한 강의를 들으면서 하기와 같은 궁금점이 생겼습니다. 처음에 Debugger를 통해서 SW를 MCU Flash에 다운을 할 때에는 1개의 SW가 아닌 제어 & Bootloader SW로 총 2개의 SW를 개발해야 한다고 이해했습니다. 여기서 궁금한 점이 해당 2개의 SW가 각각의 다른 영역을 가지고 있으니 각각의 SW를 따로 다운, 즉 Debugger를 통해 총 2번을 다운로드를(제어 SW 1번, Bootloader SW 1번) 수행해야 하는 건가요? 아니면, 작성된 SW Code를 빌드한 Hex 파일 1개에 2개의 영역을 알아서 구분하게 되어 있어서, 그냥 1번 다운로드를 하면 되는 것인지 추상적으로 느껴집니다,, 1번가 비슷한 질문일 수도 있는데, 처음에는 Debugger를 통해서 다운로드를 해야 하는데, 처음의 MCU Flash에는 아무 것도 적혀있지 않은 상태인데 다운로드를 어떤 방식으로 수행하는 것일까요? (Debugger로 다운로드 시에는 아무 것도 적혀 있지 않으니 단순히 Write만 진행하는 것인가요?) (진단통신을 통한 업데이트 부분만 이해하다보니 헷갈리네요,,) (이후의 진단통신을 통한 업데이트 내용은 이해가 되었습니다!) 항상 좋은 강의 감사드립니다.
uart1 수신 인터럽트 테스트 중 질문이 있습니다. 프로그램 실행하면 첫번째 그림과 같이 무작위 쓰레기값이 출력이 되고 그 이후 command입력시 두번째 그림과 같이 개행 없이 출력이 됩니다. 간혹 쓰레기값이 무한정으로 출력되는 경우도 있습니다. 반면 강의자료에는 @b1t1*이 각각 개행되어 출력됩니다. 1) WinIDT 프로그램 소스 확인해보니 @ct1* 과 같은 방식으로 커맨드 문자가 바뀐것 같은데 그게 맞나요? 2) 프로그램 실행 시 쓰레기값이 출력되는 원인이 무엇인지, 커맨드 출력 시 개행이 되지 않는 이유가 무엇인지 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1번 제어기가 passive 보내는데, 2번 제어기가 0을 보내서, bitstuffing rule을 어기지 않게 될 수 있는건 이해했지만, 만약 1번 제어기가 message id가 더 높은 경우에는 2번 제어기가 0을 보내지 못하기 때문에, 무조건 bit stuffing rule 위반에 의해 에러를 network에 보내는것 맞나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. E2E protocol을 사용할때 data frame에 crc와 counter 영역을 따로 둔다고 했는데 데이터 영역에 있는 crc와 메세지 프레임에 따로 CRC 영역이 있는데 그 둘간의 차이는 뭘까요...?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님 궁금한 점 질문드립니다. 앞 강의에서 D-sub 커넥터를 설명해주시고, 지금은 120옴 저항을 설명해주셨는데, 제가 인턴으로 근무하면서 'D-sub 커넥터'라고 언급하기보단 거의 모든 분들이 '120옴 저항'이라는 단어로 해당 핀을 언급하셨습니다. 그러다보니 헷갈려서 그러는데, 저항과 커넥터는 다른 것이지만, CAN통신 특성에 120옴 저항을 사용해야 하기 때문에 해당 저항 특성이 포함되어 있는 D-sub 핀을 사용하는 것이다 라고 이해하고 넘어가도 될까요?
안녕하세요 강사님 CAN에러 처리-2.에러 감지 및 반응 강의를 듣다가 헷갈리는 부분이 있습니다. 9분 40초 쯤에 제어기 하나가 passive error bit를 보내는 중간에 다른 제어기가 0을 보내면 error를 알리는 강도가 낮아진다고 말씀하셨는데 다른 강의에서는 한 제어기가 메세지를 보내는 중간에 끼어들지는 않는다라고 하셨던 것 같습니다. 어떤 순간에 예외적인 경우가 있는 건가요?
외부로부터 wake-up pattern이 버스바를 통해 트랜시버로 들어오면 바로 트랜시버는 wake-up상태가 되어 INH 핀이 활성화되는 것인가요??("wake-up pattern을 받으면 트랜시버는 바로 wake-up하여 INH 핀이 활성화된다"가 맞는 말일까요??) 트랜시버를 wake-up하기 위해 1)wake-up pattern을 트랜시버에 인가 2)INH핀 활성화 3)MCU 켜짐 4)MCU로부터 트랜시버의 정확한 operating mode를 지정하기 위한 STB_N, EN 시그널 활성화 이 시퀀스로 진행되는 것인지 궁금합니다.
STM32F429ZI를 사용하여 따라해볼려고 합니다. CAN transceiver를 사야할까요?? 그리고 CAN transceiver 어떤 모듈을 사야하나요? 4page 왼쪽 그림의 것으로 사려고하는데 구매하신 것 이름 좀 알려주시면 감사하겠습니다. 인터넷 검색하다보니 비슷한 것이 있긴하던데 https://smartstore.naver.com/thproduts/products/9495059078?NaPm=ct%3Dm2r4cje0%7Cci%3Dca48771f2bd08d6cefd839354bf0426b6be1ceaa%7Ctr%3Dslsl%7Csn%3D7948124%7Chk%3D5766a3f7f2f4c9823bc92840cae206a17f940797&nl-query=CAN+Transceiver 해당 모듈 TJA050을 사도 될까요?
통신 타이밍이 맞지 않을 경우 Tseg1, Tseg2을 조절하여 타이밍을 맞춘다고 하셨는데 자신의 보내는 타이밍이 정확한지 확인하려면 다른 ECU에서 데이터가 전송되어야 타이밍 비교가 가능할 것이라고 생각합니다. 제가 알기로는 여러개의 ECU 중 하나의 ECU만 데이터 전송이 가능하나고 앍고 있고 예외 적인 상황읜 CAN ID를 비교하는 arbitration 영역에 동시에 보낼 수 있다고 알고 있습니다. 그러면 arbitration 영역에서 타이밍을 비교한 후 Tseg1, Tseg2을 이용해 타이밍을 맞추는 것인지 확인 부탁 드립니다. 간단하게 얘기해서 이 통신 타이밍을 비교하는 시점이 arbitration 영역에서 하는지 Data 영역에서 하는지 궁금합니다!
제어기 보드는 동작중에 지속적으로 신호를 보내고 있는데, canhigh, canlow 선을 이용하여 canoe에 연결하여도 trace에서 메시지를 읽어들이지를 못하네요 network hardware에서 bitrate와 data ratefd, sample point도 같게 세팅을 했는데도 신호가 연결이 안되면 어떤 부분을 살펴 봐야하나요?
안녕하세요 강의를 듣다가 궁금한게 있어서 질문 드려봅니다. 차량 GSW를 살펴보면 센서신호선이 있고 CAN 선이 또 따로 있던데 센서 신호선은 CAN과 다른 역할을 하는 걸까요? 센서신호선의 전압 값을 ECU에 보낸다고 설명에는 적혀있는데 CAN도 동일하게 센서의 정보들을 내부 컨트롤 모듈에 보내는 걸로 알고있는데 어떻게 다른지 궁금하네요.
만들어진 프로그래밍 코딩을 보다보면 CAN_SUCCESS := 0 CAN_Fail :=1 이라고 한 것이 상수로 정의되어있는 경우가 있던데요. 결국은 ACK 리시브에 대한 값을 할당함으로써 해당 값이 성공이냐 실패에 따라서 또 다른 코딩을 하게 되는거겠네요 이해한 게 맞을까요?