Небольшое, но немаловажное дополнение

Apr 03, 2022 17:27

Как я уже писал на днях, пины SPI в разных реализациях ядер Arduino, и в частности при использовании микроконтроллера Raspberry Pi Pico могут сильно различаться.
Поэтому, правильным подходом будет не полагаться на дефолтные значения (которые где-то неочевидно заданы, и чтобы выяснить где конкретно, требуется хорошо так полазить по исходникам ядра), а при инициализации периферии указать их явно.
Но и тут есть свои подводные камни.
Поначалу я использовал пин 0 в качестве линии Chip Select (CS) для модуля W5500, и пин 5 в этом же качестве, но для аналогово-цифрового преобразователя MCP3008.
После миграции на экспериментальное ядро с нормально налаженной многопоточностью данная схема работать перестала (точнее, под windows работала, а под linux - извините).

Дальнейшее исследование привело к картинке, с которой следовало бы начинать знакомство с микроконтроллером:

Как видите, сигнал CS0 может быть назначен пинам GP1, GP5, GP17 или GP21.
Переместил физически сигнал с GP0 на GP1 - работа восстановилась.

И еще любопытный момент: на этой картинке есть примечание "Do not use" напротив GP15.
В десятках других распиновок этого примечания нет. Изучение форумов дало информацию о некой ошибке в чипе RP2040, из-за которой использование этой линии может вызвать проблемы. В общем, может да, а может и нет. Если есть способ не использовать эту линию в разработках - не используйте...
Спасибо за предупреждение!

электроника, pico, программирование

Previous post Next post
Up