spi 통신 예제

SPI 인터페이스 버스는 간단하고 다재다능하여 다양한 주변 장치와 간단하고 빠르게 통신할 수 있습니다. Corelis BusPro-S와 같은 고속 멀티 IO 모드 호스트 어댑터는 모든 테스트 시스템에 SPI 통신 기능을 추가할 뿐만 아니라 디버깅에 매우 중요한 도구가 될 수 있습니다. 코를리스 시리얼 버스 제품에 대한 자세한 내용은 https://www.corelis.com/products-bus-analyzers/ 코를리스 웹사이트를 방문하십시오. 다른 통신 방법보다 더 많은 신호 라인(와이어)이 필요하며, 범용 입력/출력(GPIO) 및 시스템 관리 버스(SMBus)와 같이 LPC 버스의 대역이 아닌 모든 통신은 가상 와이어 사이클을 통해 eSPI 버스를 통해 터널링됩니다. eSPI를 사용하여 마더보드 디자인에서 해당 핀을 제거하기 위해 각각 대역 외 메시지 주기를 지정합니다. [24] 콘텐츠 표현은 간단하고 새로 고쳐야 한다는 것을 이해하기 쉽습니다. 예제 및 참조 링크는 이해하기 쉽기 때문에 마스터와 슬레이브 간의 통신 채널에 더 많은 유연성을 추가합니다. SPI 통신을 시작하려면 마스터는 클럭 신호를 보내고 CS 신호를 사용하도록 설정하여 슬레이브를 선택해야 합니다. 일반적으로 칩 선택은 활성 저신호입니다. 따라서 마스터는 슬레이브를 선택하려면 이 신호에 논리 0을 보내야 합니다. SPI는 전이중 인터페이스입니다. 마스터와 슬레이브 는 각각 MOSI 와 MISO 라인을 통해 동시에 데이터를 보낼 수 있습니다.

SPI 통신 중에 데이터가 동시에 전송되고(MOSI/SDO 버스로 직렬로 이동) 수신(버스의 데이터(MISO/SDI)이 샘플링되거나 읽혀짐). 직렬 클럭 에지는 데이터의 이동 및 샘플링을 동기화합니다. SPI 인터페이스는 사용자에게 데이터를 샘플링 및/또는 이동하기 위해 클럭의 상승 또는 하강 가장자리를 선택할 수 있는 유연성을 제공합니다. SPI 인터페이스를 사용하여 전송되는 데이터 비트 수를 확인하려면 장치 데이터 시트를 참조하십시오. 도 8은 스팬션 S25FL016K 직렬 NOR 플래시 디바이스에 대한 예제 읽기 명령을 나타낸다. 장치에서 읽으려면 빠른 읽기 명령(EBh)이 먼저 첫 번째 IO 줄의 마스터에 의해 전송되고 다른 모든 명령은 삼각측량됩니다. 다음으로 호스트가 주소를 보냅니다. 인터페이스에는 이제 4 개의 양방향 데이터 라인이 있으므로 이를 활용하여 8 클럭 사이클에서 8 모드 비트와 함께 완전한 24 비트 주소를 보낼 수 있습니다. 그런 다음 주소가 2개의 더미 바이트(4클럭 사이클)로 이어지며 장치가 초기 주소를 설정하는 데 추가 시간을 허용합니다.

이 통신을 사용할 수 있는 최대 거리, 최소 최대 데이터 속도 속도 및 마스터로부터 실질적으로 통신할 수 있는 슬레이브 의 수는 얼마입니까? CPOL과 CPHA가 모두 `0`(모드 0으로 정의) 데이터는 시계의 선행 상승 가장자리에서 샘플링됩니다. 모드 0은 SPI 버스 슬레이브 통신에 가장 일반적인 모드입니다. CPOL이 `1`이고 CPHA가 `0`(모드 2)이면 데이터는 시계의 선행 하강 가장자리에서 샘플링됩니다. 마찬가지로 CPOL = `0` 및 CPHA = `1`(모드 1)은 후행 하강 가장자리에서 샘플링된 데이터결과, CpHA = `1`(모드 3)을 가진 CPOL = `1`은 후행 상승 가장자리에서 샘플링된 데이터를 생성합니다. 아래 표 1에는 사용 가능한 모드가 요약되어 있습니다. 도 6에서 볼 수 있듯이, 슬레이브수가 증가함에 따라, 마스터로부터의 칩 선택 라인의 수가 증가한다. 이렇게 하면 마스터에서 필요한 입력 및 출력 수를 빠르게 추가하고 사용할 수 있는 슬레이브 수를 제한할 수 있습니다. 일반 모드에서 슬레이브 수를 늘리는 데 사용할 수 있는 여러 가지 기술이 있습니다.

예를 들어 mux를 사용하여 칩 선택 신호를 생성합니다. 이 표준을 통해 설계자는 20~66MHz의 속도로 1비트, 2비트 또는 4비트 통신을 사용할 수 있으므로 설계자는 성능과 비용을 더 절충할 수 있습니다. [24] 많은 마이크로 컨트롤러에는 데이터 송수신의 모든 세부 사항을 처리하는 SPI 주변 장치가 내장되어 있으며 매우 빠른 속도로 처리할 수 있습니다. SPI 프로토콜은 또한 충분히 간단합니다 (예, 당신!) 데이터를 전송하는 적절한 순서로 I / O 라인을 조작하기 위해 자신의 루틴을 작성할 수 있습니다.