컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 암 ​​보드의 spi 컨트롤러 작동 원리에 대해

암 ​​보드의 spi 컨트롤러 작동 원리에 대해

1. SPI 컨트롤러

1.1 개요

SPI 버스는 전이중 직렬 동기 통신 프로토콜, SPI(Serial Peripheral Interface) 직렬 주변 장치 인터페이스입니다. 직렬 데이터 전송을 지원하며 각각 전송 및 수신을 위한 두 개의 독립적인 8/16/32비트 시프트 레지스터를 포함합니다. SPI 전송 중에 데이터는 동기적으로 전송되고(직렬 시프트 아웃) 수신됩니다(직렬 시프트 인).

1.2 SPI 컨트롤러는 다음 기능을 지원합니다.

1) 전이중(Full-duplex), 즉 동시에 보내고 받을 수 있음을 의미합니다.

2) 전송 및 수신을 위한 8/16/32비트 시프트 레지스터입니다.

3) 8비트 프리스케일러 로직은 클록 구성 레지스터의 하위 8비트에 의해 결정됩니다.

4) PCLK, USBCLK 및 Epll 클록을 포함한 3개의 클록 소스.

5) National Semiconductor Microwire 프로토콜과 Motorola의 직렬 주변 장치 인터페이스를 지원합니다.

6) 2개의 독립적인 송신 및 수신 FIFO(각각 16개 샘플 깊이, 32비트 폭).

7) 마스터 모드와 슬레이브 모드를 지원합니다.

8) 수신 작업만 지원하고 전송 작업은 지원하지 않습니다.

9) 송수신의 최대 주파수는 50MHz이지만, CPHA=1이고 슬레이브 송신 모드인 경우 최대 주파수는 20MHz입니다.

1.3 신호 설명

S3C6410의 SPI 컨트롤러와 SPI 인터페이스의 외부 장치 사이에는 외부 신호를 위한 4개의 인터페이스가 있습니다. 이 인터페이스는 일반 GPIO 포트로 사용할 수 있습니다.

XspiCLK:

데이터 전송 시간을 제어하는 ​​데 사용되는 직렬 클록 신호를 입력 및 출력으로 사용할 수 있습니다.

XspiMISO:

마스터 모드에서 마스터 장치는 슬레이브에서 입력으로 사용되는 이 핀을 통해 슬레이브 장치의 출력 핀에서 데이터 출력을 얻습니다. 모드에서는 마스터 장치가 이 핀을 통해 슬레이브 장치로 데이터를 출력하며 이는 출력으로 사용됩니다.

XspiMOSI:

마스터 모드에서 마스터 장치는 이 핀을 통해 슬레이브 장치에 데이터를 출력하며, 이는 슬레이브 모드에서 출력으로 사용되며 마스터 장치는 이를 통해 데이터를 수신합니다. 이 핀은 이때 장치에서 출력되는 데이터가 입력으로 사용됩니다.

XspiCS:

슬레이브 선택 신호, 이 핀이 로우 레벨일 때 모든 데이터 전송/수신 시퀀스가 ​​실행됩니다.

1.4 SPI 동작

S3C6410의 SPI 인터페이스는 S3C6410과 주변기기 간에 1비트의 직렬 데이터를 전송하며 각각 FIFO를 보내거나 받는 DMA를 지원합니다. 동시 양방향 데이터 전송. SPI에는 TX 채널과 RX 채널이라는 두 개의 채널이 있습니다. TX 채널은 TX FIFO에서 주변 장치로 데이터를 전송하는 방법이 있고, RX 채널은 주변 장치에서 RX FIFO로 데이터를 수신하는 방법이 있습니다.

CPU나 DMA가 FIFO에 데이터를 쓰려면 먼저 SPI_TX_DATA 레지스터에 데이터를 써야 합니다. 그러면 이 레지스터의 내용이 자동으로 전송 FIFO로 이동됩니다. 수신 FIFO에서 데이터를 쓰려면 CPU 또는 DMA가 SPI_RX_DATA 레지스터에 액세스해야 합니다. 그러면 수신 FIFO의 데이터가 자동으로 SPI_RX_DATA 레지스터로 이동합니다.

