Всем привет. Возможно я очередной спамер, но информации нужной мне не нашел на просторах интернет. И спустя 3 дня кручения и танцев с бубном - прошу о помощи.
В общем есть плата nucleo-144 h743zi2. И в ней есть CAN интерфейс, через который мне нужно реализовать протокол передачи. В связке Uno + mcp2515 протокол был отработан и все работает как часы. Теперь надо все перенести на nucleo, и что не маловажно - это использование Arduino IDE.
В общем я ходил смотрел включал выключал порты на которых есть can интерфейс, но ничего не получилось. Подумал я что надо бы попробовать подключить модуль mcp2515 через SPI. И тут встал вопрос а как же эти порты SPI мне обьявить в той же Arduino IDE?
Может у кого то есть примеры для других камней? или есть подсказка как и что именно с этой платой.
Я знаю что, вы скажите - пиши на STM32CUBEIde ( ребята, пока я в процессе обучения, сложный он, менее понятный)
Это же ардуино, там должно быть все заточено, должны быть хоть какие-то примеры.
По идеи ваш, выше приведенный, код должен собраться под любую плату.
У мну таких плат нету, есть f030 и f100, в списке поддерживаемых их нет, и пытаться проверять не буду. Установщик ардуино должен скачать компилятор gcc_arm, одним словом, проверяйте сами.
void setup() { SPI3.begin(2); //Enables the SPI3 instance with default settings and attaches the CS pin SPI3.beginTransaction(1, settings); //Attaches another CS pin and configure the SPI3 instance with other settings SPI3.transfer(2, 0x52); //Transfers data to the first device SPI3.transfer(1, 0xA4); //Transfers data to the second device. The SPI3 instance is configured with the right settings SPI3.end() //SPI3 instance is disabled }
Список поддерживаемых STM32 довольно широкСпойлера дальше полный бред, каким он был, таким и остался.
Очень очень долго сборка идет, можно два раза поспать.
Ардуиновский Blink под STM32F100RB в минимальной конфигурации
Цитата:
Скетч использует 7544 байт (5%) памяти устройства. Всего доступно 131072 байт. Глобальные переменные используют 868 байт (10%) динамической памяти, оставляя 7324 байт для локальных переменных. Максимум: 8192 байт.
Спойлер
Код:
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); }
// the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Такой код Спойлер
Код:
void setup () { Serial.begin (9600); // Задаем скорость обмена uart-порта 9600 Serial.println ("Hello World!"); // Пишем в консоль "Hello World!" }
void loop () { }
Цитата:
Скетч использует 7692 байт (5%) памяти устройства. Всего доступно 131072 байт. Глобальные переменные используют 868 байт (10%) динамической памяти, оставляя 7324 байт для локальных переменных. Максимум: 8192 байт.
В работе на реальном устройстве не проверялось, на на выходе создается hex bin elf map куча объектников, размер bin последнего кода 8176 байта.
Прямая загрузка из Ардуино иде не проверялась, так как требуется еще установить stm32cubeprg.
а дальше полный бред, каким он был, таким и остался.
Очень очень долго сборка идет, можно два раза поспать.
Недавно мне пришлось делать проект под нордик через ардуину - захотел клиент и все тут. Я проклял все на свете, за то что связался с этим говном. Во первых отладка - она типа есть, но еще типа нет. Как-то удалось подцепить джилинк и завести вижуал студию. Очередной сюрприз - оптимизация жрет код, невозможно тлаживать. Иду без задней мысли в настройки, отрубаю опитимизацию и приехали! Эти дебилы так написали свои говноино библиотеки, что они без оптимизации не собираются! Потому что есть нереализованные виртуальные методы в класах. Когда работает оптимизацмя - они режутся и все вроде ок. Но стоит отрубить это все - и приехали.
Почему долго собирает? Потому что это говно (вижуал студия) сканирует библиотеки каждый раз при сборке.
Теперь про кан и H743. Чел, ты вообще даташит открывал? Ты видел структуру чипа, сколько там разных банок памяти, сколько там шин, что там есть кеш, какое тактирование сложное? Что там вообще-то не CAN, а FDCAN?
У меня есть проект на H743 с каном. И оно работает.
Не выделывайся - ставь CubeIde. Делай проект через визард - среда скачает РЕПОЗИТОРИЙ. И там в репозитории кроме библиотек будут рабочие ПРИМЕРЫ. Если у тебя задача не сложная, можно прямо взять готовый пример за основу и слегка переделать. Более того, для таких чуваков даже сделали специальный ИМПОРТ примеров из репозитория куда надо. Файл-Импорт-Дженерал-Импорт стм32куб экзампл.
Я платы установил, поддержку нужной мне stm32 все есть. На плате Uno + mcp2515 я протокол для управления реализовал, но там просто у ардуины один SPI и я в него. И вот встал вопрос что бы реализовать это все для stm32 и arduino ide. И я подключаю модуль mcp2515 в разметку по пинам SPI1
И что мне делать дальше что бы это чудо начало работать?
в вашем последнем коде не указан какой SPI используется, надо смотреть какой SPI по умолчанию прописан в фале SPI.h Я бы еще и этот файлик mcp2515.h перетряс, может там еще что указано.
Заголовок сообщения: Re: Stm32 (nucleo-h743zi2) SPI, CAN
Добавлено: Ср дек 15, 2021 06:29:35
Потрогал лапой паяльник
Карма: 8
Рейтинг сообщений: 54
Зарегистрирован: Вс мар 03, 2019 08:18:34 Сообщений: 363 Откуда: Волгоград
Рейтинг сообщения:0 Медали: 2
anatoliydenisenko44, а зачем вам mcp2515 у вас же can есть в контролере вам нужен приемопередатчик что-то типа TJA1040T. Я делал летом такой тока f373 все работало тока на LL.
Тоже не понимаю зачем 2515, при том что у вас на борту CAN FD а это существенный плюс по сравнению с обычным CAN. Поэтому и трансивер желателен на минимум 5 мбс
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения