Не могу поместить это в комментарии.Но я дам несколько советов.сначала проверьте CPOL, SPI_CPHA, SPI_NSS (CS).
Вы настраиваете управление CS с помощью программного обеспечения, ваши подчиненные аспекты будут контролироваться через вывод CS или нет ??Кроме того, вы знаете, как настроены ваши ведомые регистры SPI CPHA, CPOL?Если ведомый SPI имеет разные настройки SPOL, CPHA, это также может быть причиной, по которой он не работает.Как я уже читал в некоторых комментариях, вы используете enc28j60.
Таблица данных гласит:
" Перед получением каких-либо пакетов приемный буфер должен быть инициализирован путем программирования указателей ERXST и ERXND."Вы должны узнать, как это сделать правильно.Кроме того, для работы этого чипа требуется тактовый вход 25 МГц.И максимальная скорость SPI может поддерживать 20 МГц.Убедитесь, что вы выполнили эти условия.
Также было бы хорошо отладить с помощью осциллографа.Если у вас нет осциллографа, попробуйте запустить другой модуль SPI на том же чипе (stm32) в качестве ведомого устройства и установить те же параметры CPOL, CPHA и CS, что и у вашего основного SPI.По крайней мере, вы начнете с SPI со стороны мастера.Точно прочитайте таблицу данных enc28J60 и попробуйте отправить на нее пакеты, когда вы тестируете ваш мастер SPI.С первого взгляда enc28J60 выглядит довольно сложным чипом.