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 를 결정할 수 있다.
오실로스코프를 물려서 속도를 (보통은)느리게 조절해 본다.
'Programming > General' 카테고리의 다른 글
git - Linux & windows 환경에서 사용하기 (0) | 2010.08.26 |
---|---|
Trace32 - break point 에서 원하는 변수면 area 에 출력하기 (0) | 2010.03.23 |
메모리 번지로 사이즈 계산하기 (0) | 2010.03.15 |
SPI interface (2) | 2010.01.14 |
Makefile 예제 (0) | 2009.10.21 |