i2c 통신할때 write read 동작 방식 질문, 감을 못 잡겠습니다.

raphael4의 이미지

A라는 모듈을 타겟 보드에 연결하여 i2c로 통신 하게 구성되어 있는데

순서는
1. A에서 어떤 값을 읽어서 타겟 보드로 전송하고
2. 타겟 보드에서 i2c 인터럽트가 발생되어
3. 타겟 보드에서 사이즈가 얼마나 되는지 읽고
4. 읽은 사이즈에서 1바이트씩 버퍼에서 값을 읽어 옵니다.

이때 값을 읽어 올때는
먼저 사이즈 주소 write read하고
그다음 실 data 주소 write read하는데
이 과정을 1byte 씩 사이즈가 0이 될때까지 반복합니다.

문제는 가끔 data가 안들어 올때가 있다는 것인데
A모듈에서 값을 읽고 타겟보드에 전송해서 인터럽트가 발생되는 것까지는 정상인데
data를 읽어 오면 문자열 시작인 0x02만 읽고 실 data는 아무것도 없습니다.

왜 이런 문제가 발생되는지 도통 감을 못 잡겠습니다.
A모듈에서 값을 제대로 못 전달하는 것인지
아니면 i2c device driver가 이상한 것인지
i2c 지식이 부족해서 방향조차 못 잡고 있습니다.
조언 부탁드립니다.

goforit의 이미지

> 문제는 가끔 data가 안들어 올때가 있다는 것인데

타켓 모듈의 데이타 시트에 나오는 I2C 패턴과 실제 데이타 패턴을 오실로스코프로 이용하여 비교를 먼저 해야할것 같습니다.

raphael4의 이미지

오실로양을 동원하여 같이 봤는데 이상이 없다는 의견입니다.
제가 H/W 지식이 부족해서 죄송하지만 질문 좀 드리자면
데이타시트 패턴과 데이타 패턴을 비교해서 이상이 없는데
code에서 버퍼 내용을 보면 size는 분명 1이고 data도 0x02말곤 아무것도 없는데
이럴 수가 있는걸까요?

goforit의 이미지

사실은 저는 너무 여러가지 경우를 겪어 봐서 그럴 수도 있다고 봅니다.
저는 I2C 사용하는 리눅스 드라이버를 일할 경우에 항상 오실로양을 옆에 대동합니다.

가령 다음과 같은 경우도 체크 되었는지요?
- 7 bit address format
- 10 bit address format
- 그 외..

또한 커맨드 라인 app (http://www.lm-sensors.org/wiki/I2CTools) 을 수정하여
여러가지 command 날려서 상태를 체크해봅니다.

혹은 I2C 핀과 GPIO 핀이 먹싱되었으면 커널 I2C 드라이버를 무시하고
간단하게 GPIO로 I2C 드라이버를 만들어 연결해 봅니다.(저는 이 것까지 한적이 있습니다.)
이 때는 커널 I2C 드라이버로 정확하게 타임을 맞추지 못해서 그랬던 것으로 기억합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.