앞에서 언급한 시프트 레지스터와 결합하여 그림 1에서 데이터 레지스터, FIFO 및 시프트 레지스터 간의 관계를 보여줍니다.

1.4.1 작동 모드

HS_SPI는 마스터를 지원합니다. 두 가지 작동 모드가 있습니다. 모드: 마스터 및 슬레이브. 마스터 모드에서 마스터 장치는 HS_SPICLK를 생성하여 주변 장치로 보냅니다. XspiCS 신호는 슬레이브 장치를 선택하는 데 사용됩니다. 이는 데이터가 유효하다는 것을 나타냅니다. 즉, 데이터 패킷 전송 또는 수신을 시작하기 전에 XspiCS를 로우로 설정해야 합니다.

1.4.2 FIFO 액세스

S3C6410의 SPI는 FIFO에 액세스하기 위해 CPU 및 DMA를 지원합니다. CPU 및 DMA에서 액세스하는 FIFO 데이터의 크기는 8/16/32로 선택할 수 있습니다. 비트. 8비트의 데이터 크기를 선택한 경우 유효한 데이터 비트는 비트 0~7입니다. FIFO에 대한 CPU 액세스는 이를 정의하는 데 사용되는 임계값을 트리거하여 정상적으로 열리고 닫힙니다. 각 FIFO의 트리거 임계값은 0~64바이트의 값으로 설정할 수 있습니다. DMA 액세스가 사용되는 경우 SPI_MODE_CFG 레지스터의 TxDMAOn 또는 RxDMAOn 비트를 설정해야 합니다. DMA 액세스는 단일 전송 및 4 버스트 전송만 지원하며 TX FIFO로 데이터를 보낼 때 FIFO가 가득 찰 때까지 DMA 요청 신호는 높게 유지됩니다. . RX FIFO에서 데이터를 수신할 때 FIFO가 비어 있지 않은 한 DMA 요청 신호는 높습니다.

1.4.3 RX FIFO의 끝 바이트

인터럽트 모드에서 RX FIFO의 샘플 수가 임계값보다 작거나 DMA 4 버스트 모드에서는 추가가 없습니다. 데이터가 수신되면 남은 바이트를 테일 바이트라고 합니다. RX FIFO에서 이러한 바이트를 제거하기 위해 내부 타이머와 인터럽트 신호가 사용됩니다. 내부 클록의 값은 APB 버스 클록을 기준으로 1024 클록으로 설정할 수 있습니다. 이 타이머의 값이 0에 도달하면 인터럽트 신호가 발생하고 CPU는 RX FIFO에서 이러한 꼬리 바이트를 제거할 수 있습니다.

1.4.4 데이터 패킷 수 제어

마스터 모드에서 SPI는 수신된 데이터 패킷 수를 제어할 수 있습니다. 원하는 수의 데이터 패킷을 수신하려면 PACKET_CNT_REG 레지스터만 설정하면 됩니다. 수신된 데이터 패킷 수가 설정된 수와 같을 때 SPI는 SPICLK 생성을 중지합니다. 소프트웨어 또는 하드웨어 재설정을 강제로 수행합니다. 여기서 소프트웨어 재설정은 특수 기능 레지스터를 제외한 모든 레지스터를 지울 수 있는 반면, 하드웨어 재설정은 모든 레지스터를 지웁니다.

1.4.5 칩 선택 제어

XspiCS는 수동 제어 또는 자동 제어를 선택할 수 있습니다. 수동 제어 모드의 경우 슬레이브 선택 신호 제어 레지스터 CS_REG의 AUTO_N_MANUAL 비트를 클리어해야 합니다. 이 모드의 XspiCS 레벨은 이 레지스터의 NSSOUT 비트에 의해 제어됩니다. 제어 레지스터 CS_REG를 설정해야 하며, XspiCS 레벨은 패킷 사이에서 자동으로 결정되며, 이 모드에서는 NSSOUT 값에 따라 비활성 기간이 결정됩니다. 아래 그림을 참조하세요.

