Arduino-SPI (한국어)

이 라이브러리는 Arduino 를 마스터 장치로 사용하여 SPI 장치와 통신 할 수 있습니다.
을 이 라이브러리를 사용하는
#include <SPI.h>

에 대한 간략한 소개 Serial Peripheral Interface(SPI)

Serial Peripheral Interface(SPI)동기 직렬 데이터를 사용되는 프로토콜을 사용하여 마이크로컨트롤러와의 통신을 위한 하나 이상의 주변 장치를 통해 신속하게 짧은 거리. 또한 두 개의 마이크로 컨트롤러 간의 통신에 사용될 수있다.,

는 SPI 연결 항상 하나 마스터 장치(일반적으로 마이크로 컨트롤러)제어하는 주변 장치입니다., 일반적으로있는 세 개의 선은 모든 일반적인 장치:

  • 된장(Master 에 노출)-슬레이브 라인에 대한 데이터 전송,마스터
  • MOSI(Master 밖으로 슬레이브에서)-마스터 라인에 대한 데이터를 보내 주변기기
  • 스탠다드차타드금융지주(Serial 시계) -계 펄스는 데이터를 동기화 전송된

그리고 한 줄로 특정한 모든 장치에 대해

  • SS(슬레이브를 선택합)-pin 각각의 장치에는 마스터할 수 있는 사용하지 않도록 특정한 장치입니다.,

장치의 슬레이브 선택 핀이 낮 으면 마스터와 통신합니다. 그것이 높을 때,그것은 주인을 무시합니다. 이를 통해 동일한 MISO,MOSI 및 CLK 라인을 공유하는 여러 SPI 장치를 가질 수 있습니다.

코드를 작성을 위한 새로운 SPI 장치가 필요한 다음 몇 가지 사항에 유의해야 합니다.

  • 최대 SPI 속도는 장치가 사용할 수 있습니까? 이것은 SPISettings 의 첫 번째 매개 변수에 의해 제어됩니다. 15 메가 헤르츠 정격의 칩을 사용하는 경우 15000000 을 사용하십시오. Arduino 는 SPISettings 와 함께 사용하는 숫자와 같거나 그보다 적은 최고의 속도를 자동으로 사용합니다.,
  • 데이터가 가장 중요한 비트(MSB)또는 가장 중요한 비트(LSB)로 먼저 이동합니까? 이것은 MSBFIRST 또는 LSBFIRST 의 두 번째 SPISettings 매개 변수에 의해 제어됩니다. 대부분의 SPI 칩은 MSB 첫 번째 데이터 순서를 사용합니다.
  • 데이터 클럭이 높거나 낮을 때 유휴 상태입니까? 샘플이 클럭 펄스의 상승 또는 하강 가장자리에 있습니까? 이러한 모드는 SPISettings 의 세 번째 매개 변수에 의해 제어됩니다.

SPI 표준은 느슨하며 각 장치는 조금 다르게 구현합니다. 즉,코드를 작성할 때 장치의 데이터 시트에 특별한주의를 기울여야합니다.,

일반적으로 말하면 네 가지 전송 모드가 있습니다. 이러한 모드를 제어하는지 여부를 데이터 이동에서 밖으로 상승 또는 하강 에지의 데이터 시계 신호(라는 시계 단계),는지 여부와 시계가 유휴 상태일 때 높거나 낮(라는 시계 극성).,se according to this table:

Mode Clock Polarity (CPOL) Clock Phase (CPHA) Output Edge Data Capture
SPI_MODE0 0 0 Falling Rising
SPI_MODE1 0 1 Rising Falling
SPI_MODE2 1 0 Rising Falling
SPI_MODE3 1 1 Falling Rising

Once you have your SPI parameters, use SPI.,beginTransaction()SPI 포트 사용을 시작합니다. SPI 포트는 당신의 모든 설정으로 구성됩니다. SPISettings 를 사용하는 가장 간단하고 효율적인 방법은 SPI 내부에 직접 있습니다.beginTransaction().예를 들어,

SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));

경우 다른 라이브러리를 사용에서 SPI 인터럽트,그들은에 액세스하지 못하게 될 것입니다 SPI 할 때까지 통화SPI.endTransaction(). Spi 설정은 트랜잭션 시작시 적용되며SPI.endTransaction()는 SPI 설정을 변경하지 않습니다., 귀하 또는 일부 라이브러리가 beginTransaction 을 두 번째로 호출하지 않으면 설정이 유지됩니다. 당신이 시도해야 한 시간을 최소화하기 위해 사전에 당신은 전화SPI.endTransaction()의 호환성을 위해 경우에 귀하의 프로그램을 함께 사용하는 다른 라이브러리를 사용하는 SPI.

대부분의 SPI 장치,후SPI.beginTransaction()를 작성합니다 slave select pin LOW,전화SPI.transfer()여러 번 데이터를 전송,다음 쓰 SS pin 높은,그리고 마지막으로 전화SPI.endTransaction().

SPI 에 대한 자세한 내용은 Spi 의 Wikipedia 페이지를 참조하십시오.,

연결

다음과 같은 테이블에 표시되는 핀 SPI 라인에서 다른 Arduino 보드

주는 된장,MOSI,그리고 스탠다드차타드금융지주에서 사용할 수 있는 일관된 물리적 위치에 ICSP 헤더;이 유용하다,예를 들어,설계 방패에서 작동하는 모든 보드입니다.

에 대한 참고 노예 선택(SS)핀에서 AVR 기반 보드

모든 AVR 기반 보드를 가질 SS pin 는 때 유용합니다 그들은 행동으로 슬레이브에 의해 제어되는 외부 마스터입니다., 이 라이브러리 지원에만 마스터 모드의 이 핀을 설정해야 항상이 출력으로 그렇지 않으면 SPI 인터페이스가 될 수 있으로 자동적으로 슬레이브 모드에 의해 하드웨어,연출은 라이브러리 작동할 수 없게 됩니다.그러나 장치에 대한 Ss(Slave Select)로 모든 핀을 사용할 수 있습니다. 예를 들어 Arduino 이더넷 쉴드는 핀 4 를 사용하여 온보드 SD 카드에 대한 SPI 연결을 제어하고 핀 10 을 사용하여 이더넷 컨트롤러와의 연결을 제어합니다.

  • 기압 센서:SPI 프로토콜을 사용하여 센서에서 공기 압력 및 온도를 읽습니다.,
  • 디지털 포트 제어:Spi 프로토콜을 사용하여 AD5206 디지털 포텐쇼미터를 제어합니다.

최종 개정 2019/12/24by SM

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다