WiZwiki W7500P보드로 개발중입니다.
현재 SSP가 SPI와 다르게 되어 있어 개발에 어려움을 느끼고 있습니다. 일단 현재 상태는 보드의 SSP0를 slave 로 세팅합니다.
SSP_StructInit(&SSP_InitStructure);
SSP_InitStructure.SSP_Mode = SSP_Mode_Slave; // SSP0 = Slave
SSP_InitStructure.SSP_DataSize = SSP_DataSize_16b;
SSP_Init(SSP0,&SSP_InitStructure);
이후에 slave로 동작시킨 후 무한루프에 아래 task를 넣었습니다. 이후에 SPI로 6바이트 데이터를 보내면 첫번째 데이터만 받아들이고 두번째 데이터부터는 제대로 받아주지 못하고 있습니다. 이건 8bit모드로 하면 첫번째 바이트만 받아들입니다. 즉 16비트로 하면 16비트 첫번째만 8비트로 하면 8bit첫번째만 받아줍니다.
세팅에 문제가 있으면 알려주시기 바랍니다.
void SSP_Task( void )
{
uint16_t ch;
int i=0;
if (SSP_GetFlagStatus (SSP0, SSP_FLAG_RNE)==RESET)
return;
for(i=0; i<6;i++)
{
while(SSP_GetFlagStatus (SSP0, SSP_FLAG_RNE)==RESET);
ch = SSP_ReceiveData (SSP0);
printf("%x ", ch);
while (SSP_GetFlagStatus (SSP1, SSP_FLAG_TNF) == RESET);
SSP_SendData(SSP0, ch);
}
}
인터럽트 방식으로 해도 초기에 인터럽트가 발생한 후 바로 데이터를 읽어도 첫번째 바이트만 읽혀집니다.
그리고 PA11-PA14를 SSP1으로 사용하려면 어떻게 세팅해야 하나요?