1.4 .6 SPI 전송 형식

S3C6410의 SPI는 서로 다른 전송 특성을 가진 주변 장치를 지원하기 위해 CPOL과 CPHA에 의해 결정되는 4가지 데이터 전송 형식을 지원합니다. 먼저 이 두 가지 개념을 살펴보겠습니다.

CPOL:

CPOL(클럭 극성) 클록 극성 제어 비트는 직렬 클록이 활성 하이인지(즉, SCLK 클록이 활성 및 하이일 때) 활성 로우인지( 즉, SCLK 클록이 활성 상태이고 로우인 경우) 이 제어 비트는 전송 형식에 큰 영향을 미치지 않습니다. CPOL=0이면 유휴 상태일 때 SCLK가 로우 레벨임을 의미하고, CPOL=1이면 유휴 상태일 때 SCLK가 하이 레벨임을 의미합니다.

CPHA:

CPHA(클럭 단계) 클럭 위상 제어 비트는 두 가지 기본 전송 형식 중 하나를 선택합니다. CPHA는 데이터 샘플링 시간이 SCLK의 첫 번째 전환 에지에 해당하는 경우 데이터 샘플링 시간이 SCLK에 해당하는 경우 CPHA=0입니다. 의 두 번째 전환 에지인 경우 CPHA=1입니다.

SPI 마스터 기기와 슬레이브 기기의 클럭 위상과 극성이 일치해야 합니다. 이렇게 SPI 마스터 기기는 클럭 위상과 CPHA 값을 기준으로 CPOL과 CPHA의 값을 결정해야 합니다. 슬레이브 장치의 극성. 어떤 경우에는 마스터 장치가 요구 사항이 다른 여러 슬레이브 장치와 통신할 수 있도록 하기 위해 마스터 장치가 클록 위상 및 극성 값을 변경해야 합니다.

다음으로 SPI 버스 사양에서 CPHA=0 및 CPHA=1의 전송 형식을 알아보겠습니다.

첫 번째 전환 에지:

SCLK 첫 번째 전환 에지에서는 슬레이브 장치의 첫 번째 데이터 비트가 마스터 장치에 입력되고(즉, 마스터 장치에 래치되며 여기서 래치는 샘플링으로도 이해될 수 있음) 마스터 장치의 첫 번째 데이터 비트가 마스터 장치에 입력됩니다. 슬레이브 장치(즉, 슬레이브 장치에 래치됨). 일부 장치의 경우 슬레이브 장치 데이터 출력 핀의 첫 번째 데이터 출력 비트는 슬레이브 장치가 선택되어 있는 한 유효합니다. 이 형식에서는 /SS 핀이 로우가 된 후 첫 번째 비트가 생성됩니다. 전환 가장자리. CPOL=0 및 CPHA=0인 SPI 컨트롤러 부분의 타이밍 다이어그램은 이 상황에 속합니다.

두 번째 전환 에지:

이전 전환 에지는 직렬 데이터에서 입력됩니다. 핀에 의해 마스터 및 슬레이브 장치에 래치된 데이터 비트는 LSBFE 비트에 의해 결정된 대로 해당 시프트 레지스터의 LSB 또는 MSB로 이동됩니다.

이렇게 처음 두 개의 천이 에지는 하나의 데이터 비트의 전송을 완료하는데, 이는 하나의 천이 에지에 대응하여 하나의 천이 에지가 아닌 전송과 수신이 동시에 수행된다는 의미이기도 합니다. 전송하고 다른 전환 에지는 수신에 해당합니다.

세 번째 전환 에지:

