기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하십니까?

 

I2C BUS SPEC(or 이론)에 의하면, 1개의 I2C BUS에 여러 개의 device(=slave)를 연결하여도 됩니다.

그런데, Embedded linux 기반 제품에서, 3개를 연결하여서 제품을 개발하였는데, 오동작을 하더군요

물론, slaver address 문제는 아니었습니다.

원인을 찾지 못하여, 그 다음부터는 1개씩 연결하는 방식으로 회로를 변경하여 해결하였습니다.

 

혹시, I2C에 여러 개 device를 연결하여 성공하신 분 계신지요 ?

혹시, 점검해야 하는 부분을 알려 주시면 감사하겠습니다.

제가 무엇을 잘못한 것인지요 ?

아니면, 이론과 실제는 달라서 그런지요 ?

 

답변 감사드립니다. ^^ 꾸벅 ^^


고도리

2013.10.05 11:55:09
*.200.239.210

고속 장치들이 붙어 있을 경우 (ex> G-sensor) 오동작 할 

가능성이 높습니다.


하드웨어 엔지니어 분들은 잘 인정하지 않지만........^^

s/w 입장에선 값이 튀는 경우가 나옵니다.


딱히 설명하기는 그렇지만요....쩝

고길동

2013.10.05 21:56:46
*.139.103.42

추천
1
비추천
0

이 문제는 펌웨어를 오래 해온 제 입장에서 답변 드리겠습니다.

I2C가 원래 여러개의 IC를 붙일 수 있게 설계된 거라 여러 개를 붙여도 잘 돼야 합니다.

안되는 문제는 풀업 저항값이나 프로그램에서 수정해야 합니다.


풀업은 여러개 IC를 붙일 수록 결합 캐패시턴스가 증가해서 파형이 점점 뭉게집니다.

파형이 덜 뭉게지도록 풀업값을 키워줘야 합니다.


프로그램적으로는 일반 시리얼 통신과 달리 I2C는 철저한 state machine 으로 동작합니다.

master와 slave가 서로 state가 맞지 않으면 통신이 안됩니다.

그런데 부팅시나 노이즈 등으로 IC의 상태가 mater와 맞지 않을 수 있습니다.

IC 들이 초기화 과정에서 펄스 같은게 튀면 다른 IC들이 어떤 신호로 받아들일 수 있겠죠.

그런 경우에는 I2C bus recovery 동작을 해줘야 합니다.


IC2 bus recovery 과정은 Analog Device의 AN-686 을 참조하세요.

http://www.analog.com/static/imported-files/application_notes/54305147357414AN686_0.pdf

List of Articles
번호 제목 글쓴이 날짜 조회 수
5928 USB memory stick과 USB HDD 구분 방법 문의 [4] 신현호 2013-10-08 2222
5927 ndk를 이용한 native code의 최적화와 Cygwin 비트 환경 [1] 혼자서기 2013-10-08 1931
» I2C BUS에 다수의 device를 연결시 문제점 [2] 열심히 2013-10-05 2152
5925 커널에 디바이스 드라이버개발 어떻게 시작해야 될런지.. [2] pedor11 2013-10-04 1822
5924 센서 관련 질문 드립니다. [3] 강유 2013-10-03 1609
5923 PC -> 임배디드 보드 간 USB 통신질문 드립니다. [6] 황순일 2013-10-01 2479
5922 리눅스 txt 파일저장하기 [1] ice179 2013-10-01 2041
5921 origen 4412 board 의 android building error에 대한 조언요청 [2] 김경식 2013-09-28 1623
5920 BCM5358(MIPS계열)에 3.5.7.16 커널 포팅 문제... [4] 강해야산다 2013-09-24 2157
5919 혹시 Android4.3에 들어온 Camera3 쪽 보고 계신분 없나요? EverydayMayday 2013-09-16 1492
5918 aesop2440 1차 보드 자료 요청드립니다. [13] 최고운 2013-09-13 1879
5917 multi format codec 코드 실행시 에러가 나는데요 [6] ice179 2013-09-11 2052
5916 probe로 넘겨지는 platform_device 인자 [1] wizard14 2013-09-11 1892
5915 android stagefright의 deepBuffer의 용도 [1] ljcg 2013-09-10 1594
5914 arndale 보드에서 opencl 사용하는 방법에 대한 싸이트 김영준 2013-09-10 1513
5913 exynos4412에서 mfc 참조할 예제가 있나요? [1] ice179 2013-09-10 1891
5912 안드로이드 플랫폼 일반전화선간의 소통?에 관한 질문입니다. [6] 레드다 2013-09-07 1688
5911 라즈베리파이간 GPIO로 UART 통신을 하고 싶습니다. [1] Supsupi 2013-09-06 3025
5910 AMOLED 관련 질문. 가림토 2013-09-06 2065
5909 video standards 가 무엇을 의미하는건가요? [1] pedor11 2013-09-05 1434

사용자 로그인