LabHub
배우기 러닝패스 코스

센서는 멀쩡한데 보드가 못 알아듣는다 · 정체를 모르는 포착 · 실습

이 파일이 무슨 버스인지부터 모르겠다

LabHub 에서 이어서 보기

목표

I2C 포착 네 편과 SPI 포착 세 편을 직접 해독하고, 마지막에 이름이 붙어 있지 않은 포착 셋을 받아 어떤 버스인지 가려내고 고장에 숫자 증거를 붙여 보고합니다.

왜 중요한가

드라이버가 내놓는 "장치가 응답하지 않습니다" 한 줄에는 서로 다른 원인 넷이 뭉쳐 있습니다. 주소가 틀린 것, 슬레이브가 시간을 버는 것, 풀업이 약해 상승이 비트 시간을 다 쓰는 것, 버스가 통째로 잠긴 것. 이 넷은 파형에서 전혀 다르게 생겼고, 고칠 사람도 각각 다릅니다 — 펌웨어, 드라이버의 복구 절차, 하드웨어. 파형에서 가려내면 보고서 한 줄이 담당자 한 명을 지목합니다. SPI 쪽은 반대로 클럭이 함께 오므로 속도 문제가 없고, 대신 어느 모서리에서 읽느냐선택선이 언제 내려가느냐가 조용한 고장을 만듭니다.

단계

1. 두 선짜리 포착을 읽는다 — 표본 속도, 상승 시간, SCL 저 구간의 분포를 잽니다.
2. START 와 STOP 을 찾는다 — SCL 이 높은 동안의 SDA 변화만 조건으로 셉니다.
3. 주소와 ACK 를 읽어 낸다 — 9비트 묶음으로 바이트와 ACK 를 복원합니다.
4. 아무도 응답하지 않은 주소 — NACK 가 실제로는 무엇의 부재인지 확인합니다.
5. 마스터가 만들지 않은 구간 — 클럭 늘이기를 길이 분포로 찾아냅니다.
6. 상승이 비트 시간을 다 쓴다 — 약한 풀업을 상승 시간과 임계값 두 개로 증명합니다.
7. 네 조합 중 어느 것인가 — 유휴 준위와 데이터가 바뀌는 모서리로 모드를 정합니다.
8. 선택선이 늦으면 개수가 먼저 말한다 — 8의 배수가 깨지는 것을 봅니다.
9. 이름 없는 포착 셋을 가려낸다 — 버스와 고장을 증거와 함께 보고합니다.

참고

단계 9개

  1. 두 선짜리 포착을 읽는다
  2. START 와 STOP 을 찾는다
  3. 주소와 ACK 를 읽어 낸다
  4. 아무도 응답하지 않은 주소
  5. 마스터가 만들지 않은 구간
  6. 상승이 비트 시간을 다 쓴다
  7. 네 조합 중 어느 것인가
  8. 선택선이 늦으면 개수가 먼저 말한다
  9. 이름 없는 포착 셋을 가려낸다