신호를 구분하는 방법
1) Time Base(RS485, RS232) --> bps(1초에 n번 쪼갠다음 간격의 전압을 체크함)
2) Clock
https://m.blog.naver.com/conquer6022/221566232231 - 비동기&동기 차이
SPI 통신의 기본
1) DATA를 보낼 수 있는 선과 CLK을 보낼 수 있는 선이 존재
2) MASTER & SLAVE 모드로 동작하고 마스터가 데이터를 초기화 시키고,
"Chip select"라인을 통해 슬레이브를 선택할 수 있게 된다.
3) 반이중 방식, 전이중 방식(기본)
전이중 방식 : 양방향 통신이 가능(내가 말하면서 들을 수 있음 = 전화)
SPI 통신의 문제점
1) 마스터가 슬레이브한테 말을 거는데 어떤 슬레이브한테 말하는건지 모른다.
2) 마스터가 보내는 신호나 슬레이브가 보내는 신호가 같아서 어떤 사람이 신호를 보낸건지 알수가 없다.
<해결>
1) CS선을 이용하여 마스터가 어떤 슬레이브에게 말할건지 결정할 수 있음
2) 마스터와 슬레이브가 연결된 선 중 반드시 마스터가 먼저 말하고 슬레이브가 응답할 수 있는 선을 만들었다.
SPI 기본 구성
SCLK(Serial Clock): 직렬 클럭을 Master에서 출력하여 Slave로 입력해준다. SPI의 통신주기를 SCLK로 설정해주면 된다.
MOSI(Master Output Slave Input) : Master 출력, Slave 입력으로, Master에서 Slave로 데이터를 출력할 때 MOSI를 사용한다.
MISO(Master Input Slave Output) : Slave 출력, Master 입력으로, MOSI를 통해 Slave에 데이터가 들어오면 MISO를 이용하여 Master에 데이터를 출력한다.
CS(Chip Select) : Slave를 선택할 때 사용된다.(Master는 여러 개의 Slave 중에서도 하나를 선택하여 통신을 하게 된다.)
SPI 통신에는 지켜야할 약속이 두 가지 있다.
1) Master가 먼저 말을 해야 Slave가 응답할 수 있다. Slave가 먼저 말할 수 없다.
2) Master가 누구에게 말하는지 알 수 없었지만, CS가 생긴 이후로 누구한테 말하는건지 객관적으로 알 수 있게 됐다. (CS를 LOW로 주면 해당 장치와 통신할 수 있고, HIGH를 주면 통신을 하지 않는다.)
1) Full-Duplex(전이중)
DATA선 2개(MISO, MOSI), SCK선 1개, NSS선 1개
2) Half-Duplex (반이중)
DATA선 1개(MOSI), SCK선 1개, NSS선 1개
3) Receive Only(수신전용)
DATA선 1개(MISO), SCK선 1개, NSS선 1개
4) Transmit Only(송신전용)
DATA선 1개(MOSI), SCK선 1개, NSS선 1개
5) Hadware NSS
- 하드웨어가 자동으로 LOW로 떨어지게 만듬(1:1 일땐 상관없지만 1:N은 신호가 혼잡해진다)
- NSS는 Disalbe되는 경우가 많다.
5) Master로 사용할건지 Slave로 사용할건지 선택 가능
1) Data Size(8bit, 16bit)
- 신호를 한번 보낼때 몇 bit씩 보낼 것인지
- 8bit를 보낼건지 16bit를 보낼건지는 datasheet따라 달라진다
STB : CS(1일 경우 무반응, 0일 경우 반응)
DI/O : b0~b7(한 주기에 8bit 전송)
2) Frist Bit(MSB, LSB)
MSB : 최상위 비트를 전송할 경우
LSB : 최하위 비트를 전송할 경우
(datasheet를 보면 b0, b1, b2, b3...b7로 표현되어 있는데 0번 비트부터 7번 비트까지 순서대로 전송하겠다는 뜻이다. 즉 우리가 사용하는 FND는 LSB를 따른다.)
3) Clock Prescaler
마스터와 슬레이브가 어떤 속도로 SPI통신을 해야하는지 결정해줘야 한다. 장치마다 다르기 때문에 데이터 시트를 참조하여 결정해주면 된다.
4) Clock Porarity
위 데이터시트를 보면 CLK 부분이 존재하는데, HIGH에서 시작하는지 LOW에서 시작하는지 설정해준다
(이거도 datasheet를 보고 설정해줘야 한다)
5) Clock Phase(1 edge, 2 edge)
2 Edge
2 Edge
5) CRC Calculation
오류 검출(SPI랑 관련 없음)
잘보고있어요! ㅎㅎ