2013-08-24 9 views
0

하나의 proc (마스터)에서 다른 (슬레이브)로 문자열을 보내고 슬레이브에서 문자열을 읽고 싶습니다.lpc1788 ssp (SPI) - proc 통신 통신

현재 arduino와 LPC1788을 섞어서 lpc를 마스터로 사용하고 arduino를 슬레이브로 사용합니다. LPC는 ISR에서 arduino가 수신 한 문자열을 올바르게 보냈습니다. 루프 함수에서 모든 문자가 수신되었는지 확인한 다음 문자열을 다시 보냅니다. LPC 측면에서 ISR은 어떤 이유로 작동하지 않습니다. 나는 LPC에서 문자열을 보낸 후

SR = (1<<TNF) | (1<<RNE); 

그래서 내가 넣어 가지고 지연으로 SR 설정 한 후 아두 이노 읽기 시작합니다. 내가받은 P는 항상 문자열 "퐁 \ n을"해야한다 (되지

enter image description here

하지만 아두 이노에서 문자열의 독서는 이상한 같습니다

내가 뭘 문자열을 전송하기 위해 LA에서 보는 것은 ... 다양합니다) enter image description here

나는 대부분의 문제가 SPI 버퍼를 보내고 읽는 동기화 내에 있다고 생각합니다. LPC에서 기능적 ISR없이이를 어떻게 달성 할 수 있습니까?

답변

0

SPI 사양은 CS (SSEL) 라인이 프레임 동안 활성화되어 있어야하고 그 사이에 비활성화되어야한다고 규정합니다. NXP는 이것을 하나의 프레임이라는 단어로 해석했습니다. 이것은 SSP 블록에 의해 생성 된 CS (레거시 SPI에 대해서도 동일 함)가 최대 16 비트의 단일 트랜잭션 동안 만 활성화된다는 것을 의미합니다.

전송되는 단어/프레임 사이에는 항상 간격이 있습니다. 따라서 FIFO를 채우거나 DMA를 사용하는 경우에도 16 클럭 펄스, 짧은 지연 시간, 16 펄스가 표시됩니다.

GPIO 핀을 SSEL로 사용하는 경우 주변 장치가 유휴 상태가 될 때까지 SSEL 어썰트 또는 데 어썰트를 기다려야한다는 점에 유의하십시오.