Всем спасибо! Кажись победил! Путём научного тыка в бубен родил
такой код. Правда пришлось добавить еще одну функцию, занятость
SPI. Немножко придется поправить обмен. //
//Чтение байта
static inline unsigned char W5500_Read8(void)
{
LL_SPI_TransmitData8(SPI2, 0x00);//Начинаем обмен
while(!LL_SPI_IsActiveFlag_RXNE(SPI2)){;}//ожидаем ответ
return LL_SPI_ReceiveData8(SPI2);//считываем ответ, сбрасываем флаг приема
}
//Запись байта
static inline void W5500_Write8(unsigned char byte)
{
while(LL_SPI_IsActiveFlag_TXE(SPI2) == 0){;} //Ожидаем готовности
LL_SPI_TransmitData8(SPI2, byte);//Отправляем данные
return;
}
//Занятость SPI
static inline void W5500_WaitReady(void)
{
LL_SPI_ReceiveData8(SPI2);//Очищаем флаг RXNE
while(!LL_SPI_IsActiveFlag_RXNE(SPI2)){;}//Ожидаем готовности
LL_SPI_ReceiveData8(SPI2);//Очищаем флаг RXNE
}
//Тест
while(!0)//Main infinite loop
{
W5500_Write8(0xA0);W5500_Write8(0xF0);W5500_Write8(0xA0);
W5500_WaitReady();
W5500_Read8();W5500_Read8();
__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
}
//
Результат
