spi 전송 오디 오 데이터 구조 와 프로 세 스 메커니즘 의 디자인 (master - > slave)
데이터 의 전송 은 우 리 는 네트워크 프로 토 콜 을 조금 참고 할 수 있다. 한 단락 의 데 이 터 는 전송 과정 에서 여러 가지 원인 으로 인해 데이터 가 정확하게 수신 되 지 못 할 수도 있다. 그러면 좋 은 데이터 구조 와 전송 체 제 는 데이터 전송 을 더욱 보장 할 것 이다.
struct spi_data{
char sync_byte;// ,
spicmd cmd;// ,
uint16 seq;// ,
uint16 context;//
uint16 crc;//crc
}//spi
enum spicmd{
req_send 0x0000;//
req_start;//
req_end;//
rsp_oknext;// ,
rsp_resend;// ,
}
enum decodetype{
mp3 0x0000;
aac;
wav;
m4a;
…
}//
2. 전송 프로 세 스 메커니즘
오디 오 를 보 낼 때 첫 번 째 데이터 에서 오디 오 에 필요 한 정보 (예: 형식, 이름, 크기...) 를 보 낼 필요 가 있 습 니 다. 첫 번 째 데이터 (예: test. mp3) 를 보 낼 필요 가 있 습 니 다.
uint8 send_buffer[512];
char *audioname="test.mp3";
struct spidata * startdata=(struct spidata *)malloc(sizeof(spidata)); startdata->sybc_byte='S';
startdata->cmd=req_start;
startdata->seq=1;
startdata->context=sizeof(mp3)+strlen(audioname);
startdata->crc=getCrc(&spidata,sizeof(spidata)-sizeof(spidata.crc)); send_buffer[0]='S';//
send_buffer[1]=mp3; mencpy(send_buffer+2,audioname,strlen(audioname));
(uint16 *)(send_buffer+strlen(audioname)+2)=getCrc(send_buffer,strlen(send_buffer)-1);
슬 레이 브 가 데 이 터 를 되 돌려 줄 때 까지 이 데 이 터 를 보 냅 니 다.slave 가 데 이 터 를 받 으 면 데이터 의 정확 여부 에 따라 답장 합 니 다.1. 데이터 가 정확하게 회 복 될 때:
struct spidata *response=(struct spidata *)malloc(sizeof(spidata)); response->sync_byte='S';
response->cmd=rsp_oknext;
response->seq=1;
response->crc=getCrc(response,sizeof(spidata)-1);
2. 데이터 검사 crc 오류 답장:
response->cmd=rsp_resend;
호스트 master 가 slave 답장 을 받 은 후 cmd 와 seq 번호 에 따라 이전 데이터 가 올 바 르 게 도착 하 는 지 확인 합 니 다.1. slave 답장 cmd=rsp_oknext
을 받 으 면 master 는 다음 데이터 (오디 오 데이터) cmd=req_send
를 보 냅 니 다.2. slaver 답장 cmd=rsp_resend
을 받 으 면 master 는 이 데 이 터 를 다시 보 냅 니 다.오디 오 마지막 데 이 터 를 보 낼 때, 수신 자가 데이터 의 끝 을 알 수 있 도록 오디 오 끝 을 설명 하 는 데 이 터 를 보 내야 합 니 다.master 는 휴대 cmd=req_end
명령 만 보 내 면 됩 니 다. slave 는 이 cmd 에 따라 수신 을 끝 냅 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.