Помощь в библиотеке TMC2130Stepper на STM32F103

As_motion_lab
Чт 10 января 2019 г. 11:40
Всем привет,

Надеюсь, вы, ребята, сможете помочь!

Я использую TMC2130Stepper Библиотека, чтобы установить различные параметры удивительного драйвера TRINAMIC TMC2130 Stepper Motor в моем эскизе.
Это конфигурация с одним выстрелом через SPI, которая устанавливает кучу регистров на драйвере, а затем драйвер использует классическое управление шагом/направлением впоследствии.

TMC2130Stepper Lib не написан для STM32, но мне удалось заставить его компилировать и работать.

https: // github.com/teemuatlut/tmc2130stepper


Первоначально он не скомпилировался из -за DataType contexPR, используемого в TMC2130STEPPER_REGDEFS.час.
Я переименовал каждый экземпляр contexpr в const, и он скомпилировал и работает.
Вот ответ от автора библиотеки об этом: https: // github.com/teemuatlut/tmc2130stepper/weleps/54

Но как только я инициализирую TMC2130, он убивает скорость STM32, и начинает ползать. driver.begin(); // Initiate pins and registeries

Беннебой
Чт 10 января 2019 г. 14:11
Можете ли вы показать нам свой код для построения шагового объекта?

Беннебой
Чт 10 января 2019 г. 14:15
PS, см. Это -> https: // форум.Ардуино.CC/INDEX.PHP?Тема = 384478.0

As_motion_lab
Чт 10 января 2019 г. 15:05
[Беннебой - Чт 10 января 2019 г. 14:11] - Можете ли вы показать нам свой код для построения шагового объекта?
Спасибо, я проверю ссылку.

Вот Contsructor: TMC2130Stepper driver = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, TMC_CS_PIN);

Беннебой
Чт 10 января 2019 г. 15:44
Хорошо, ну, это первое, что уходит с дороги, мне было интересно, использовали ли вы SW SPI, но нет.

Возможно, следите за чтением ContexPR, не уверен, какое ядро ​​вы используете, но Roger использует стандарты GNU11.

As_motion_lab
Чт 10 января 2019 г., 16:54
Спасибо.

Я постараюсь заставить Contexpr и оригинальную версию библиотеки работать в Arduino.

Рик Кимбалл
Чт 10 января 2019 г., 17:04
Если вы используете новый компилятор, Arm-None-Eabi-GCC 7.3.1 Например, он собирает код. Материал contexpr полностью поддерживается в более новой версии. Однако, конечно, текущий arduino_stm32 имеет ошибки с __always_inline thing. Также, вероятно, это не было так много проверить с более новым GCC. Кроме того, вы должны взломать платформу.TXT, чтобы он использовал новый компилятор.

Просто еще одна точка данных.

Рик Кимбалл
Чт 10 января 2019 г., 17:21
На самом деле пример программ TMC2130Stepper с компиляцией с Arm-none-ebi-gcc 4.8.3. ...

Беннебой
Чт 10 января 2019 г., 19:10
Интересно, использует ли OP альтернативная IDE... Может объяснить, почему у него были проблемы с компиляцией...

As_motion_lab
Пт 11 января 2019 г. 1:18
Ну, я буду чертовски!

Я использую стандартную Arduino IDE на своей Dev Machine, но он должен быть устаревшим. Я накопил огромное количество библиотек, поэтому всегда немного опасаюсь обновления, они часто ломаются больше, чем исправляют!

Я только что установил на новой машине, новейший Arduino, Roger Clark STM Core, библиотека TMC2130, и он действительно компилируется без необходимости взлома.

Я проверю его на устройстве в ближайшие несколько дней и сообщу, как оно пойдет.

Ура, ребята!

Mrburnette
Пт 11 января 2019 г. 3:57 утра
[As_motion_lab - Пт 11 января 2019 1:18] - ...
Я использую стандартную Arduino IDE на своей Dev Machine, но он должен быть устаревшим. Я накопил огромное количество библиотек, поэтому всегда немного опасаюсь обновления, они часто ломаются больше, чем исправляют!
...!
Универсальная проблема; Я решил здесь, купив два (2) идентичные блокноты бизнес-класса без аренды. Я установил SSD среднего размера как в Mint, так и в Linux Mint, моя ОС по выбору. Общие расходы составили половину стоимости новой (1) ноутбука Dell с более низкими характеристиками! Старый настольный компьютер (также восстанавливается) действует как лабораторный сервер, на котором находятся все версии всего исходного кода (рабочие каталоги источника застегнуты перед любыми сеансами редактирования.) Я также продолжаю соответствовать ZIP различных ядер и инструментов. Драйвы Terabyte оценены так, что я настоятельно рекомендую два (2) ... Один основной и один USB организовал резервную копию. Если вы никогда не теряли исходный код, вы живете в заимствованное время, статистически говоря ;-)

Луча

As_motion_lab
Солнце 13 января 2019 13:12
Спасибо за информацию

К сожалению, проблема несколько развилась.

Я удалил/переустановил свой Arduino Ide, Rogerclarke STM32 Core, TFT, Touch, TMC2130 и, действительно, библиотека TMC2130 в его стандартной форме без ошибок из -за -std = GNU ++ 11 11 - horay.

Но теперь, когда библиотека TMC2130 инициализирована с драйвером.begin (), вместо STM32, просто работающего очень медленно, он медленно работает и Обновления экрана TFT облажаются. Кажется, что библиотека TMC2130 делает что -то с автобусом SPI, что несовместимо с другими устройствами на нем.

Я могу воспроизвести это по требованию - если я прокомментирую драйвер.Begin (), экран TFT быстро обновляется и выходы на основе сенсорного входа мгновенно реагируют.
Если я не могу.begin (), обновления экрана TFT странные (новые данные делают несколько линий вспыхивать/выключение), а выходы отстают/задерживаются, но шаг ведет так, как и ожидалось, с изменяющимся током TMC2130, невидимкой и т. Д. ожидал.

mausi_mick
Солнце 13 января 2019 13:49
У меня были некоторые проблемы ILI9341-SPI-TFT-Display и MCP48X2 (SPI-DAC) и MCP6S2X (усилитель SPI) на одном и том же SPI-BUS.
Я изменил MCP48x2 на SPI2, и проблема была решена.

As_motion_lab
Солнце 13 января 2019 14:23
[mausi_mick - Солнце 13 января 2019 г. 13:49] - У меня были некоторые проблемы ILI9341-SPI-TFT-Display и MCP48X2 (SPI-DAC) и MCP6S2X (усилитель SPI) на одном и том же SPI-BUS.
Я изменил MCP48x2 на SPI2, и проблема была решена.
Когда вы опубликовали это, я просто ударил загрузку после того, как сделал что -то очень похожее : D

И я думаю, что это может работать сейчас!

Я копал в папке библиотеки TMC2130 и нашел SW_SPI.CPP и SW_SPI.H файлы и после дальнейшего раскопока.
Было несколько строк архитектурных проверок и комментариев о тактовых скоростях, поэтому я подумал, что библиотека TMC2130 инициализация на штифтах HW SPI и, вероятно, перезаписывает скорость SPI или столкновение с другими устройствами.

А потом я обнаружил более длинный конструктор в одном из примеров набросков, которые включают в себя булавки MOSI, MISO и SCK - так что это означает, что библиотека работает на любых контактах, которые вы указали, как предназначено для программного SPI! TMC2130Stepper driver = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, TMC_CS_PIN, TMC_MOSI_PIN, TMC_MISO_PIN, TMC_SCK_PIN);