블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

'485'에 해당되는 글 1건

  1. 2017.03.25 SPI - Half duplex 통신

SPI통신은 Full duplex통신으로,

마스터에서 슬레이브로 데이터를 보내는 동시에, 슬레이브의 데이터가 마스터로 전송된다.

그러나, 실제 프로그램을 하면, 마스터가 슬레이브에게 데이터를 전송한후, 슬레이브가 응답데이터를 보내는 경우가 대부분이다.(버퍼링을 안한다면)

이는 232,422,통신도 마찬가지이다.

실제로는 사용하는 대역폭이 절반밖에 안된다는 말이다.

Full duplex를 100%사용하려면, 양쪽에 버퍼링을 해야한다.

버퍼링으로 인한 메모리 부족, 프로그램 복잡도, 동기 맞추는데 문제가 된다.

즉 Full duplex통신은 비동기 통신에 가깝다.


마스터-슬레이브 구조에서, Half duplex방식을 사용하면 어떨까?

Half duplex방식은 485방식과 동일하다.

SPI Full duplex 가 4선인데 반해, SPI Half duplex는 3선이면 된다.


우선 아래와 같이, 마스터가 슬레이브에게 데이터를 송신하는 경우,

큰 문제는 없어 보인다.

마스터에서는 RX_Disable하지 않으면, 보낸 데이터가 똑같이 수신된다.

데이터수신은 인터럽트가 발생하므로, 좋지않다.

가능하면, RX_Disable로 설정한다.


보낸데이터를 수신해야하는 경우는, 정확한 데이터가 에러없이 잘 전달되었는지 확인하는 용도이다.

그러나, 이것은 선로에서 정확히 보내졌다는것일뿐, 슬레이브가 데이터를 정확하게 받았다는 것은 아니다.

슬레이브가 데이터를 받고, CRC,체크썸등을 응답하는 경우가, 가장 확실한 방법이다.


슬레이에서 데이터를 읽는 경우


SPI통신은 슬레이브 선택핀이 존제한다. IC로 따지면, 칩셀렉트핀이다.

슬레이브도 모두 선택된 상태로, 마스터에서 슬레이브로 데이터를 전송하면,

동시에 모든 슬레이브가 데이터를 수신하게 된다.

물론, 슬레이브는 평소에는 수신모드여야한다.

TX_disable로 되어 있어야한다. 슬레이브의 MISO 포트는 'H', 'L' 가 아닌, high-impedance(단선) 상태여야한다.

'H'상태여도 상관은 없다.(0xFF출력)

그러나 가능하면, high-impedance로 설정해놓아야 한다.


모든 슬레이브를 "선택된 상태"로 놓고, 마스터에서 데이터를 동시에 뿌리는 경우에는

485방식처럼, 모든 슬레이브가 해당 데이터를 수신하고, 응답을 할지, 말지를 결정해야한다.

슬레이브 입장에서는 쓸데없는 데이터를 계속 수신하게 되는 경우도 발생한다.

그러나, 오디오데이터등, 동시에 모든 슬레이브가 수신해야되는 큰 데이터인 경우,

작은 대역폭으로도 모든 슬레이브에 전달할 수 있는 장점이 있다.

이더넷통신에서는 UDP 방식이라고 볼 수 도 있다.

모든 슬레이브가 "선택된 상태"는 슬레이브의 SPI_nCS핀을 "L"로 설정하면 된다.

물리적으로 GND에 연결하면 된다. 또는 슬레이브의 GPIO포트 하나를 사용하여, 자신이 ON/OFF하면 된다.

프로그램적으로 서정할 수 있다면 좋으나, 모든 CPU가 다 되는것은 아니니, 범용적인 방법을 사용하는것이 좋겠다.

이 경우, CLK, DATA 2가닥만 연결해주면 된다.

물론, 마스터와 슬레이브쪽에서는 MISO, MOSI를 묶어주어야 한다.

Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함