Где найти имя атрибуции для определенной платы?

Я работаю над spi-библиотекой lcd128x64. И работал с моим чипом Arduino Atmega328p.

Теперь я хочу запустить код и на своей мини-плате Maple. Поэтому я должен указать имя на выводах для каждой платы с микросхемой. Но я хочу научиться основам написания этих утверждений.

Не могли бы вы сказать мне, где найти атрибуты для каждой платы?

Сейчас я хочу определить имена выводов для Atmega328p и Maple Mini. Это мое намерение:

#if defined(__AVR_ATmega328P__)
    #define CS_PIN                  10
    #define MOSI_PIN                11
    #define CLK_PIN                 13
#elif defined(STM32_SERIES_F1)  
    #define CS_PIN                  PB12
    #define MOSI_PIN                PB15
    #define CLK_PIN                 PB13
#endif  

Я не думаю, что это правильно на 100%, но я почти уверен, что это неправильные названия плат.

, 👍0

Обсуждение

Весь смысл API Arduino в том, что вам не нужно знать имена контактов. Вам просто нужны номера, которые им присваивает API., @Majenko

библиотеки SPI знают номера выводов. вам не нужно указывать их в обычном случае. контакты 11, 12, 13 действительны для Uno и Nano, но не для ATmega328p., @Juraj

Да, я знаю, но в моей библиотеке lcd128x64 я использую как atmega328p, так и stm32, который использует другие имена контактов, а также имеет два модуля spi. Например, в этой функции инициализации void lcd128x64_init(void){ pinMode (CS_PIN, ВЫХОД); pinMode (CLK_PIN, ВЫХОД); pinMode (MOSI_PIN, ВЫХОД); цифровая запись (CS_PIN, НИЗКИЙ); // отключить CS_PIN SPI.начать(); _задержка_мс (100); // начальная задержка цифровая запись (CS_PIN, ВЫСОКИЙ); // включить CS_PIN ... } имена пинов разные, поэтому я хочу их унифицировать в заголовочном файле., @R1S8K

Также инициализация spi2 для stm32 отличается SPI_2.begin(); // Инициализируем порт SPI_2. SPI_2.setBitOrder(MSBFIRST); // Установить порядок битов SPI_2 SPI_2.setDataMode(SPI_MODE0); //Установить режим данных SPI_2 0 SPI_2.setClockDivider(SPI_CLOCK_DIV16); // Использовать другую скорость для SPI 1 pinMode(SPI2_NSS_PIN, OUTPUT); поэтому я поместил это в свою библиотеку lcd128x64, @R1S8K

Когда я пытаюсь скомпилировать код для maple mini, я получаю следующее: Arduino: 1.8.12 (Windows 10), плата: «Maple Mini, оригинал (17 КБ ОЗУ, 108 КБ флэш-памяти), 72 МГц (нормальный), самый маленький (по умолчанию)» H:\Programming\Program_Files\Arduino\libraries\lcd128x64_spi\lcd128x64_spi.cpp:14:20: фатальная ошибка: avr/io.h: Нет такого файла или каталога #include <avr/io.h> ^ компиляция прекращена. статус выхода 1 Ошибка компиляции для платы Maple Mini. В этом отчете будет больше информации с "Показать подробный вывод во время компиляции" опция включена в Файл -> Настройки., @R1S8K


2 ответа


2

Определения Arduino для идентификации платы имеют форму ARDUINO_<board>, где <board> — значение из <x>. build.board из boards.txt для платы <x>

Например, для плат Arduino AVR в файле boards.txt указано uno.build.board=AVR_UNO, поэтому определение будет ARDUINO_AVR_UNO.

И Arduino имеет идентификацию "архитектуры" тоже. Он имеет вид ARDUINO_ARCH_<arch.name>. <arch.name> — это заглавная версия имени папки с версией пакета boards. Например, AVR для пакетов /arduino/hardware/avr/1.6.21.

,

Но мне нужна конкретная атрибуция, как в этой ссылке. @https://www.microchip.com/webdoc/avrlibcreferencemanual/using_tools_1using_avr_gcc_mach_opt.html@ Я хочу то же самое для STM32. Я не смог найти его авторство., @R1S8K

@ R1S8K, используйте идентификацию платы или архитектуры Arduino, а не идентификацию чипа., @Juraj

ОК, но теперь я получаю фатальную ошибку, включая avr/io .. `Arduino: 1.8.12 (Windows 10), плата: «Maple Mini, Original (17 КБ RAM, 108 КБ Flash), 72 МГц (обычный), самый маленький (по умолчанию) " H:\Programming\Program_Files\Arduino\libraries\lcd128x64_spi\lcd128x64_spi.cpp:14:20: фатальная ошибка: avr/io.h: Нет такого файла или каталога #include <avr/io.h> ^ компиляция прекращена. статус выхода 1 Ошибка компиляции для платы Maple Mini. В этом отчете будет больше информации с "Показать подробный вывод во время компиляции" опция включена в Файл -> Настройки. Что теперь делать?, @R1S8K

@ R1S8K, задай новый вопрос, @Juraj

ОК, я пытаюсь решить это, прежде чем задавать новый вопрос., @R1S8K

Как использовать идентификацию платы?, @R1S8K

@ R1S8K, вместо __AVR_ATmega328P__ используйте ARDUINO_AVR_UNO для определения сопоставления контактов, @Juraj

хорошо, спасибо, меня не волновал Arduino, поскольку он уже определен, но я искал атрибуцию stm32. Я думаю, что нашел его, и он в основном работает., @R1S8K


1

Если вы работаете с Maple Mini, вы можете просмотреть эту папку, вы найдете сопоставление выводов между STM32 и номенклатурой Arduino.

,

Да, ты прав. Я не заметил остальную часть имени! Я думал, что это просто чипы STM, но я нашел там мини-папку с кленовым листом, но также не смог найти правильную атрибуцию., @R1S8K

Я не понимаю, что вы ищете: этого недостаточно {&gpiob, NULL, NULL, 11, 0, ADCx}, /* D0/PB11 */ ?, @fabiuz7

Возможно, *официальный* репозиторий чище: посмотрите [этот файл](https://github.com/stm32duino/Arduino_Core_STM32/blob/master/variants/MAPLEMINI_F103CB/variant.h), @fabiuz7

@fabuiz7 большое спасибо за помощь. На самом деле я нашел часть решения, которое заключается в том, чтобы просто использовать то, что я поместил в основной пост, а именно STM32_SERIES_F1, это сработало, но я получаю другие ошибки, которые я пытаюсь решить сейчас., @R1S8K

попробуйте это определить, у меня сработало ;) ARDUINO_MAPLEMINI_F103CB, @fabiuz7

Нет, это привело меня к этому списку ошибок: ошибка: 'CS_PIN' не был объявлен в этой области pinMode (CS_PIN, ВЫХОД); ошибка: «CLK_PIN» не был объявлен в этой области pinMode (CLK_PIN, ВЫХОД); ошибка: «MOSI_PIN» не был объявлен в этой области pinMode (MOSI_PIN, ВЫХОД); ошибка: 'delay_ms' не был объявлен в этой области задержка_мс (100); // пробуем начальную задержку, @R1S8K

Какое ядро Arduino вы используете? Я установил [это](https://github.com/stm32duino/Arduino_Core_STM32), @fabiuz7

Как разместить ссылку? Извините, я не знаю, как., @R1S8K

Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/105417/discussion-between-r1s8k-and-fabiuz7)., @R1S8K