본문 바로가기
MISC.

SPI 버스

by irmus 2008. 7. 17.
예전에 몇년만에 SPI 쓸 일이 있어 위키피디아에서 SPI 페이지를 보고 간단하게 필요한 부분만 요약해 둔 것을 스프링노트에서 옮겨왔다. 마지막의 모드 부분은 절대 기억되지 않고 SPI를 쓸 때 마다 메뉴얼을 뒤적거려야 한다.

  • Serial Peripheral Interface Bus
    •  동기식 직렬 데이타 링크. synchronous serial data link.
  • Full duplex.
  • Master/Slave 모드로 동작.

    • master가 data frame을 initiate.
    • slave는 다수 접속 가능.

      • slave select 신호. chip select.
  • 4개의 신호선으로 연결.

    • SCLK(SCK) : Serial CLocK. 클럭.
    • MOSI(SDO, DO, SO) : Master Output, Slave Input. 마스터->슬레이브 신호선. Serial Data Out.
    • MISO(SDI, DI, SI) : Master Input, Slave Output. 슬레이브->마스터 신호선. Serial Data In.
    • SS(nCS, CS, nSS, STE) : slave select. active low. 마스터 output. 슬레이브가 하나뿐일 경우 low로 tie 시킬 수 있다. 슬레이브 중 falling edge를 검출하는 놈도 있으니 주의.


381px-SPI_single_slave.svg.png

[peer-to-peer 구성]




363px-SPI_three_slaves.svg.png

[1 master, 3 slave 구성]




350px-SPI_three_slaves_daisy_chained.svg.png

[daisy-chain 구성]


  • 데이타 전송.

    • 클럭에 동조되어 비트단위로 전송.
    • MOSI, MISO에서 데이타는 MSB first로 전송된다.
  • Clock Polarity and Phase

    • CPOL. Clock POLarity. clock의 base value가 무엇인가?
    • CPHA. Clock PHAse. clock의  첫번째 edge에서 read할 것인가? 두번째 edge에서 read할 것인가?
    • CPOL=0 : clock의 base value는 0

      • CPHA=0 : clock의 rising edge에서 data read. falling edge에서 data change.
      • CPHA=1 : clock의 falling edge에서 data read. rising edge에서 data change.

    • CPOL=1 : clock의 base value는 1

      • CPHA=0 : clock의 falling edge에서 data read. rising edge에서 data change.
      • CPHA=1 : clock의 rising edge에서 data read. falling edge에서 data change.

    • CPOL과 CPHA의 조합은 모드로 표현되기도 한다.

400px-SPI_timing_diagram.svg.png

[Timing diagram]



MODE CPOL CPHA
0 0 0
1 0 1
2 1 0
3 1 1








이 글은 스프링노트에서 작성되었습니다.