Это немного догадка, но мои догадки о том, что код Arduino чаще верен, чем нет.
Проверьте, как вы отправляете данные через Master.
Согласно этомукод, ведомое устройство ожидает, пока вывод SS снизится, затем обращается к SPI, затем очищает вывод ack в течение 1 миллисекунды, а затем отправляет данные связи через последовательный порт на ПК.
Проблема Iздесь видно, что 1 миллисекунда слишком мала для того, чтобы мастер мог правильно ее определить.
Так что я предполагаю, что вы написали мастер-код таким образом, что он не смотрит наПин ACK.Это означает, что мастер очистит вывод SS, выполнит обмен данными, а затем немедленно очистит вывод SS.
Это проблема, потому что ведомый соединяется с последовательным портом, как только это соединение установлено.Это означает, что когда мастер снова устанавливает низкий уровень на выводе SS, ведомый может отправлять данные на последовательный монитор и может вообще пропустить связь.
Чтобы исправить это, вам нужно изменить код ведомого нанепрерывно общайтесь с ведущим устройством, пока вывод SS низок, и отправляйте данные обратно на последовательный монитор только тогда, когда вывод SS становится высоким.