아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
이타치처럼탈주
이타치처럼탈주19.07.18

SPI DMA 송신 시 송신 버퍼 범위 지정이 가능한가요?

예를 들어 Master에서

uint8_t tx[10];​
tx[0] = 0xFE;
tx[1] = 0x30;
tx[2] = 0x10;
tx[3] = 0xFA;

HALSPITransmit DMA(&hspi2, tx, 3);

이렇게 0, 1, 2번 방의 3개 바이트를 보낸 다음

HALSPITransmit DMA(&hspi2, tx, 1);

이런 식으로 사용하면 tx[3]의 버퍼가 송신되는건가요?

추가로, Master가 위처럼 2번 연속 송신하려면 두 송신함수 사이에 receive 함수를 써서 slave가 transmit 함수로 확인신호를 보내야 통신이 가능한가요?

55글자 더 채워주세요.
답변의 개수
1개의 답변이 있어요!
  • Master Tx는 buffer length는 가변이 가능하고 Slave Rx는 수신 바이트를 1바이트로 받아서 처리하시면

    간단할 것 같습니다.

    두 번째 질문은 DMA로 처리하므로 Slave가 수신했다고 알려주면(Slave --> Master) 그 다음 전송을 하기 용이하므로 구현하시는게 나을 듯 싶습니다. SPI IRQ handler() 또는 Callback()에서 처리하면 되겠네요.