Raspberry Pi/I2C> I2C 센서에서 데이터 읽기 (성공)/link : Raspberry Pi에서 I2C의 Repeated Start Condition 활성화

운영 환경
Raspberry Pi 2 Model B (以下RPi)
Raspbian Jessie
Tektronix TDS 2024C (200 MHz, 2GS/s)
とあるI2Cセンサ

I2C 센서의 읽기를 "간편하게"실시하려고 Raspberry Pi를 사용하기 시작했다.

그 결과
  • i2cdump에서 SCL, SDA 파형 확인
  • 주소 범위가 넓은 경우 : OK
  • 주소 범위가 좁은 경우 : NG

  • i2cget에서 SCL, SDA 파형 확인
  • NG

  • RPi.GPIO에서 파이썬으로 코딩
  • ACK 단계에서 응답이 이상합니다
  • RPi를 사용하는 의미가 별로 없다 (MSP430 등의 마이크로 컴퓨터에서 좋다)
  • RTOS가 파괴되어 파형 타이밍도 변경됩니다.


  • 생각을 변경한 결과, 이하에서는 잘 움직였다.

    htps //w w. 등 sp 벨 ry 피. 오 rg / ふぉる ms / ぃぃえ w와 딱 c. php? f=44&t=33334
    의 by edo1 » Fri Oct 30, 2015 4:49 pm
    에 있는 코드를 참고로 하면 움직였다.

    그리고는, 이 성공한 상태로 오실로에서 파형을 확인해, 그것과 동등의 파형을 생성하는 코드를 MSP430으로 실장할 뿐.
    문제는 SDA의 IN/OUT을 전환하는 타이밍은 오실로의 파형으로부터는 모르는 점.

    덧붙여 Python으로 RPi.GPIO를 사용한 후에는, 이하의 커멘드를 실행하지 않으면 마지막 C코드는 정상 동작하지 않았다.
    $ sudo modprobe -r i2c-bcm2708
    $ sudo modprobe i2c-bcm2708
    

    다음이 실제로 읽은 파형 (오렌지가 SCL, 하늘색이 SDA).

  • 왼쪽 커서의 왼쪽이 start condition.
  • 그 후 slave address 0x28을 보내 (7bit).
  • read 비트인 1을 송신(1bit).
  • 오른쪽 커서에서 데이터를 읽습니다 (첫 번째 바이트).
  • 처음 2개는 상태 비트(0x00이면 정상).


  • 다음은 1바이트째와 2바이트째의 파형.


    SCL은 100kHz.

    압력 단위 변환
    h tp // // lc-하고. 코 m / 우니 ts / p

    가르쳐 주신 사항



    @fujiwarasoftservice 님의 코멘트에서 Repeated Start Condition을 Raspberry Pi로 수행하는 방법을 소개했습니다.

    정보 감사입니다.

    좋은 웹페이지 즐겨찾기