Где найти имя атрибуции для определенной платы?
Я работаю над 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%, но я почти уверен, что это неправильные названия плат.
@R1S8K, 👍0
Обсуждение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
Если вы работаете с 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
- Как извлечь бинарник из микроконтроллера STM32
- Как переключить HC-05 из режима передачи данных в режим AT?
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
Весь смысл 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