본문 바로가기

개발자/라즈베리파이4

라즈베리파이 spi & i2c 동시에 사용 문제?

반응형

 

 

아직 확인은 안 한 상태인데 문제가 있는 듯 보여서 일단 기사는 캡쳐

 

  • 감지 모자 (astro-pi)는 MCU (또는 AVR이라고도 함)와 통신하는 데 SPI를 사용하고 압력 센서, 온도 / 습도 센서 및 가속도계 / 자이로 스코프 / 자 기계와 통신하려면 I2C를 사용합니다. 이를 위해 헤더 파일, 문서화 지원 및 테스트 / 예제 프로그램 세트를 개발 중입니다. http://experix.sourceforge.net 의 다운로드 섹션, my-hat 디렉토리 에서 찾을 수 있습니다 . (지금 거기에 몇 가지 오류가 있으며 수정 및 온도 측정 예제를 게시 할 준비를하고 있습니다.)
  • SPI 및 I2C 클록 속도는 독립적이며 실제 전송은 전용 하드웨어에서 처리됩니다. 별도의 스레드를 실행하더라도 차이가 없습니다.
  • 내 파이에서 똑같은 작업을 시도하고 있지만 SPI를 실행하는 동안 I2C가 올바르게 실행되는 데 문제가 있습니다. SPI 및 I2C 인터페이스를 실행하는 클럭 속도는 얼마입니까? 각 인터페이스가 별도의 스레드 또는 실행 파일에서 실행됩니까? 하나의 장치에 대해 8Mhz에서 SPI 인터페이스를 실행해야하지만 I2C 장치는 기본 100kHz로 클럭 된 상태로 둡니다. SPI 및 I2C 클록 속도는 독립적이며 실제 전송은 전용 하드웨어에서 처리됩니다. 별도의 스레드를 실행하더라도 차이가 없습니다.
  • 그것이 내가 생각했던 것입니다. 그러나 두 실행 파일을 동시에 실행하면 I2C 판독 값이 지옥으로 이동하기 때문에 확신 할 수 없었습니다. SPI 및 I2C 실행 파일을 동시에 실행하지 않고 독립적으로 실행하면 완벽하게 실행됩니다 (데이터 손상없이 구성된 속도로 데이터 읽기). 그러나 I2C 실행 파일을 먼저 시작한 다음 SPI 실행 파일을 시작하면 I2C 판독 값이 손상되거나 전혀 전달되지 않습니다. 하지만 SPI 수치는 잘 나온다. 그래서 누구도 이것을 경험했는지 알아 보려고했습니다.
  • 안녕하세요, 같은 문제가 있습니다. I2C 1에서 LCD를 사용하고 SPI에서 ATtiny85를 사용하고 있지만 SPI를 사용할 때 I2C가 작동을 멈 춥니 다. 

 

해결방안으로 보이는 것은 스레드 잠금으로 해결

 

  • 나는 여러 스레드가 SPI와 통신하는 통신에서 스레딩 잠금을 사용하여 간헐적 인 바핑을 정리했습니다. 읽기 또는 쓰기 기능은 잠금을 잡고 spi를 열고 읽기 또는 쓰기를 수행 한 다음 잠금을 닫고 해제합니다. 
spi_lock=threading.Lock()


def readx():
  values=None
  with spi_lock:
      spi.open(...
      values=spi.xfer(...
      spi.close(...
  return values

 

 

토론 글타래의 출처 링크 참고

 

 

 

라즈베리파이 IO Interface Module Test

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