Spi 사용에 대한 질문

안녕하세요. SPI 관련 질문드립니다.

현재 회로 구성은

  • master : W7500 SPI0 사용(8bit mode)
  • slave : SPI eeprom
    와 같이 구성하였습니다.

오실로스코프를 사용하여 SPI signal을 살펴보면 master에서 SPI write시에는 clock/MOSI/CS 신호 모두
출력됨을 확인할 수 있습니다. 문제는 eeprom이다 보니 write만 있는게 아니고 저장된 data의 read동작도
이루어져야 합니다.

eeprom의 read 동작 순서는 다음과 같습니다.

  1. read command 출력 : 0x03
  2. 상위 address 출력
  3. 하위 address 출력
  4. 1 byte data read

질문은 2가지 입니다.

질문1) master인 w7500에서 위의 read동작을 구현하기 위해서는 1,2,3을 차례로 전송하고 data를 읽기 위해
clock이 출력되어야 하는데 어떻게 해야 하는지요?

질문2) master의 CS signal을 스코프로 찍어보면 byte 단위로 전송시 low를 유지하다가 byte전송이 끝나면
high로 복귀하고 다음 byte에서 동일한 동작(high->low->high)을 하더군요. CS의 signal 형태가 byte 단위로
변하지 않고 frame 혹은 packet단위로 low가 유지될 수 있는 설정 방법이 있는지요?

수고하세요.

안녕하세요 :slight_smile:

질문 1 답변) 더미 데이터를 전송하면됩니다 즉 아무 데이터나 보내면 됩니다. ^^

질문 2 답변) GPIO 핀을 CS핀으로 연결하여 Software로 컨트롤하시면 됩니다.
해당 핀을 GPIO로 셋팅(AF1으로 셋팅) 하신 다음
GPIO_SetBits(CS_PORT, CS_PIN);
GPIO_ResetBits(CS_PORT, CS_PIN);
이런식으로 CS 신호를 올렸다 내렸다. 가능합니다.

감사합니다.