SPI 마스터 장치의 다음 데이터 비트가 출력 핀에서 슬레이브 장치의 입력 핀으로 입력됩니다. 슬레이브 장치의 다음 데이터 비트 1비트의 데이터가 출력 핀에서 마스터 장치의 입력 핀으로 입력됩니다. 이 사이클에서 이 프로세스는 SCLK의 16개 전환 에지 동안 계속됩니다. 홀수 개의 전이 에지가 있는 경우 데이터는 장치에서 래치되며 데이터는 짝수 전이 에지의 시프트 레지스터로 이동됩니다.

이런 방식으로 16개의 SCLK 전환 에지 후에 SPI 마스터 장치 데이터 레지스터에 있던 이전 데이터가 슬레이브 장치 데이터 레지스터로 이동되고 슬레이브 장치 데이터 레지스터에 있던 이전 데이터가 이동되었습니다. 마스터 디바이스의 데이터 레지스터에 넣습니다.

일부 장치에서는 데이터 출력 핀의 첫 번째 데이터 비트 출력이 유효하기 전에 첫 번째 SCK 전환 에지가 필요하며 장치의 두 번째 전환 에지에서 마스터 장치와 슬레이브에 대한 데이터 입력만 동기화합니다. , 이 형식에서는 8클럭 전송 연산 주기의 시작 부분에 CPHA 비트(CPHA=1)를 설정하여 첫 번째 에지가 생성됩니다.

첫 번째 전환 에지:

첫 번째 전환 에지는 SCK 클럭 동기화 지연의 절반 주기 직후에 생성됩니다. 이 때 마스터 장치는 슬레이브 장치에 전송을 지시합니다. 첫 번째 전환 에지. 데이터 비트는 마스터 장치의 데이터 입력 핀으로 이동하지만 이 데이터 비트는 전송될 데이터 바이트의 유효한 데이터 비트가 아닙니다. S3C6410의 타이밍 다이어그램. SPI 컨트롤러는 다음과 같습니다.

두 번째 전환 에지

이것은 마스터 장치와 슬레이브 장치의 래치 전환 에지입니다. 즉, 이 전환 에지에서 슬레이브 장치의 첫 번째 전이 에지 데이터 비트가 마스터 장치에 입력되고(즉, 마스터 장치에 래치됨) 마스터 장치의 첫 번째 데이터 비트가 슬레이브 장치에 입력됩니다(즉, 슬레이브 장치에 래치됨).

세 번째 전환 에지:

이전 전환 에지에서 직렬 데이터 입력 핀에서 마스터 장치와 슬레이브 장치로 래치된 데이터 비트가 해당 비트로 이동됩니다. 또는 비트 레지스터의 MSB는 LSBFE 비트에 의해 결정됩니다. 이 시점에서 하나의 데이터 비트 전송이 완료됩니다.

네 번째 전환 에지:

SPI 마스터 장치의 다음 데이터 비트가 출력 핀에서 슬레이브 장치의 입력 핀으로 입력됩니다. 슬레이브 장치의 다음 데이터 비트 1비트의 데이터가 출력 핀에서 마스터 장치의 입력 핀으로 입력됩니다. 이 사이클에서 이 프로세스는 SCLK의 16개 전환 에지 동안 계속됩니다. 전환 에지는 짝수이고, 데이터는 장치에서 래치되며, 데이터는 홀수 전환 에지의 시프트 레지스터로 이동됩니다.

이런 방식으로 16개의 SCLK 전환 에지 후에 SPI 마스터 장치 데이터 레지스터에 있던 이전 데이터가 슬레이브 장치 데이터 레지스터로 이동되고 슬레이브 장치 데이터 레지스터에 있던 이전 데이터가 이동되었습니다. 마스터 디바이스의 데이터 레지스터에 넣습니다.

上篇: 컴퓨터를 끌 때 전원 플러그를 뽑아야 하나요? 下篇: 5월 1일 노동절 자필 신문의 내용은 무엇입니까?
관련 내용