본문 바로가기

Programming/General

device driver check list (using I2C)


I2C 드라이버를 사용하는 디바이스 드라이버를 작성할때 check list 이다.
모든 디버깅은 의심 포인트 리스트를 만들고 테스트 하기 쉬운것 -> 어려운것 순으로 하는것이 좋다.
문제를 해결했을때 처음에 내가 작성한 "의심 리스트"에 해당 문제가 없었다면 아직 경험이 부족하거나 관련 지식이 불충분한 것이다.

0. 모든 device driver 에 check list 0순위는 전원과 enable gpio high 이다.

1. slave address
보통 slave address 는 spec대로 입력하면 I2C 드라이버 내부적으로 1bit 를 왼쪽으로 shift 해서 사용한다. 혹시 I2C 가 계속 ACK fail 이 난다면 slave address 를 <<1 해서 test 해보자.

2. I2C gpio port 셋팅
일반적으로 host side 에서 GPIO 는 다음과 같이 셋팅한다.
- scl은 output 
- sda 는 send 시 output / write시 intput pullup 으로 셋팅한다.

3. I2C 방식을 open drain으로 셋팅
보통 I2C 는 open drain 방식을 사용하지만 open collector 방식을 사용하기도 한다.
자세한 내용은 구글링 하시기 바란다. (사실 정확한 내용이 기억이 잘 안나네요 --;)

4. I2C clk speed 셋팅
보통 이쯤 오면 아주 예민한 device driver 이다.
I2C driver는 아주 세밀하게 각 delay 와 clk speed 를 결정할 수 있다.
오실로스코프를 물려서 속도를 (보통은)느리게 조절해 본다.