칩 데이터시트를 처음 받았는데 PDF 가 300쪽이 넘었다. 처음부터 읽으려니 끝이 안 보였다.
Table of contents
Open Table of contents
순서를 바꿨다
PDF 를 앞에서부터 읽는 대신 필요한 것부터 찾았다.
1. 블록도 칩 안에 뭐가 있는지 그림 한 장
2. 핀 배치 어느 핀이 무엇인지
3. 동작 모드 어떤 상태를 갖고 어떻게 전이하는지
4. 쓸 기능의 절 전체 중 몇 쪽뿐이다
5. 레지스터 맵 실제 코드를 쓸 때 본다
Block Diagram 은 대개 앞쪽에 있고 이것을 보면 전체 구조가 잡힌다. 핀 배치는 회로를 볼 때 필요하다.
동작 모드를 놓치면 레지스터 맵이 안 읽힌다. 레지스터마다 이 모드에서만 유효하다가 붙어 있는데 모드를 모르면 그것이 무슨 말인지 모른다.
이런 문서는 처음부터 끝까지 읽는 방식으로 만들어져 있지 않고 필요한 것을 찾아 읽는 참조용이다.
각주를 봤다
레지스터 표를 볼 때 표만 보고 넘어가면 안 됐다. 표 아래 작은 글씨로 조건이 붙어 있다.
이 값은 특정 모드에서만 유효하다
이 핀은 다른 기능과 공유한다
이 설정 후 N 클럭 대기가 필요하다
이것이 실제로 동작을 정하고 레지스터 값보다 각주가 중요한 경우가 많았다.
표는 무엇이 있는지를 말하고 각주는 언제 그것이 통하는지를 말한다. 각주를 안 읽고 코드를 짜면 동작이 안 하고 이유도 안 보인다.
전기적 특성을 봤다
소프트웨어만 하다 보니 Electrical Characteristics 절을 넘길 뻔했다.
동작 전압 범위
소비 전류
입출력 레벨
타이밍 (설정·유지 시간)
마지막 타이밍이 코드에 영향을 준다. GPIO 를 바꾸고 얼마나 기다려야 하는지가 여기 있다.
너무 빨리 읽으면 안정 전에 읽는 것이고 그러면 값이 틀린다.
에라타와 예제 코드
데이터시트와 별도로 Errata 가 있었다. 문서에 A 라고 돼 있으나 실제로는 B 라는 목록이다.
데이터시트대로 했는데 안 되면 Errata 부터 본다. 이것을 몰라서 하루를 날린 적이 있는데 문서대로 설정했는데 안 되니까 배선을 의심하고 코드를 의심했고 Errata 에 그 레지스터가 적혀 있었다.
새 칩을 받으면 Errata 부터 확인하는 습관이 생겼다.
벤더가 주는 C 예제 코드와도 대조했다. 문서와 예제가 다르면 예제가 맞을 확률이 높은데 예제는 실제로 돌려 본 것이기 때문이다.
다만 예제가 오래된 판 기준일 수 있어서 버전을 확인하고 봤다.
검증 — 읽은 범위의 기록
PDF 300쪽을 다 읽지 않았으니 읽은 부분과 안 읽은 부분을 적어 뒀다.
[읽음]
§3 동작 모드
§7 통신 인터페이스
§11 레지스터 (통신 관련만)
[안 읽음]
§5 아날로그 기능 (안 씀)
§9 저전력 모드 (나중에 필요할 수 있음)
나중에 다른 기능을 쓸 때 어디를 봐야 하는지 바로 안다.
알아낸 것들도 별도 Markdown 메모로 정리했다. 데이터시트에서 찾기 어려웠던 것들이다.
- 이 레지스터는 IDLE 모드에서만 읽힌다 (§3.4 각주)
- 설정 후 10 클럭 대기 필요 (§7.2 타이밍 표)
- 에라타: REG_X 초기값이 문서와 다름
다음에 이 칩을 쓸 때 300쪽이 아니라 이 메모부터 본다.
정리
- 데이터시트를 앞에서부터 읽지 않는다
- 블록도와 핀 배치와 동작 모드를 먼저 보고 필요한 기능으로 간다
- 동작 모드를 먼저 봐야 레지스터 설명이 이해된다
- 표 아래 각주가 실제 동작 조건을 정한다
- 표는 무엇이 있는지를 말하고 각주는 언제 통하는지를 말한다
Electrical Characteristics의 타이밍이 코드의 대기 시간을 정한다Errata를 먼저 확인하고 문서대로 했는데 안 되면 여기 있다- 문서와 예제가 다르면 예제가 맞을 확률이 높다
- 읽은 부분과 알아낸 것을 메모로 남기고 다음에 그것부터 본다