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()에서 처리하면 되겠네요.