Możecie sprawdzić czy ta obsługa SPI zarówno odbiór jak i nadawanie jest poprawne ?
Czy dobrze rozumiem według tego rysunku dane są odbierane i wysyłane od najbardziej znaczącego do najmniej ?
Oraz czy odpowiednio próbkuję dane na odpowiednim zboczu.
Kod: Zaznacz cały
uint8_t SPI_Read_and_Write(uint8_t byte)
{
uint8_t cnt = 0x80, Read_Byte = 0,i = 0;
DIGITAL_IO_SetOutputLow(&CSB);
DIGITAL_IO_SetOutputLow(&SCL);
while(cnt)
{
if(byte & cnt)
{
DIGITAL_IO_SetOutputHigh(&SDA);
}
else
{
DIGITAL_IO_SetOutputLow(&SDA);
}
DIGITAL_IO_SetOutputHigh(&SCL);
for(I = 100; I; I--)
{
}
DIGITAL_IO_SetOutputLow(&SCL);
cnt >>=1;
}
for (i = 0; i < 8; i++)
{
DIGITAL_IO_SetOutputHigh(&SCL);
if(DIGITAL_IO_GetInput(&SDO))
{
Read_Byte |= 0x01 << i;
}
DIGITAL_IO_SetOutputLow(&SCL);
}
DIGITAL_IO_SetOutputHigh(&CSB);
return Read_Byte;
}
Pytam ponieważ próbuję skomunikować się z czujnikiem ale z niewiadomych powodów nie mogę wolę sie upewnić.