Библиотека шины CAN для STM32F103

Watswat5
Пн, 04 мая 2015 г., 21:19
Я ищу библиотеку рабочей банки для STM32F103. Я знаю, что у него есть аппаратное обеспечение для этого, но глядя на какой -то пример кода (найденный здесь: https: // www.Олимекс.com/products/duino/s ... E-Hardware), Я полностью потерян.

Может ли кто -нибудь создать библиотеку CAN, похожая на библиотеку MCP2515 для Arduino? Эта библиотека интуитивно понятна и прост в использовании, даже для пользователей, которые почти ничего не знают о чем.

Библиотеку MCP2515 можно найти здесь: https: // github.com/coryjfowler/mcp_can_lib

Фоно
Вторник 5 мая 2015 г., 21:08
Привет,
У Maple World уже есть библиотека CAN, которая в конечном итоге работала с некоторыми усилиями и различными вкладами, включая Mine.
Вы можете посмотреть здесь: http: // форумы.Leaflabs.com/тема.PHP?ID = 802
Я думаю, что постараюсь перенести его в Ардуино, когда у меня будет время сделать это. Пока что версия Maple работает довольно хорошо.

phantom_tss
Чт 23 июля 2015 г., 17:11
Мне это нужно :рулон:

Rogerclark
Чт 23 июля 2015 г., 21:25
Вам, вероятно, нужно посмотреть, сможете ли вы связаться с автором этой ссылки

http: // akb77.com/g/files/media/maple.Ха ... 0.0.12.rar

Прошло более года с тех пор, как кто -либо был активен на форуме Maple, обсуждая это, и на форуме также могут быть обновления, не включенные в этот код.

Это может даже не компилировать

phantom_tss
Пт 24 июля 2015 г. 8:08
Могу ли я использовать эту библиотеку для платы STM32F103CBT6?

Rogerclark
Пт 24 июля 2015 г. 8:29
Я только что скачал этот файл, и его больше, чем просто библиотека, он имеет замену для некоторых основных файлов, включая RCC и USB, так что в основном я подозреваю, что он не будет работать.

я.E маловероятно, что вы можете просто заменить RCC.C и USB.c файлы с теми, которые из этой загрузки почти наверняка RCC.C был обновлен с тех пор, как эти файлы были сведены (в 2012 году), и я подозреваю.в

Вам нужно было бы отличить эти файлы с теми, которые отправлены как часть Maple IDE еще в 2012 году (IDE все еще может быть загружен), и определить, какие изменения были внесены автором, вам нужно применить те же изменения к нынешним копиям USB.C и RCC.C и .час

Не делая самого этого, я понятия не имею, насколько легко или сложно, это было бы слияние в изменениях.


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

Спасибо

Роджер

phantom_tss
Пт 24 июля 2015 12:01
Большое спасибо :)

Пеппев
СЕД 25 июля 2015 г. 9:08
Я тоже заинтересован в этой библиотеке, я стараюсь построить интерфейс NMEA2000 с Maple Mini (Arduino Uno слишком медленная для обработки всех данных на шине CAN). Пожалуйста, держите меня в курсе этого.

Фоно
Сб 25 июля 2015 г. 11:38
Привет,
Мне жаль, что у меня еще не было времени, чтобы работать над этим портом. Если вы просматриваете ветку на форуме Maple (http: // форумы.Leaflabs.com/тема.PHP?ID = 802), вы найдете упоминания об изменениях в USB и RCC.
Это связано с тем, что в STM32F103CBT6, используемом на платах Maple и Olimexino, USB и CAN являются взаимоисключающими, поскольку они используют общую часть или память (что жаль, поскольку вы не можете отладить применение, написав информацию в Serialusb канал).
Кроме того, CAN и USB имеют общий вектор прерывания.
В оригинальной библиотеке они забыли добавить переключатель, чтобы направить прерывание либо в USB, либо на обработку CAN. Который я добавил.
Недостаток в том, что мне пришлось объявить идентификатор в ядре, который принадлежит библиотеке CAN. До сих пор я должен включить библиотеку CAN в каждом проекте, даже если она не использует банку, просто потому, что отсутствие идентификатора создаст ошибку компиляции.
В моем вкладе на форум вы увидите линии, которые изменены в обоих USB.C и RCC.C и .час.
Роджер Кларк прав, говоря, что эти файлы, вероятно, изменились с момента версии, которую я использовал; Но если вы внесете только упомянутые изменения в текущих основных файлах, я думаю, это будет работать.
Если, кстати, вы найдете средства, чтобы избавить пользователя от необходимости включить библиотеку CAN, когда она не понадобится, это было бы здорово.
С уважением,
Жан-Марк

Rogerclark
Сб 25 июля 2015 г. 12:34
Жан-Марк

Вы пробовали использовать слабую ссылку на фиктивного идентификатора?

Основной код делает это довольно много для ISRS по умолчанию

Пеппев
Сб 25 июля 2015 г. 16:07
Я понимаю, я подозреваю о USB/CAN PINS и обмене памятью, теперь вы подтверждаете меня, мое беспокойство. Кстати, я думаю, что лучшее и простое решение - это использование стандартной платы MCP2515 со встроенным трансивером, как этот. С 3USD у нас есть трансивер и контроллер в маленьком модуле (в любом случае мы должны добавить трансивер для интерфейса Maple Mini с шиной CAN). Я проверил Flori1989 Библиотека MCP2515 и скомпилируйте без ошибок. Эскиз Maple Mini, библиотека общается с MCP2515 по SPI (все проблемы с SPI, похоже, решаются с последней версией STM32 Arduino). У меня нет аппаратного обеспечения Canbus или NMEA2000 в момент тестирования (я тоже жду платы Maple Mini Baite).

Фоно
Сб 25 июля 2015 г. 16:32
Роджеру Кларку: Пожалуйста, объясните технику слабой ссылки на фиктивного идентификатора.
В Peppeve: я знаю, что обмен раздражает, но с досками Olimexino очень удобно использовать встроенную банку без какого-либо щита или расширения. Если вам нужен последовательный порт, вы все равно можете использовать физический порт плюс адаптер FTDI. Что я сделал недавно, потому что мне нужна была скорость передачи данных 115 200 бит / с на последовательном порту, а поддельный последовательный порт через USB очень медленный.

Пеппев
Сб 25 июля 2015 г. 16:49
Фоно написал:Поддельный серийный порт через USB очень медленный.

Rogerclark
Сб 25 июля 2015 г., 21:34
@Phono

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

видеть

https: // github.com/arduino/arduino/blob ... Сериал.CPP

Начиная с линии 38

Затем в строке 66

Возможно, та же самая техника может быть использована для CAN.

я.E добавьте слабые ссылки в ядро ​​и проверяет в ядре, которые вызывают функцию CAN, только если она действительно существует ?.

Фоно
Сб 25 июля 2015 г., 21:44
В Peppeve: у меня нет точных цифр, но скорость встроенного конвертера USB-COM находится в диапазоне 9600 б.п.
Да, плата Olimexino STM32 имеет встроенную CAN Cranceiver и заголовок винта для непосредственного соединения шины CAN. Очень хорошо !

Джонл
Вт 17 ноября 2015 г. 9:23
УДАРЯТЬСЯ

Любые обновления о библиотеке CAN?

Фоно
Сб 21 ноября 2015 г., 19:37
Я очень хотел бы участвовать в предоставлении библиотеки CAN, но на самом деле инвестиции, необходимые для подхода в подход этой новой среды, немного высоки для меня, чтобы начать работать над ней.
Однако, если кто -то сможет справиться с интеграцией библиотеки в новую среду, я готов помочь с стороной может.
Поэтому, если кто-то готов попытаться перенести библиотеку, совместимую с кленом, Ардуино, позвольте ему позвонить мне, и я дам ему поддержку этой задачи.
Извините, что пока не смог сделать больше.

Дрбанана
Чт 20 октября 2016 г., 10:39
любое обновление ?

Фоно
Чт 20 октября 2016 г., 17:23
В конце концов я нашел время для порта этой библиотеки, и я перенес некоторые из своих проектов в Arduino для STM32. Библиотека CAN работает удовлетворительно (я даже исправил ошибки, которые существовали в исходной версии Maple от x893). Я позволил себе некоторое время, чтобы убедиться, что это свободнее, и я намерен отправить его в следующие недели.
Я не знаком с Push -запросом, который удерживал меня от отправки его до сих пор.
Если кто -то хотел бы мне помочь, я мог бы отправить ему файлы.

Дрбанана
Чт 20 октября 2016 г., 17:37
Я тоже тоже не очень знаком с управлением источником. Но я думаю, что вы можете просто загрузить все файлы одновременно в GitHub ?

Martinayotte
Чт 20 октября 2016 г. 18:29
Быстрое руководство по GitHub:

- Создайте свою собственную учетную запись на GitHub
- Войдите в это
- Перейдите к GitHub Роджера
- Нажмите кнопку Fork в правом верхнем углу (это создаст вилку в вашу учетную запись)
- Использовать »клон Git <ты развел url GitHub>"В месте по вашему выбору на местном диске.
- Добавьте новую библиотеку в дерево, затем сделайте «git добавить <библиотечная папка>"
- git commit -m "Комментарий, описывающий новую либера"
- git push (он протолкнет изменение в веб -сайт github)
- Перейдите обратно на вас Github Web и нажмите кнопку «Сравните», он покажет различия в основной филиале Роджера.
- Нажмите «Создать запрос на привлечение» и предоставить комментарии Роджеру.

Rogerclark
Чт 20 октября 2016 г., 8:30 вечера
Для больших изменений (которые, как я подозреваю, это), я создаю новую ветку, притягиваю к этой ветви, а затем оттолкните новую ветку обратно в GitHub, чтобы другие протестировали.

Я не уверен, смогу ли я лично проверить это, так как я не уверен, что у меня есть какое -либо оборудование Canbus.

У меня может быть цифровой компас в чем -то, что такое Canbus, но он был вырезан из старого квадрокоптера, и я понятия не имею, какой это тип.

Дрбанана
Пт 21 октября 2016 г. 13:46
Rogerclark написал:Я не уверен, смогу ли я лично проверить это, так как я не уверен, что у меня есть какое -либо оборудование Canbus.

Rogerclark
Пт 21 октября 2016 г., 19:51
Это не совсем действительный тест.

Вам нужно будет проверить с аппаратным обеспечением от других поставщиков.

Фоно
Пт 28 октября 2016 г., 9:51
Я установил GIT и подготовил файлы для запроса на вытяжение. Я написал текстовый файл, объясняющий, где в системе вносятся изменения (эти изменения требуются, потому что вектор прерывания прерываний используется с вектором прерываний USB, поэтому я добавил код для маршрутизации прерывания к обработчику прерывания, когда это необходимо)).
Мой вопрос: где в дереве каталогов я должен поместить этот файл объяснения? В корне жесткой библиотеки, возможно,?

Rogerclark
Пт 28 октября 2016 г., 10:01
Возможно, добавьте пример с описанием в нем

Фоно
Пн, 31 октября 2016 г., 22:12
Я сделал, как вы сказали. В каталоге примеров я добавил пример с включением файла, который на самом деле является только комментарием по истории и изменения, которые должны быть выполнены в ядре, чтобы обеспечить правильную работу интерфейса CAN.
Тем не менее, я еще не осваиваю git, поэтому я мог сделать это неправильно. Не могли бы вы убедиться, что библиотека завершена, и что 3 файла отправляются для замены 3 файлов в 3 различных каталогах ядра?
Спасибо.

Rogerclark
Пн, 31 октября 2016 г., 22:40
Можете ли вы опубликовать ссылку на свой репо

Фоно
Пн, 31 октября 2016 г., 11:26 вечера
https: // github.com/phonog/arduino_stm32

Rogerclark
Вторник 01 ноября 2016 г. 12:27 утра
Спасибо

PR на данный момент в состоянии потока, поэтому я думаю, что мне нужно очистить отставание, прежде чем обрабатывать ваше.

Есть некоторые другие, относящиеся к сериалу USB, которые также могут повлиять на ваш, из -за общего прерывания, но я не буду знать, пока не объединю существующие PRS

выступая
Вторник 01 ноября 2016 г., 8:15 вечера
Похоже, у вашего коммита есть только один измененный файл (USB.в), а не остальные ваши дополнения. Убедитесь, что вы добавили все файлы, которые хотите совершить, используя, используя git add

Фоно
Пт, 04 ноября 2016 г., 17:09
Я должен признать, что я немного потерян, используя git. Я использую веб -интерфейс (https: // github.com/phonog/arduino_stm32 ... OG-Patch-1). Однако, когда я просматриваю каталоги, я нахожу там файлы. Это должно быть:
- STM32F1/Библиотеки/Hardwarecan для библиотеки;
- Stm32f1 \ cores \ maple \ libmaple \ rcc_f1.в
- STM32F1 \ System \ Libmaple \ STM32F1 \ include \ series \ rcc.час
- Stm32f1 \ cores \ maple \ libmaple \ usb \ stm32f1 \ usb.в
Вы можете проверить?
Если что -то не так, пожалуйста, помогите мне исправить это.

petit_miner
Пн, 07 ноября 2016 г. 18:57
Любой дальнейший прогресс до сих пор?
Я не могу найти библиотеку банков в вашем репозиторе GitHub.
https: // github.com/phonog/arduino_stm32/

Фоно
Пн, 07 ноября 2016 г., 21:55
Конечно, я не эксперт по git.Изменения не в главной ветви, а в филиале Phonog-Patch-1. Вы можете получить доступ к нему?

Ddrown
Вт 8 ноября 2016 г. 3:34 утра
Фоно написал:Конечно, я не эксперт по git.Изменения не в главной ветви, а в филиале Phonog-Patch-1. Вы можете получить доступ к нему?

Фоно
Вт 8 ноября 2016 г., 7:52 утра
Более или менее... Когда я смотрю на содержимое моей филиала (Phonog-Patch-1), я нахожу все файлы в их правом месте:
- USB.C в STM32F1/Cores/Maple/Libmaple/USB/STM32F1/
- RCC.H в STM32F1/SYSTER/LIBMAPLE/STM32F1/include/series/
- RCCF1.c в/stm32f1/cores/maple/libmaple/
и библиотека в STM32F1/Libraries/

Однако, когда я смотрю на результат сравнения (ссылка, которую вы упоминаете), я нахожу RCC.H, RCCF1.C и USB.C в каталоге библиотеки.
Так что я не понимаю. Однако все файлы есть. Если вы можете исправить ошибку местоположения, все в порядке.
Я прошу прощения за несколько комментариев на французском языке, я упустил из виду перевод на английском языке.

И_ру
Пт 11 ноября 2016 г., 11:21
[QUOTE = "Phono"] [/QUOTE]
Не могли бы вы сделать простой пример, который все слушает и распечатает его на «сериал.Печать "?
Я хочу проверить его, подключаясь к плате MCP2515 (если мне также нужно изучить).

Фоно
Пн 14 ноября 2016 г., 21:01
TO AND_RU: Мне очень жаль, но библиотека посвящена интегральной интерфейсе STM32F103. Может быть, однажды это будет расширен до других интерфейсов.

Rogerclark
Пн 14 ноября 2016 г., 21:31
Любой шанс вы могли бы расследовать портирование библиотеки в официальное ядро ​​STM F1 https: // github.com/stm32duino/arduino_core_stm32f1

Фоно
Вт 15 ноября 2016 г. 8:02 утра
Это ядро ​​будет использоваться в других средах программирования, чем Arduino IDE? Это не будет быстрой работой. Может, когда у меня будет свободное время...

Rogerclark
Вт 15 ноября 2016 г. 8:35 утра
@Phono

На самом деле, задним числом, вам лучше остаться с Libmaple в качестве ядра, по крайней мере, в течение следующих 6 месяцев, поскольку использование может в новом ядре потребуется много переписывания, так как ядро ​​STM использует собственный HAL STM (не Libmaple), так что там должно быть много изменений в порт в этот ядро.

И_ру
Пт 18 ноября 2016 г., 5:46 утра
Фоно написал:TO AND_RU: Мне очень жаль, но библиотека посвящена интегральной интерфейсе STM32F103. Может быть, однажды это будет расширен до других интерфейсов.

Фоно
Пт 18 ноября 2016 г., 19:02
Если вы имеете в виду, можно ли подключить только провод CANL без подключения CANH, он не подходит для библиотеки. Соответствующий ISO 11898 CAN CAN TRAINCEIVERS требует подключения оба провода, а также, чтобы линия была прекращена с помощью резистора 120 Ом на обоих концах.
Если вам нужен только один провод, вы можете посмотреть на NCV7356, например,.

И_ру
Пн 28 ноября 2016 г., 17:10
Фоно написал:Если вы имеете в виду, можно ли подключить только провод CANL без подключения CANH, он не подходит для библиотеки. Соответствующий ISO 11898 CAN CAN TRAINCEIVERS требует подключения оба провода, а также, чтобы линия была прекращена с помощью резистора 120 Ом на обоих концах.
Если вам нужен только один провод, вы можете посмотреть на NCV7356, например,.

Сирус
Сб 10 декабря 2016 г. 14:36
Привет, ребята...

Я не знаю, в чем здесь дело??? Щит MCP2515 для Arduino прекрасно работает с IteadMaple 1.0 Arduino Compatible Board. Библиотека компилирует внедорожника, а затем все работает гладким и простым, как Arduino, принимая, это намного быстрее. Все, что вам нужно сделать, это немного переучить. Не все булавки щита can_bus идет на доску. Но если вы действительно хотите, то вы Defanatelly выясните это. Программная доска через Arduino IDE...

Также работает с Teensy 3.1 3.2.. Без какой -либо проблемы..

Фоно
Вт 13 декабря 2016 г., 19:32
Может быть, вы не знаете, но плата Olimexino STM32 включает в себя все аппаратное обеспечение CAN. Вам просто нужно подключить автобус с банкой к терминальной полосе, и все готово. Нет необходимости в дополнительном щите.

Сирус
Чт 15 декабря 2016 г., 4:36
Я знаю, был ли твой ответ для меня фоно . Но тогда вы должны написать свои собственные функции, чтобы поддерживать, может ах? Из этой темы кажется, что люди хотят запустить этот щит от STM32, потому что STM намного быстрее, а во -вторых, что у Щита есть очень очень удобная библиотека с несколькими очень очень удобными функциями. Ничего больше, что вам нужно.
Хотя здесь кажется, нет тела, на самом деле пытаясь подключить PCM2515 может защитить с STM. Я сделал.. Вот почему я здесь, чтобы выдержать тебя.

И_ру
Чт 15 декабря 2016 г., 7:12
@Сирус, Вы правы, MCP2515 работает отлично (коррекция - я имею в виду не щит, но сам чип MCP2515 :) ).
Моей первой ошибкой было подключить Ban Bus непосредственно к плате (Can TX, RX).
Второй неудача произошел потому, что TJA1050, который я пробовал, был дефектным (бесконечное сопротивление между Can Hi - Can lo).
В -третьих - как TJA1050, так и MCP2515 должны быть предоставлены 5V, чтобы иметь возможность отправлять сообщения.

Я упростил код Фоно Чтобы просто отправить сообщение по причинам тестирования: // HardwareCAN_simplified_send1.ino #include //#include "changes.h" /* * Example of use of the HardwareCAN library * Please read the file changes.h to see the changes to be performed to the core in order to use this */ byte msgD0 ; // variable to be used in the example. // Instanciation of CAN interface HardwareCAN canBus(CAN1_BASE); CanMsg msg ; void CANSetup(void) { CAN_STATUS Stat ; // Initialize CAN module canBus.map(CAN_GPIO_PB8_PB9); // This setting is already wired in the Olimexino-STM32 board Stat = canBus.begin(CAN_SPEED_125, CAN_MODE_NORMAL); // Other speeds go from 125 kbps to 1000 kbps. CAN allows even more choices. canBus.filter(0, 0, 0); canBus.set_irq_mode(); // Use irq mode (recommended), so the handling of incoming messages // will be performed at ease in a task or in the loop. The software fifo is 16 cells long, // allowing at least 15 ms before processing the fifo is needed at 125 kbps Stat = canBus.status(); if (Stat != CAN_OK) /* Your own error processing here */ ; // Initialization failed } // Send one frame. Parameter is a pointer to a frame structure (above), that has previously been updated with data. // If no mailbox is available, wait until one becomes empty. There are 3 mailboxes. CAN_TX_MBX CANsend(CanMsg *pmsg) // Should be moved to the library?! { CAN_TX_MBX mbx; do { mbx = canBus.send(pmsg) ; #ifdef USE_MULTITASK vTaskDelay( 1 ) ; // Infinite loops are not multitasking-friendly #endif } while(mbx == CAN_TX_NO_MBX) ; // Waiting outbound frames will eventually be sent, unless there is a CAN bus failure. return mbx ; } // Send message // Prepare and send a frame containing some value void SendCANmessage(long id=0x001, byte d0=0x00, byte d1=0x00, byte d2=0x00, byte d3=0x00, byte d4=0x00, byte d5=0x00, byte d6=0x00, byte d7=0x00) { // Initialize the message structure // A CAN structure includes the following fields: msg.IDE = CAN_ID_STD; // Indicates a standard identifier ; CAN_ID_EXT would mean this frame uses an extended identifier msg.RTR = CAN_RTR_DATA; // Indicated this is a data frame, as opposed to a remote frame (would then be CAN_RTR_REMOTE) msg.ID = id ; // Identifier of the frame : 0-2047 (0-0x3ff) for standard idenfiers; 0-0x1fffffff for extended identifiers msg.DLC = 8; // Number of data bytes to follow // Prepare frame : send something msg.Data[0] = d0 ; msg.Data[1] = d1 ; msg.Data[2] = d2 ; msg.Data[3] = d3 ; msg.Data[4] = d4 ; msg.Data[5] = d5 ; msg.Data[6] = d6 ; msg.Data[7] = d7 ; digitalWrite(PC13, LOW); // turn the onboard LED on CANsend(&msg) ; // Send this frame delay(180); digitalWrite(PC13, HIGH); // turn the LED off delay(100); } // The application program starts here void setup() { // put your setup code here, to run once: CANSetup() ; // Initialize the CAN module and prepare the message structures. pinMode(PC13, OUTPUT); msgD0 = 0x01; } void loop() { delay(1000); long msgID = 0x101 ; SendCANmessage(msgID, msgD0) ; msgD0++; }

Фоно
Чт 15 декабря 2016 г. 18:07
@And_ru:
Чтобы добавить новые скорости, вы должны изменить код в двух местах, как показано ниже.
Я не уверен в числовых значениях для достижения этих скоростей. По крайней мере, это должно работать с хорошей физической автобусной линией, но тонкая настройка значений SJW, TS1 и TS2 могут еще больше повысить надежность общения.
Я никогда не слышал об этих скоростях. Чтобы удовлетворить мое любопытство, где они используются?

1) В файле может.h, изменить определение перечисления: enum CAN_SPEED { CAN_SPEED_125, CAN_SPEED_250, CAN_SPEED_500, CAN_SPEED_1000, };

И_ру
Пт 16 декабря 2016 г. 5:51 утра
Большое спасибо, Фоно!
Другое место, найденное в Hardwarecan.CPP (в противном случае компилятор Arduino не проходите его): /** * @brief Initialize a CAN peripheral * @param freq frequency to run at, must one of the following values: * - CAN_SPEED_1000 * - CAN_SPEED_500 * - CAN_SPEED_250 * - CAN_SPEED_125 * - CAN_SPEED_95 * - CAN_SPEED_33 */!

ZMEMW16
Пт 16 декабря 2016 г., 21:14
ОК, я укушу. Где машина?
Стивен

Фоно
Солнце 18 декабря 2016 г. 13:59
@RogerClark: Роджер, не могли бы вы в конечном итоге справиться с моим PR? Вы объедините его с текущим репозиторием?
У меня также есть защитная версия библиотеки Ethernet. Кто -нибудь заинтересован?

Rogerclark
Солнце 18 декабря 2016 г., 21:41
У меня нет никакого оборудования для шины, чтобы проверить это, ни время, чтобы проверить его, даже если я это сделал.

Итак, я привлек ваши изменения в отдельную ветку

https: // github.com/rogerclarkmelbourne/ ... OG-Patch-1

Поэтому, если кто -то хочет их использовать, он может использовать эту ветку

michael_l
Пн 19 декабря 2016 г., 7:39 утра
Отличная работа! Думаю, мне тоже придется попробовать это. Закажет немного TJA1050 и попробуйте это также. Do PB8 (TX) _PB9 (RX) работайте также для синей платы ?

Фоно: Мне было бы интересно попробовать вашу библиотеку - если вы можете создать новую филиал для этого или ?

Фоно
Пн 19 декабря 2016 г., 19:27
@michael_l
Схема синей таблетки указывает на can_rx и can_tx для pb8 и pb9, поэтому я не понимаю, почему это не будет работать.
Да, я выпущу пиар для библиотеки Ethernet.

И_ру
Вторник 27 декабря 2016 г. 18:44
Я подтверждаю, что библиотека работает.

Вот видео [YouTube]https: // www.YouTube.com/watch?v = gjgbonzgmis[/youtube]
Воткод:
Он отправляет кнопку OK на кнопку нажмите и включает в себя кнопку «Настройки», когда нажимает кнопку «Настройки».
Мне пришлось добавить больше настроек ускорения в библиотеку, поэтому я ее клонировал.

Также есть простой пример, как отправить.

Edison517
Вт 10 января 2017 г. 2:27
Привет, ребята,
Надеюсь, я смогу присоединиться здесь. Я только что купил плату Nucelo Dev STM32F103, которую я собираюсь научиться использовать. Я приехал из нескольких лет фона Arduino, связанный с Canbus, и я надеюсь переключиться на STM32, поскольку (некоторые из них) могут встроить встроенные.

Когда я получу свою доску Dev, я начну играть с ней и, вероятно, установите библиотеку CAN и посмотрю, смогу ли я поговорить с моим автобусом Saab 9-3 2000 года 2000 года. В настоящее время у меня есть разговор ATMEGA328P-AU через MCP2515 и SN65HVD231, поэтому я думаю, что могу заставить вещи работать только с 231 чипом.

Если я что -нибудь выясню, я могу опубликовать для других :)
Сет

Jongjejung
Пт, 03 февраля 2017 г. 2:51
@And_ru: Спасибо за ваши работы в этой библиотеке. Когда я попробовал вашу упрощенную программу отправки в Arduino Uno-MCP 2515,
Отправлено сообщение было хорошо только для FIRS, а затем отправка сообщения о отправке в замораживании. Испытали то же самое?

Билбодц
Чт 16 февраля 2017 г. 11:08
Rogerclark написал: https: // github.com/rogerclarkmelbourne/ ... OG-Patch-1
Поэтому, если кто -то хочет их использовать, он может использовать эту ветку

Билбодц
Пт 17 февраля 2017 г. 13:08
Хорошо, мне удалось объединить фоног-фоног-патч-1 с текущими источниками arduino_stm32. В течение следующих нескольких недель я постараюсь переписать свой старый проект Arduino MCP2515 в Arduino_stm32 с использованием Olimexino-STM32 и Olimex Shield-LCD16x2. Я надеюсь, что это сработает.

И_ру
Пт 17 февраля 2017 г. 18:55
Jongjejung написал:@And_ru: Спасибо за ваши работы в этой библиотеке. Когда я попробовал вашу упрощенную программу отправки в Arduino Uno-MCP 2515,
Отправлено сообщение было хорошо только для FIRS, а затем отправка сообщения о отправке в замораживании. Испытали то же самое?

Jongjejung
Вт 28 февраля 2017 г. 2:21
Спасибо за ответ. Я поставлял 5V как MCP2515, так и в TJA, результат был одинаковым только один раз при загрузке STM32F103.
Для ссылки я использовал ваш упрощенный набросок для отправки, а модуль MCP2515 CAN прикреплен в Arduino Uno на приемной стороне.
Еще раз спасибо за добрый ответ. : D

michael_l
Вт 28 февраля 2017 г. 8:19 утра
Есть ли поддержка фильтрации ?

И_ру
Солнце 19 марта 2017 г. 6:49
michael_l написал:Есть ли поддержка фильтрации ?

И_ру
Солнце 19 марта 2017 г. 6:53
@Phono, вы можете проверить скорость отправки сообщений?
Я отправляю два сообщения последовательно, и они появляются в Cansniffer с 0.Задержка 28 секунд. Это нормально для ускорения 95 кбит / с?

Гикшоу
Ср 22 марта 2017 г. 12:28
Привет, ребята, я прочитал этот пост с легкой поддержкой. Хорошая работа над функциональностью Canbus до сих пор! Я начал терять надежду на эту работу.... : -o

У меня есть множество плат Olimexino-STM32 (с бортовым MCP2551 может трансивель), я планирую использовать для домашней банки в сети. Я с радостью помогу с тестированием по мере необходимости?

ваше здоровье,
Кит

Ebaril72
Пт 24 марта 2017 г. 3:55
Отличная работа фоног ! У меня было несколько из них в моем ящике долгое время, но теперь начну немного проверять.

Я занимаюсь большим количеством Canbus, используя MCP2515, но всегда должен был придерживаться стандартного Arduino Nano, чтобы избежать страшных 3.3 В - 5 В выпуск.
Да, приемопередатчики делают отличную работу, но чем выше компонент, тем меньше - надежность.

Я использую Atmel Samd21 (3.3v), но не смог напрямую взаимодействовать с MCP2515. Теперь я могу иметь больше MIP/ больше памяти

Can Tranceivers: проверьте это: http: // www.eBay.com/itm/sn65hvd230-can- ... Swepjxbqj6

Я использую их в проекте Arduino Due.

Есть ли что -нибудь, что вы хотели бы пройти тестирование в Perticulary ?
Моя окончательная мечта: Canbus Bootloader !
Я как раз собирался взглянуть на Arduino Nano или SAMD21.
Я работал над загрузчиком SDCARD (SPI) для SAMD21 и собирался заглянуть в версию CANBUS ...

Но эта 2 $ PCB просто говорит мне, что я должен попробовать STM... Я бы хотел, но я хотел бы знать, есть ли у кого -то еще интерес.
Я мог бы даже работать в STM32Loader.py, чтобы поддержать работу.

Представьте себе это, вы запечатаете свой мини -проект в правильном оборудовании, чтобы избежать экологических проблем, и вы исчезаете позже, вы хотели бы добавить новую функцию.
ОКК, я знаю, что вы, ребята, делаете это лучше всего в первый раз ! ;-)

michael_l
Пт 24 марта 2017 г. 12:24
Какие возможны должны выполнить автоматический запуск / выключение устройства ?

В основном я хотел бы, чтобы это работало так, чтобы, когда я еду на машину и включаю зажигание, тогда STM32 запускается. Когда я покидаю машину, то STM32 заснул и не сливал бы мою батарею.

И_ру
Сб 25 марта 2017 г. 10:05
michael_l написал:Какие возможны должны выполнить автоматический запуск / выключение устройства ?

В основном я хотел бы, чтобы это работало так, чтобы, когда я еду на машину и включаю зажигание, тогда STM32 запускается. Когда я покидаю машину, то STM32 заснул и не сливал бы мою батарею.

michael_l
Сб 25 марта 2017 г. 11:40
И_ру написал:michael_l написал:Какие возможны должны выполнить автоматический запуск / выключение устройства ?

В основном я хотел бы, чтобы это работало так, чтобы, когда я еду на машину и включаю зажигание, тогда STM32 запускается. Когда я покидаю машину, то STM32 заснул и не сливал бы мою батарею.

Фоно
Пн 10 апреля 2017 г., 19:49
@And_ru: задержка между кадрами кажется мне странной. Я никогда этого не наблюдал. Мои приложения работают на 125 кбит/с, и я могу отправить довольно много кадров всего за несколько миллисекунд.

MOBI123
Ср. 3 мая 2017 г. 7:15 утра
Фоно написал:@And_ru: задержка между кадрами кажется мне странной. Я никогда этого не наблюдал. Мои приложения работают на 125 кбит/с, и я могу отправить довольно много кадров всего за несколько миллисекунд.

MOBI123
Вторник 09 мая 2017 г. 2:56 утра
CAN_STATUS can_gpio_map(CAN_Port* CANx, CAN_GPIO_MAP map_mode) { rcc_clk_enable(RCC_AFIO); status = CAN_INIT_FAILED; if( CANx == CAN1_BASE) { switch(map_mode) { case CAN_GPIO_PB8_PB9: rcc_clk_enable(RCC_GPIOB); afio_remap(AFIO_MAPR_CAN_REMAP_PB8_PB9); gpio_set_mode(GPIOB, 8, GPIO_INPUT_FLOATING); gpio_set_mode(GPIOB, 9, GPIO_AF_OUTPUT_PP); break; case CAN_GPIO_PA11_PA12: rcc_clk_enable(RCC_GPIOA); afio_remap(AFIO_MAPR_CAN_REMAP_NONE); gpio_set_mode(GPIOA, 11, GPIO_INPUT_FLOATING); gpio_set_mode(GPIOA, 12, GPIO_AF_OUTPUT_PP); break; #if NR_GPIO_PORTS >= 4 case CAN_GPIO_PD0_PD1: rcc_clk_enable(RCC_GPIOD); afio_remap(AFIO_MAPR_CAN_REMAP_PD0_PD1); gpio_set_mode(GPIOD, 0, GPIO_INPUT_FLOATING); gpio_set_mode(GPIOD, 1, GPIO_AF_OUTPUT_PP); break; #endif default: return status; } status = CAN_OK; } return status; }

MOBI123
Вторник 09 мая 2017 г. 3:01
Теперь есть шлюз для получения данных для отправки почтового ящика в бит TXRQ после того, как MCU мертв.
Если нет шлюза в корпус, всегда может отправлять данные, как это решить?

И_ру
Солнце 28 мая 2017 г., 7:26 утра
Фоно написал:@And_ru: задержка между кадрами кажется мне странной. Я никогда этого не наблюдал. Мои приложения работают на 125 кбит/с, и я могу отправить довольно много кадров всего за несколько миллисекунд.

И_ру
Солнце 28 мая 2017 г. 12:10
...

И_ру
Чт, 01 июня 2017 г., 19:56
Привет.
Я стараюсь использовать две шины банки и переключаться между ними через Remap. Но это не работает. Не могли бы вы проанализировать?
Код ниже.
Сначала он отправляет сообщение с идентификатором 0x100 на автобус на выводах A11A12, но потом ничего там. На булавках B8B9 я получаю рабочий цикл с сообщениями идентификатора 0x111. И все дальнейшие сообщения с идентификатором 0x100 идут также здесь со скоростью 33.
Что я делаю не так?
Невозможно пережить на лету?
#include //#include "changes.h" /* * */ #define T_DELAY 10 // Instanciation of CAN interface HardwareCAN canBus(CAN1_BASE); CanMsg msg ; void CAN_a_33_Setup(void) { CAN_STATUS Stat ; canBus.map(CAN_GPIO_PA11_PA12); Stat = canBus.begin(CAN_SPEED_33, CAN_MODE_NORMAL); canBus.filter(0, 0, 0); canBus.set_irq_mode(); Stat = canBus.status(); if (Stat != CAN_OK) {digitalWrite(PC13, LOW); delay(10000);} // /* Your own error processing here */ ; // Initialization failed // delay(T_DELAY); } void CAN_b_95_Setup(void) { canBus.map(CAN_GPIO_PB8_PB9); Stat = canBus.begin(CAN_SPEED_95, CAN_MODE_NORMAL); canBus.filter(0, 0, 0); canBus.set_irq_mode(); Stat = canBus.status(); if (Stat != CAN_OK) {digitalWrite(PC13, LOW); delay(10000);} // /* Your own error processing here */ ; // Initialization failed // delay(T_DELAY); } CAN_TX_MBX CANsend(CanMsg *pmsg) { CAN_TX_MBX mbx; do { mbx = canBus.send(pmsg) ; #ifdef USE_MULTITASK vTaskDelay( 1 ) ; // Infinite loops are not multitasking-friendly #endif } while(mbx == CAN_TX_NO_MBX) ; // Waiting outbound frames will eventually be sent, unless there is a CAN bus failure. return mbx ; } // Send message // Prepare and send a frame containing some value void SendCANmessage(long id=0x001, byte dlength=8, byte d0=0x00, byte d1=0x00, byte d2=0x00, byte d3=0x00, byte d4=0x00, byte d5=0x00, byte d6=0x00, byte d7=0x00) { // Initialize the message structure // A CAN structure includes the following fields: msg.IDE = CAN_ID_STD; // Indicates a standard identifier ; CAN_ID_EXT would mean this frame uses an extended identifier msg.RTR = CAN_RTR_DATA; // Indicated this is a data frame, as opposed to a remote frame (would then be CAN_RTR_REMOTE) msg.ID = id ; // Identifier of the frame : 0-2047 (0-0x3ff) for standard idenfiers; 0-0x1fffffff for extended identifiers msg.DLC = dlength; // Number of data bytes to follow // Prepare frame : send something msg.Data[0] = d0 ; msg.Data[1] = d1 ; msg.Data[2] = d2 ; msg.Data[3] = d3 ; msg.Data[4] = d4 ; msg.Data[5] = d5 ; msg.Data[6] = d6 ; msg.Data[7] = d7 ; digitalWrite(PC13, LOW); // turn the onboard LED on CANsend(&msg) ; // Send this frame digitalWrite(PC13, HIGH); // turn the LED off delay(T_DELAY); } // The application program starts here byte msgD0 = 0x00; void setup() { // Initialize the CAN module and prepare the message structures. pinMode(PC13, OUTPUT); digitalWrite(PC13, HIGH); delay(10); digitalWrite(PC13, LOW); delay(1000); digitalWrite(PC13, HIGH); delay(1000); } void loop() { CAN_a_33_Setup(); delay(T_DELAY); SendCANmessage(0x100,1,msgD0); delay(T_DELAY); CAN_b_95_Setup(); delay(T_DELAY); SendCANmessage(0x111,1,msgD0); delay(T_DELAY); msgD0++; }

И_ру
Ср. 07 июня 2017 г., 21:49
Итак, ответ
afio_init ();
Перед переходом на булавки.

Макбет
Ср 14 июня 2017 г. 11:38
Я просто смотрю на некоторые проблемы с банкой в ​​данный момент. Я могу работать над «кленом»-Клон с Libmaple Toolchain. Теперь я хотел бы перейти на STM32Duino (или, скорее, Platformio).

Не могли бы вы сказать мне, что такое статус жесткой интеграции? Я видел великую филиал Фоно с хардрареканом (спасибо, чувак!!). Было бы большой проблемой, чтобы втянуть эти изменения в мастер? Являются модификациями (RCC.С, RCC.час, ...) ломать все остальное?

Глядя на https: // github.com/rogerclarkmelbourne/ ... OG-Patch-1 кажется, что не так много дел. Но потом... Я не в состоянии судить о побочных эффектах. Я обычно не смотрю под капюшоном.

Фоно
Ср. 19 июля 2017 г. 16:12
Пожалуйста, пользователи этой библиотеки: обратите внимание, что на сегодняшний день я совершил новую версию, которая исправила ошибку, из -за которой полученные кадры были отказаны или повреждены или повреждены.
В моем случае, в моей системе около 100 кадров в секунду, потерянные кадры происходили несколько раз в день, и один или два поврежденных кадра в день.
Пожалуйста, обновите свою среду программирования для более надежной работы CAN.

Фоно
Чт 20 июля 2017 12:02
@Rogerclark: Я понимаю, что вы недостаточно опытны, чтобы поддержать библиотеку Hardwarecan, и, таким образом, вы не включили ее в свою последнюю версию.
Тем не менее, я хотел бы попросить вас включить в следующую версию ядра. Несколько изменений, которые необходимы для возможности включить библиотеку в проект. Эти изменения просты и не могут добавить угрозу к стабильности ядра.
заранее спасибо.

Макбет
Ср. 26 июля 2017 г. 14:06
Я бы определенно проголосовал за слияние пластыря Фоно в Мастера.

Но у меня все еще есть еще 2 общих вопроса (и это, кажется, эта нить, где тусуется Кан-Геки)

1: Есть ли способ сбросить связь в случае временного короткого замыкания шины CAN? Даже когда я пытаюсь избежать блокировки во время цикла в Cansend, я больше никогда не получаю mbx == can_tx_no_mbx
CAN_TX_MBX CANsend(CanMsg *pmsg) { uint32 ct=0; CAN_TX_MBX mbx; digitalWrite(BOARD_LED,1); do mbx = canBus.send(pmsg); while (mbx == CAN_TX_NO_MBX && ct++<20000); digitalWrite(BOARD_LED,0); return mbx; }

TJB12345
Солнце 06 августа 2017 8:28 утра
Я пытаюсь заставить библиотеку Phono работать над MCP2551 и синей таблеткой (STM32F103C8), я подключен к активному Canbus, и я успешно получил и отправил сообщение с использованием этого же чипа с Arduino Dues. Я пытаюсь использовать тот же код, который и_ру опубликовали некоторое время назад (слегка изменяется, чтобы просто отправлять сообщение каждую секунду. Однако это не удается и застрял в цикле MBX = CAN_TX_NO_MBX. Предполагая, что это потому, что он не может успешно передавать сообщения, поэтому они остаются в почтовом ящике TX, и он становится полным после 3 сообщений. Вот мои связи:

MCP2551 Blue Pill
Txd............PB9
VSS............Гнездо
Vdd...........5 В
Rxd..........PB8
Вреф.........Ничего
Может h......можно h на канбусе
Может l......чтобы L на канбусе
Рупий..........к GND (через 4.7K резистор....Попробовал прямо в GND, но 4.7K - это то, что используется на срок, и это работает)

У меня есть настройка FTDI на Serial1 для мониторинга состояния, используя PA2

MPC2551 - это приемопередатчик 5V, поэтому на связи я использую конвертер логического уровня, и это отлично работает. Я пытался с синей таблеткой и без него, так как PB8 и PB9 терпимы 5 В. Я работаю со скоростью 250 кбит / с на бод, и у меня есть это в настройке. Я не могу сказать, что у меня есть на разных. Любые идеи? Я могу публиковать код, если это необходимо.

Rogerclark
Солнце 06 августа 2017 10:27
[Фоно - Чт 20 июля 2017 г. 12:02 вечера] - @Rogerclark: Я понимаю, что вы недостаточно опытны, чтобы поддержать библиотеку Hardwarecan, и, таким образом, вы не включили ее в свою последнюю версию.
Тем не менее, я хотел бы попросить вас включить в следующую версию ядра. Несколько изменений, которые необходимы для возможности включить библиотеку в проект. Эти изменения просты и не могут добавить угрозу к стабильности ядра.
заранее спасибо.

Кто -то собирается создать пиар для этого изменения?

TJB12345
Пн, 07 августа 2017 г. 9:16 вечера
Обновлять:

все еще работал над этим, и я получил его, чтобы отправить 1 сообщение, а затем оно замораживает. Я получил первое сообщение на своем должном. Я попробовал разные последовательные порты и без последовательных портов, но он все еще отправляет только 1 перед замораживанием. Я также добавил DigitalWrite в основной цикл, которая стреляет каждую секунду, чтобы убедиться, что он не просто не отправил. Это не продолжает мигать. Он также больше не застрял в петле NO MBX, так как я ставлю там цифровой писатель (с небольшой задержкой, чтобы убедиться, что я мог видеть мигание.)

Кто -нибудь там? :?

РЕДАКТИРОВАТЬ: перечитывая выше посты и увидели, что у Йонгджеюнга была такая же проблема, однако не ясно, что не так в его случае. У меня определенно 5 В на MPC2551.


#include /* * Uses STM32duino with Phono patch. Must add 33 and 95 CAN speeds */ #define BPIN 0 #define SPIN 1 byte msgD0 ; // variable to be used in the example. uint32_t lastSent = 0; int count = 1; int ledState = 0; // Instanciation of CAN interface HardwareCAN canBus(CAN1_BASE); CanMsg msg ; void CANSetup(void) { CAN_STATUS Stat ; // Initialize CAN module //Serial1.println("test1"); canBus.map(CAN_GPIO_PB8_PB9); // Serial1.println("test2");// This setting is already wired in the Olimexino-STM32 board Stat = canBus.begin(CAN_SPEED_250, CAN_MODE_NORMAL); // Other speeds go from 125 kbps to 1000 kbps. CAN allows even more choices. // Serial1.print("Status: "); // Serial1.println(Stat); //Serial1.println("test3"); canBus.filter(0, 0, 0); canBus.set_irq_mode(); // Use irq mode (recommended), so the handling of incoming messages // will be performed at ease in a task or in the loop. The software fifo is 16 cells long, // allowing at least 15 ms before processing the fifo is needed at 125 kbps Stat = canBus.status(); if (Stat != CAN_OK){ // Serial1.println("CAN initialization Failed"); /* Your own error processing here */ ; // Initialization failed } } // Send one frame. Parameter is a pointer to a frame structure (above), that has previously been updated with data. // If no mailbox is available, wait until one becomes empty. There are 3 mailboxes. CAN_TX_MBX CANsend(CanMsg *pmsg) // Should be moved to the library?! { CAN_TX_MBX mbx; do { mbx = canBus.send(pmsg) ; // Serial1.print("MBX: "); // Serial1.println(mbx); #ifdef USE_MULTITASK vTaskDelay( 1 ) ; // Infinite loops are not multitasking-friendly #endif } while(mbx == CAN_TX_NO_MBX) ; // Waiting outbound frames will eventually be sent, unless there is a CAN bus failure. return mbx ; } // Send message // Prepare and send a frame containing some value void SendCANmessage(long id=0x001, byte dlength=8, byte d0=0x00, byte d1=0x00, byte d2=0x00, byte d3=0x00, byte d4=0x00, byte d5=0x00, byte d6=0x00, byte d7=0x00) { // Initialize the message structure // A CAN structure includes the following fields: msg.IDE = CAN_ID_EXT; // Indicates a standard identifier ; CAN_ID_EXT would mean this frame uses an extended identifier msg.RTR = CAN_RTR_DATA; // Indicated this is a data frame, as opposed to a remote frame (would then be CAN_RTR_REMOTE) msg.ID = id ; // Identifier of the frame : 0-2047 (0-0x3ff) for standard idenfiers; 0-0x1fffffff for extended identifiers msg.DLC = dlength; // Number of data bytes to follow // Prepare frame : send something msg.Data[0] = d0 ; msg.Data[1] = d1 ; msg.Data[2] = d2 ; msg.Data[3] = d3 ; msg.Data[4] = d4 ; msg.Data[5] = d5 ; msg.Data[6] = d6 ; msg.Data[7] = d7 ; Serial2.println("before CANSend"); CANsend(&msg) ; // Send this frame // Serial1.println("after CANSend"); } // The application program starts here int bState = 0; // variable for reading the pushbutton status int sState = 0; // variable for reading the switch status byte st = 0x31; // buttot 1 on the CD30MP3 void setup() { // put your setup code here, to run once: Serial2.begin(115200); // Serial1.println("before CANSetup"); CANSetup(); // Initialize the CAN module and prepare the message structures. pinMode(PC13, OUTPUT); // pinMode(BPIN, INPUT); // input for hardware button // pinMode(SPIN, INPUT); // input for hardware switch // Serial1.println("Hello World!"); msgD0 = 0x01; delay(500); } void loop() { // bState = digitalRead(BPIN); // sState = digitalRead(SPIN); //Serial1.println("loop"); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: uint32_t currentMillis = millis(); if ((currentMillis - lastSent) >= 1000) { digitalWrite(PC13, ledState); ledState != ledState; lastSent = currentMillis; uint32_t msgID = 0x1CFFEEF0 ; // Serial1.print("start CAN Message: "); // Serial1.println(count); SendCANmessage(msgID, 3, 0x01, 0x6f, count) ; count++; } // check if the switch is high. // if it is: // try to read message and output to serial CanMsg *r_msg; if ((r_msg = canBus.recv()) != NULL){ // Serial1.print(r_msg->ID); // Serial1.print("#"); // Serial1.print(r_msg->Data[0]); // Serial1.print("."); // Serial1.print(r_msg->Data[1]); // Serial1.print("."); // Serial1.print(r_msg->Data[2]); // Serial1.print("."); // Serial1.print(r_msg->Data[3]); // Serial1.print("."); // Serial1.print(r_msg->Data[4]); // Serial1.print("."); // Serial1.print(r_msg->Data[5]); // Serial1.print("."); // Serial1.print(r_msg->Data[6]); // Serial1.print("."); // Serial1.println(r_msg->Data[7]); canBus.free(); } }

Фоно
Ср 09 августа 2017 г., 8:31 вечера
Был в отпуске в течение нескольких недель, таким образом, мое молчание.
@macbeth
Вопрос 1:
Вы можете вставить в цикл, который обрабатывает входящие сообщения. Следующий код: if ( canBus.Port->ESR & CAN_ESR_BOFF ) CANSetup() ;

TJB12345
Чт 10 августа 2017 г., 4:20 утра
Я прошел через изменения.H файл, и я подумал. Вполне возможно, что я упустил из виду один или смешался, когда я копировал и перемещаю основные файлы, когда пробовал разные вещи. Зная меня, я мог бы изменить те, которые не были в папке Arduino.

Я дважды проверяю завтра и сообщаю обратно.

Большое спасибо.

TJB12345
Пт 11 августа 2017 г. 20:49
[Фоно - Ср. 09 августа 2017 г. 20:31] - @TJB12345:
Похоже, прерывание передачи не активируется. Вы выполнили изменения в двух основных файлах, как описано в изменениях файла.h примера библиотеки Hardwarecan?

@All: Эти изменения в файлах CORE - это то, что я прошу RogerClark включить в корень, чтобы разрешить интеграцию библиотеки!
Поэтому я вычистил основные файлы STM32 и начал все сначала, загрузив филиал из репо Rogerclark, который он вытащил из вашей вилки

Эта ссылка: https: // github.com/rogerclarkmelbourne/ ... OG-Patch-1

Прошел через изменения.H файл, но все они уже были сделаны, за одним исключением. (Я предполагаю, что с тех пор, как я тяну из твоей вилки?)

Единственная разница (если я не слепа) является последней функцией can_rx0_irq_handler. в изменениях.H Файл возвращает 1, но в файле Core был возврат 0. Я изменил его, но он все еще завешивается.

Сегодня я только что получил доску Olimexino, поэтому я также попробую с этим, чтобы устранить аппаратное обеспечение, но я могу взять этот же MPC2551 и поднять его до моего срока, и это работает на этом.
2.3.1) inserted 12 lines, position 186 // JMD : default ISRs of CAN, to be overridden if HardwareCAN library is used in sketch void __attribute__((weak)) USB_HP_CAN_TX_IRQHandler(void) { ; } // Dummy ISR void __irq_usb_hp_can_tx(void) { USB_HP_CAN_TX_IRQHandler () ; } uint8 __attribute__((weak)) CAN_RX0_IRQ_Handler(void) { return 1 ; } // Dummy ISR

TJB12345
Пн 14 августа 2017 г. 14:41
Поэтому я решил попробовать тестирование в режиме Loopback, чтобы исключить MCP2551 из настройки. Я протестировал в режиме Loopback на синей таблетке и на доске Olimexino (STM32F103RBT6), что я только что получил. Скрипт не работает без проблем на этой доске. Ожидает 5 секунд, отправляет 1 сообщение, а затем возвращается в петли и просто мигает светодиод (не используя задержку () здесь).

Синяя таблетка отправляет сообщение, а затем замерзает. Я заменил 1.Резистор 5K R10 на линии D+ и попытался посмотреть, есть ли другие проблемы с пайком, но я не могу найти никаких. Попробовал это на другой доске с одинаковыми результатами. Я знаю, что это дешевые клоны, так что, может быть, все, что у меня с ними что -то не так.

Пока я собираюсь продолжить свое прототипирование с платой Olimexino-STM32, но я хотел бы использовать синюю таблетку, если это возможно, поскольку они дешевле и меньше, и у меня уже есть доска для приемопередатчика, которая соответствует ей.

Фоно
Пн, 14 августа 2017 г., 8:11 вечера
Упс!
В моем изменении файла есть ошибка.час.

Служба фиктивного прерывания в C: \ arduinoforstm32 \ arduino-1.6.9 \ arpware \ arduino_stm32-master \ stm32f1 \ cores \ maple \ libmaple \ usb \ stm32f1 \ usb.в
должен читать
uint8 __attribute __ ((слабый)) can_rx0_irq_handler (void)
{return 0; } // фиктивная ISR
Если вы измените его на 1, вы обрушитесь с операцией USB, когда библиотека HardwareCan не используется.

Я использовал только доску Olimexino STM32, и она работает. Я не пробовал с другой доской. Когда вы можете, обратитесь к доске Olimexino и сообщите мне результат.

TJB12345
Пн, 14 августа 2017 г., 20:26
Я работал над этим прямо сейчас и изо всех сил пытался заставить USB работать на моей доске Olimexino STM32....был в состоянии загрузить, есть и все, но не смог заставить его оставаться показывать как COM -порт, это изменение сразу же исправило, у меня сейчас работает эскиз BlinknCount. Собираюсь двигаться вперед и попытаться получить функцию Canbus вместе с сериалом на аппаратном последовательном порту с моим FTDI (необходимо последовательно для чтения сообщений для прототипирования.) Если я смогу заставить это работать, то я вернусь к тому, чтобы попробовать это на синей таблетке....

Спасибо за исправление!

TJB12345
Вторник 15 августа 2017 г. 1:59
Я получил Olimexino STM32, чтобы отправить и получать сообщения, как я хочу. Высокая скорость будет хорошим улучшением по сравнению с ООН. Я все еще хотел бы, чтобы чертежи работал, но должна быть небольшая разница, которая вызывает мою проблему.
Чтобы подтвердить:

Он успешно отправляет 1 сообщение, но затем замерзает (или застрянет где -то в петле). Я использую приемопередатчик MPC2551, который подтверждается, чтобы иметь 5 вольт. Код не работает в режиме Loopback, поэтому я почти уверен, что это либо оборудование BP, либо что -то в общем коде STMF103C (он работает с кодом Maple (Rev 3) для платы Olimexino).

BP был изменен с помощью 1.Резистор 5K вместо 10K на R10. Я попал в USB -булавки с паяльником, чтобы убедиться, что не было плохого припоя (хотя не использовать USB, загружать через сериал на USART1 (PA9 и PA10). Я смог заставить USB работать и на BP, запустив пример BlinkNcount, так что это заставляет меня поверить, что оборудование в порядке.

Одно отличие - я использовал USB для загрузки наброски банки в Olimexino, но затем использовал D7, D8 для последовательного адаптера для печати сообщений. На синей таблетке я загружаю прямо с серийного адаптера, это будет иметь какую -либо разницу?

Я убежден, что это сработает, так как кажется, что кто -то еще работал ранее в ветке.

Rogerclark
Вторник 15 августа 2017 г. 3:52
CAN и USB Обмен аппаратными ресурсами в MCU.

Вы не можете просто запустить Can и ожидать, что USB все еще будет работать, если вы не измените систему USB, чтобы сосуществовать

TJB12345
Вторник 15 августа 2017 г. 13:37
[Rogerclark - Вторник 15 августа 2017 г. 3:52] - CAN и USB Обмен аппаратными ресурсами в MCU.

Вы не можете просто запустить Can и ожидать, что USB все еще будет работать, если вы не измените систему USB, чтобы сосуществовать
Я не пытаюсь использовать оба...Вот почему я загружаю и запускаю сериал через USART1 и адаптер FTDI. Я использовал только USB на примере Blinkncount, чтобы убедиться, что эта часть действительно работала.

Похоже с Olimexino, я использовал USB для загрузки эскиза CAN, но не пытался использовать SerialUSB для связи с серийным монитором.

Я просто пытаюсь выяснить, почему при загрузке на общий STM32F103C8 он ведет себя иначе, чем STM32103RB. Я согласен, что USB, вероятно, что

Rogerclark
Вторник 15 августа 2017 г. 9:18 вечера
Как загружать с помощью загрузчика?

Вы выбрали опцию загруженного последователя, затем экспортировали двоичный файл, а затем вручную запустить DFU из командной строки?

Если вы выберете загрузку загрузчика в меню в IDE, он включает весь код подсистемы USB, чтобы эскиз можно было автоматически запустить через USB, чтобы снова загрузить в следующий раз в следующий раз.

TJB12345
Вторник 15 августа 2017 г., 21:54
Для общего, я просто выбираю сериал из «метода загрузки», и у меня есть мой адаптер FTDI до PA9 и PA10. Таким образом, он загружается нормально, но, возможно, он не включает код для прерывания?

Rogerclark
Вторник 15 августа 2017 г. 9:56 вечера
Да. Если вы выберете последовательную загрузку, параметры компиляции Удалите все USB -код, однако большинство других вариантов включают USB -код

TJB12345
Пт 18 августа 2017 г. 22:02
[Rogerclark - Вторник 15 августа 2017 г. 9:56 вечера] - Да. Если вы выберете последовательную загрузку, параметры компиляции Удалите все USB -код, однако большинство других вариантов включают USB -код
Я знал, что будет что -то маленькое, что я делал неправильно......Я получил это сейчас! В любом случае в режиме Loopback, но я уверен, что это будет работать и другие способы.

Я до сих пор не ударил загрузку с USB после того, как прошил общий загрузчик PC13, но я могу запрограммировать его, используя свой инструмент ST-Link и эту опцию в методе загрузки, и это все равно не имеет значения для меня, так как я все равно не могу использовать USB для сериала.

Я также пытался добавить линию в доски.txt file, как этот
genericSTM32F103C.menu.upload_method.serialMethod.build.upload_flags=-DSERIAL_USB

Rogerclark
Пт 18 августа 2017 г. 22:10
Вы можете загрузить через USB -загрузчик и предоставить Serial USB в ядре, однако вам придется сбросить вручную для загрузки, так как IDE использует USB для запуска платы в загрузчик, чтобы загрузить

Но я думаю, что есть более одного определения, вам может потребоваться изменить

И_ру
Солнце 03 сентября 2017 г. 9:50 вечера
1) Я знаю, что опоздал, но если у вас есть только первое сообщение, отправленное в CAN, а затем повесить трубку, хорошо проверить, хорошо ли работает приемная сторона (получить и подтвердить сообщение).

2) Чтобы остаться USB -сериалом в плате, я только что добавил проверку одного PIN -кода в настройку:
Serial1.begin(115200); pinMode(28, INPUT); // B12 = 16+12 = 28 digitalWrite(28, LOW); delay(50); Serial1.println("pin B12 set to input mode"); usbMode = digitalRead(28); Serial1.print("pin B12 is "); Serial1.println(usbMode); if (usbMode) { Serial1.println("Entering USB mode"); Serial.begin(9600); Serial.println("Entering USB mode"); while (1) { Serial.print("."); Serial1.print("."); digitalWrite(PC13, (!digitalRead(PC13))); delay(1000); } } else { digitalWrite(PC13, PC13OFF); Serial1.println("Starting CAN module ..."); CANSetup() ; // Initialize the CAN module and prepare the message structures. } Serial1.println("Setup finished, going to loop()");

Акаш
Вторник 12 сентября 2017 г. 6:55 утра
Привет, друзья, я использую плату Olimexino STM32 с анализатором CAN Bus Analyzer. Из библиотеки Hardwarecan подходит для отправки сообщения, но мы не можем отфильтровать сообщение по списку, она может только прочитать все сообщение. Для получения списка фильтров, что мне нужно изменить ниже??
CAN_STATUS can_filter(CAN_Port* CANx, uint8 filter_idx, CAN_FIFO fifo, CAN_FILTER_SCALE scale, CAN_FILTER_MODE mode, uint32 fr1, uint32 fr2) { uint32 mask = ((uint32)0x00000001) << filter_idx; CANx->FMR |= CAN_FMR_FINIT; // Initialization mode for the filter CANx->FA1R &= ~mask; // Deactivation filter if (scale == CAN_FILTER_32BIT) CANx->FS1R |= mask; else CANx->FS1R &= ~mask; CANx->sFilterRegister[filter_idx].FR1 = fr1; CANx->sFilterRegister[filter_idx].FR2 = fr2; if (mode == CAN_FILTER_MASK) CANx->FM1R &= ~mask; else CANx->FM1R |= mask; if (fifo == CAN_FIFO0) CANx->FFA1R &= ~mask; else CANx->FFA1R |= mask; CANx->FA1R |= mask; CANx->FMR &= ~CAN_FMR_FINIT; return CAN_OK; }

TJB12345
Ср 13 сентября 2017 г., 4:40
Я столкнулся с той же проблемой. После изучения регистров я выяснил, что фильтр и маски должны быть сдвинуты влево, прежде чем они будут помещены в регистры FR1 и FR2. Стандартные идентификаторы должны быть сдвинуты на 21 бит (11 бит для ID STD, перемещенные на 21 слева, чтобы переместить его в верхние биты реестра). и ID EXT должен быть сдвинут на 3 бита, а затем установите бит EXT ID. Вот моя модифицированная функция:
CAN_STATUS can_filter(CAN_Port* CANx, uint8 filter_idx, CAN_FIFO fifo, CAN_FILTER_SCALE scale, CAN_FILTER_MODE mode, uint32 fr1, uint32 fr2, int extID) { uint32 mask = ((uint32)0x00000001) << filter_idx; CANx->FMR |= CAN_FMR_FINIT; // Initialization mode for the filter CANx->FA1R &= ~mask; // Deactivation filter if (scale == CAN_FILTER_32BIT) CANx->FS1R |= mask; else CANx->FS1R &= ~mask; if (extID) { CANx->sFilterRegister[filter_idx].FR1 = (fr1 << 3) | CAN_ID_EXT; CANx->sFilterRegister[filter_idx].FR2 = (fr2 << 3) | CAN_ID_EXT; } else { CANx->sFilterRegister[filter_idx].FR1 = (fr1 << 21); CANx->sFilterRegister[filter_idx].FR2 = (fr2 << 21); } if (mode == CAN_FILTER_MASK) CANx->FM1R &= ~mask; else CANx->FM1R |= mask; if (fifo == CAN_FIFO0) CANx->FFA1R &= ~mask; else CANx->FFA1R |= mask; CANx->FA1R |= mask; CANx->FMR &= ~CAN_FMR_FINIT; return CAN_OK; }

Макбет
Ср 13 сентября 2017 г. 15:56
Просто хотел спросить, сделали ли изменения в основном файле, наконец, «вверх по течению» ... Любые новости от Мастера слияния?
Если нет, возможно ли поддерживать актуальную ветвь с фантастическими пятнами фоно?

@Phono: Спасибо за вашу помощь с коротким Ciruit-Recovery!

Rogerclark
Ср 13 сентября 2017 г., 21:54
[Макбет - Ср 13 сентября 2017 г. 15:56] - Просто хотел спросить, сделали ли изменения в основном файле, наконец, «вверх по течению» ... Любые новости от Мастера слияния?
Если нет, возможно ли поддерживать актуальную ветвь с фантастическими пятнами фоно?

@Phono: Спасибо за вашу помощь с коротким Ciruit-Recovery!

Кто -нибудь генерировал пиар??

Я не помню, чтобы видел один ....

Фоно
Чт 14 сентября 2017 12:45
Я определенно нелегко с git, поэтому я не выпустил пиар.
Поскольку некоторые люди здесь успешно интегрировали библиотеку Hardwarecan в свои ядра, может кто -то выполнить PR от моего имени? Я могу проверить правильность после этого, если хотите.

пионер
Сб 16 сентября 2017 г. 10:08
Всем привет.

Кто -нибудь работал с SN65HVD230 BAD? http: // www.волна.com/wiki/sn65hvd230_can_board

Я только что узнал о автобусе CAN несколько дней назад. Я понятия не имею, как написать код для моей платы STM32F103VET6. http: // www.eBay.com/itm/stm32f103vet6-a ... SW2XFUH7AY

Как я видел в моем листе данных микроконтроллера PA11 для CAN_RX и PA12 для CAN_TX. Это где я подключаюсь к SN65HVD230 CAN BAD RX и TX?

Я понятия не имею, как написать какой -либо код для отправки или получения между этими SN65HVD230 CAN BOD MODULES. Любой пример кода будет очень признателен. заранее спасибо.

И_ру
Пт 22 сентября 2017 г. 8:39
[Фоно - Чт 14 сентября 2017 12:45] - Я определенно нелегко с git, поэтому я не выпустил пиар.
Поскольку некоторые люди здесь успешно интегрировали библиотеку Hardwarecan в свои ядра, может кто -то выполнить PR от моего имени? Я могу проверить правильность после этого, если хотите.
Я могу попробовать пиар. Не могли бы вы проверить эту ветку: https: // github.com/megadrifter/arduino_ ... Gmlan-тест ?
Я также могу попытаться включить изменения, предложенные TJB12345

@to All:
Я могу активировать USB вместо CAN, но почему невозможно серийно загружать? (изначально я загружаю через ST-Link)
В таблице данных говорится USB
и может использоваться в том же приложении, но не одновременно.

Фоно
Пт 22 сентября 2017 г. 13:39
@And_ru:
Есть различия с моим кодом, так как я не совершал все свои изменения. Не могли бы вы изменить свои файлы следующим образом:

********************************************* ***************************
1-файл может.В

Строки с 106 до 110 должны прочитать:
// JMD 2017/07/18 -- added volatile to fix queue problems, removed can_rx_count volatile uint8 can_rx_head; volatile uint8 can_rx_tail; volatile uint8 can_rx_lost; uint8 can_active = 0;

И_ру
Вторник 26 сентября 2017 г. 20:59
[Фоно - Пт 22 сентября 2017 г. 13:39] -
Если возможно, просто пришлите мне эти новые файлы. По электронной почте см. В частных сообщениях.

Rogerclark
Вторник 26 сентября 2017 г. 22:54
К вашему сведению. Я только что перенес этот пост в автобусную ветку, так как на него не было ответа, и, казалось, было опубликовано не в том месте
[пионер - Сб 16 сентября 2017 г. 10:08] - Всем привет.

Кто -нибудь работал с SN65HVD230 BAD? http: // www.волна.com/wiki/sn65hvd230_can_board

Я только что узнал о автобусе CAN несколько дней назад. Я понятия не имею, как написать код для моей платы STM32F103VET6. http: // www.eBay.com/itm/stm32f103vet6-a ... SW2XFUH7AY

Как я видел в моем листе данных микроконтроллера PA11 для CAN_RX и PA12 для CAN_TX. Это где я подключаюсь к SN65HVD230 CAN BAD RX и TX?

Я понятия не имею, как написать какой -либо код для отправки или получения между этими SN65HVD230 CAN BOD MODULES. Любой пример кода будет очень признателен. заранее спасибо.

Фоно
Ср 27 сентября 2017 г. 7:57 утра
Привет,
Я не использовал эту доску, но нет никаких причин, почему она не должна работать.
Вам просто нужно подключить его к PA11 и PA12 и адаптировать пример в библиотеке HardwareCan, чтобы выбрать эти булавки.
(На самом деле эта библиотека находится в стадии строительства, и я надеюсь, что она будет доступна).
До сих пор эта библиотека требует изменений в ядре, так что вы делаете их вручную, либо ждете, пока не будет доступна новая версия среды STM32.
В то же время вы можете прочитать файлы, которые найдете здесь:
https: // github.com/megadrifter/arduino_ ... Ardwarecan

И_ру
Пт 13 октября 2017 г. 11:41
Привет, Роджер,
[Rogerclark - Ср 13 сентября 2017 г., 21:54] - Кто -нибудь генерировал пиар??
Я только что сделал пиар с изменением основных файлов. Пожалуйста, проверьте, это все, что нам нужно.
https: // github.com/rogerclarkmelbourne/ ... 2/тяга/355

Также я добавил банки скорость 33 и 95; CAN_GPIO_PA11_PA12 Картирование.

И_ру
Пт 13 октября 2017 г. 12:17
Фоно написал: Ср 27 сентября 2017 г. 7:57 утра

Rogerclark
Сб 14 октября 2017 г. 8:25 вечера
Я вижу, что PR включает в себя изменения в такие вещи, как The Adplaive Timers и т. Д

Это должно быть тщательно протестировано людьми, использующими эти таймеры

Я мог бы потенциально протолкнуть ветвь с этими изменениями, но потребуется некоторое время, чтобы получить эту сложность и риск этого изменения в мастере, потому что все «бедны времени» и вряд ли будут полностью протестированы в краткосрочной перспективе.

И_ру
Вт 17 октября 2017 г. 15:10
[Rogerclark - Сб 14 октября 2017 г. 8:25 вечера] - Я вижу, что PR включает в себя изменения в такие вещи, как The Adplaive Timers и т. Д

Это должно быть тщательно протестировано людьми, использующими эти таймеры

Я мог бы потенциально протолкнуть ветвь с этими изменениями, но потребуется некоторое время, чтобы получить эту сложность и риск этого изменения в мастере, потому что все «бедны времени» и вряд ли будут полностью протестированы в краткосрочной перспективе.
Привет, Роджер,

На самом деле изменяются только три файла ядра:
1) Stm32f1 \ cores \ maple \ libmaple \ rcc_f1.в
2) Stm32f1 \ cores \ maple \ libmaple \ usb \ stm32f1 \ usb.в
3) Stm32f1 \ System \ libmaple \ stm32f1 \ include \ series \ rcc.час

Другие могут быть устаревшими из -за старой вилки.

Я должен добавить также:
[TJB12345 - Ср 13 сентября 2017 г. 4:40] - Мой проект использует только идентификаторы EXT, но я решил добавить параметр в функцию фильтра, чтобы указать, является ли идентификационный фильтр EXT или стандарт. Этот параметр должен быть добавлен в 4 места, может.H, Can.C, Hardwarecan.H и Hardwarecan.CPP.
Должен ли я сделать еще один пиар и отменить ток или просто обновить свой филиал?
Извините, GitHub по -прежнему новый для меня.

Rogerclark
Вт 17 октября 2017 г., 19:28
Ребята

У меня есть большое слияние Pendinb, чтобы добавить USB HID и т. Д., что может повлиять на ваш PR, также мне нужно было бы дать ваши изменениям более видимость, так как только несколько человек спасают эту ветку.

Мне нужно будет начать 2 новых потока в общем обсуждении о предлагаемых изменениях в USB, а также для CAN.

Поскольку у нас теперь есть тысячи пользователей для этого ядра, я должен быть осторожен, когда менять вещи в его основе.

Бобк
Вт 17 октября 2017 г., 21:26
Я надеюсь сыграть с банкой, когда я получу еще немного оборудования, у меня есть несколько проектов, где я мог бы его использовать. Я буду больше взглянуть на предлагаемые изменения в банке.

Rogerclark
Вт 17 октября 2017 г. 11:11
Я думаю, что у меня есть компас в банке от беспилотника DJI, но я понятия не имею, какой именно тип это (и мне придется найти, куда я его положи Компас, чтобы сделать его совместимым с контроллером полета без DJI)

Так.. Пока я не найду его, я не смог бы проверить код банки :-(

Стивестронг
Ср 18 октября 2017 г. 7:34
HM, у меня был только короткий взгляд в PR, у него, кажется, действительно глубоко в хорошо оптимизированной части USB CDC Part.
Я не рад это увидеть, я оцениваю риск, чтобы что -то ошибалось на серийном USB довольно высоко.

Rogerclark
Ср 18 октября 2017 г. 10:01
Я согласен

Это выглядит рискованно

Бобк
Ср 18 октября 2017 г. 10:07
[И_ру - Вт 17 октября 2017 г. 15:10] - Другие могут быть устаревшими из -за старой вилки.
...
Извините, GitHub по -прежнему новый для меня.
Я думаю, что ваш пиар втянул несколько других изменений, которые ненужны или неверны. Я бы снова начал с чистой ветви текущего репо arduino_stm32 и применил только изменения, необходимые для банки.

Кажется, некоторые изменения в USB неизбежны, потому что в F1 USB разделяет ISR и другие вещи с Can. Согласно комментариям в PR, USB не может работать в то же время, что и может, но я не уверен, что это правда в целом. Я думаю, что можно запустить как USB, так и может, но это может потребоваться тщательное кодирование.

Редактировать; Я быстро смирился с нитью, и общий буфер был упомянут в начале. Цитата из эталонного руководства (RM0008, PG.655) Примечание: в устройствах с низкой, средней, высокой и xl-плотностью USB и может поделиться выделенным 512-
Мюминка байта SRAM для передачи и приема данных, и поэтому они не могут быть использованы
одновременно (общий SRAM доступен через CAN и USB исключительно). USB
и может использоваться в том же приложении, но не одновременно.
Я думаю, что ул здесь нечетли. Характер коммунальных компаний заключается в том, что вы создаете соединение, тогда нежелательные данные могут прибыть в любое время. Св. Кажется, предлагается немного делать USB, затем закройте его, сделайте некоторую банку, закройте его, повторно выметайте USB и сделайте USB. Я предполагаю, что теоретически, если вы контролируете протокол на USB и можете ли вы организовать строгое пинг-понг, контролируемый F103, но это очень особый случай, а не практичный.

Я думаю, что практически говоря, USB и могут не использоваться в одном и том же приложении на F103. Конечно, в нашем случае Arduino мы стараемся представить прост в использовании API для пользователя. Я не могу придумать разумного способа предотвращения использования пользователей USB и одновременно могу. Любое сосуществование времени выполнения будет связывать USB и может в основном вместе, и создание ошибки времени выполнения довольно запутанно для ничего не подозревающих пользователей.

Так что я не уверен, как продолжить с этим. USB довольно запечен в ядро ​​arduino_stm32. Включение может означать отключение USB, поэтому операция USB -кода становится спорной после этого. Я думаю, что лучшее, что мы могли бы сделать, это минимизировать изменения в USB, и пока пользователь не включает, что эти изменения не оказывают никакого влияния. Наименьшее изменение состоит в том, чтобы вызвать CAN CROUT в USB -прерывании, CAN без прерываний довольно бесполезен.

Rogerclark
Ср 18 октября 2017 г. 20:56
Спасибо @bobc

Это кажется разумным подходом.

КСТАТИ.

Изменение, чтобы объединить USB HID в мастере, кажется столь же спорным, поэтому я бы посоветовал, чтобы пыль оставалась на этом, прежде чем может быть объединена.
Однако, поскольку USB HID PR, похоже, в настоящее время находится в процессе обновления и исправления ошибок его автором, я думаю, что, возможно, придется ждать довольно долгое время

Я предпочитаю интегрировать HID раньше, так как количество людей, которые хотят, чтобы скрыть, выше, чем количество людей, которые хотят, могут быть, а количество людей с аппаратным обеспечением - это небольшой процент участников, где большинство людей используют USB (даже Если только для серийного CDCACM)

И_ру
Пт 20 октября 2017 г. 8:33
[Бобк - Ср 18 октября 2017 г. 10:07] - Я думаю, что ваш пиар втянул несколько других изменений, которые ненужны или неверны. Я бы снова начал с чистой ветви текущего репо arduino_stm32 и применил только изменения, необходимые для банки.
Да, я сделаю это. Просто дай мне знать, чтобы начать.
[Бобк - Ср 18 октября 2017 г. 10:07] - Я думаю, что практически говоря, USB и могут не использоваться в одном и том же приложении на F103.
Может быть, я понимаю, что вы неправильно, но вы видели этот пример: http: // stm32duino.com/viewtopic.PHP?f = 1 ... = 90#p33946 ?
Я могу либо начать свой обычный сценарий, либо начать USB в качестве серийного порта UART. Предложить, как мне проверить, используя USB и в одном приложении?

Стивестронг
Пт 20 октября 2017 г. 9:32
[И_ру - Пт 20 октября 2017 г. 8:33] - Я могу либо начать свой обычный сценарий, либо начать USB в качестве серийного порта UART.
Это хорошая особенность. Но...
Кто -нибудь в этом нужен? Я сомневаюсь. Я думаю, что один использует одно или другое, но я не могу представить какое -либо приложение, в котором USB и можно альтернативно использовать.
Таким образом, чтобы сохранить исходную версию, используемую многими пользователями в безопасности и не повреждены, я могу только предложить использовать отдельную филиал для CAN.

Цзяка
Вторник 30 января 2018 г. 20:52
Привет:
Fisrt, спасибо вам всем, ребята, которые проделали такую ​​отличную работу.

Если кто -то все еще заинтересован в этой теме, я сделал библиотеку, которая использует внутренний контроллер CAN.

https: // github.com/jiauka/nmea2000_stm32f1

Он работает с драйвером «Bluepil» STMF103C8 и SN65HVD230 CAN, но он должен работать с любым MCU STM32FXX с, возможно, некоторыми незначительными изменениями в настройке часов, я должен проверить wiht, что я укладываю вокруг

Nmea2000_can.H нужно немного настройки, чтобы добавить библиотеку

> #ELIF определено (STM32F103XB) || Определено (STM32F103XB)
> #define use_n2k_can use_n2k_stm32f1xx_can
106A109,120
> #elif use_n2k_can == use_n2k_stm32f1xx_can
> // Использование устройств MBED
> #включать <Nmea2000_stm32f1.час>
> TNMEA2000 &Nmea2000 =*(new nmea2000_stm32f1 ());
>
> #elif use_n2k_can == use_n2k_stm32f103_can
> // Использование устройств MBED
> #включать <Nmea2000_mbed.час> // https: // github.com/thomasonw/nmea2000_mbed
> TNMEA2000 &Nmea2000 =*(new tnmea2000_mbed ());
> TmbedStream Serstream;
>
>
114,116C128,130
< #если определено (__ STM32F1__) // Maple
< #включать <MapleintCompatibility.час>
< #endif
---
> #если определено (STM32F103XB) // Maple
> #включать <Nmea2000_stm32f1.час>
> TNMEA2000 &Nmea2000 =*(new nmea2000_stm32f1 ());
117A132
> #endif

Ваш,

Дж.

michael_l
Ср 31 января 2018 г., 6:14
Я сделал проект STM32Cube с USB и может включить для STM32F103C8, и он не показывает никаких конфликтов между USB и может. Думаю, я что -то упускаю ?

Изображение
Изображение
Изображение

Rogerclark
Ср 31 января 2018 г. 22:26
Я думаю, что проблема заключается в общем прерывании или общей памяти или обоих для CAN и USB -секций внутри STM32F103
(Я уверен, что это обсуждалось подробно раньше)

Coddingtonbear
Вт 06 февраля 2018 г. 3:45 утра
Это может быть не полезно для многих из вас, но я опубликовал вилку репозитория arduino_stm32 здесь, включая минимальный набор изменений из вышеупомянутого мишмаша ветвей и патчей, но с добавленной (работой) поддержкой режима опроса. Вы можете найти его в моей твердой ветви здесь:
https: // github.com/rogerclarkmelbourne/ ... Ardwarecan.

Я делаю, хотя даже При использовании оригинала Немодифицированный патчи, У меня есть проблемы, связанные с прерыванием, которые я не уверен, как решить-мне стыдно сказать, что разговор с этого момента покажет некоторые недостатки в моем понимании микроконтроллеров.

В частности - при использовании режима IRQ (или, на самом деле, наличие любого из прерываний CAN - CANX->Ier = (can_ier_fmpie0 | can_ier_fmpie1 | can_ier_tmeie) - включено), в тот момент, когда любой из этих прерывает огонь, микроконтроллер, кажется, видит. Это то, что вдохновило меня на то, чтобы выяснить режим опроса, описанный выше. Это не происходит при отладке с использованием stlink, поэтому я немного не понимаю, что я делаю неправильно, и задаюсь вопросом, есть ли кто -нибудь из вас, есть какой -либо вклад.

Учитывая, что я предполагаю, что это проблема в ISR, мне очень любопытно, как различия в различных прерываниях CAN_IER_FMPIE0/CAN_IER_TMEIE/и т. Д. Я посмотрел на страницу 673 в руководстве (http: // www.ул.com/content/ccc/resource/ ... 171190.PDF) и может увидеть, как они нанесены на карту с горсткой прерываний в общем смысле, но я совсем не ясно в том, что это может означать в Maple/STM32Duino, насколько эти прерывания называются. Я, однако, заметил три функции прерывания внизу банки.C в оригинальных поставляемых пятнах из фонога --
uint8 __attribute__ ((interrupt)) CAN_RX0_IRQ_Handler(void) { if (can_active) { can_rx_copy_from_fifos(); } return can_active; // return CAN active flag to USB handler } // Addition JMD: the messages stored in fifo1 must also trigger an interrupt. void __irq_can_rx1(void) { CAN_RX0_IRQ_Handler() ; } void __attribute__ ((interrupt)) USB_HP_CAN_TX_IRQHandler(void) { if (can_active) { if (CAN1_BASE->TSR & CAN_TSR_RQCP0) CAN1_BASE->TSR |= CAN_TSR_RQCP0; // reset request complete mbx 0 if (CAN1_BASE->TSR & CAN_TSR_RQCP1) CAN1_BASE->TSR |= CAN_TSR_RQCP1; // reset request complete mbx 1 if (CAN1_BASE->TSR & CAN_TSR_RQCP2) CAN1_BASE->TSR |= CAN_TSR_RQCP2; // reset request complete mbx 2 } }

Стивестронг
Вт 06 февраля 2018 г. 9:35 утра
4 возможных IRQ, используемых CAN, определены здесь: https: // github.com/rogerclarkmelbourne/ ... способный.S#174.
Тем не менее, я не уверен, кто из них вообще используется вообще.

Nobby42
Солнце 11 марта 2018 г., 19:17
Привет,

Я использую библиотеку BAN Bus, работает нормально. Но у меня есть проблемы с расширенным идентификатором и фильтрацией.
Фильтр работает только со стандартным идентификатором. Как я могу использовать его для расширенных идентификаторов?
Это мой код: #include #include #include #define BPIN 0 #define SPIN 1 byte msgD0 ; uint32_t lastSent = 0; int count = 1; int ledState = 0; int extID = 1; float cTemp; float pressure; union t_tag {byte b[4]; float tempVal;} t; union p_tag {byte b[4]; float pressVal;} p; // Instanciation of CAN interface HardwareCAN canBus(CAN1_BASE); CanMsg msg ; // Set the LCD address to 0x3E for a 16 chars and 2 line display LiquidCrystal_I2C lcd(0x3E, 20, 4); void CANSetup(void) { CAN_STATUS Stat ; // Initialize CAN module canBus.map(CAN_GPIO_PB8_PB9); Stat = canBus.begin(CAN_SPEED_1000, CAN_MODE_NORMAL); // set speed to 1000 kbps CAN_ID_EXT; lcd.setCursor(0, 1); lcd.print("Status: "); lcd.println(Stat); canBus.filter(0, 0x00ffee00, 0x1fffffff); // filter don't work for ID 0x00FFEE00 canBus.filter(1, 0x3f, 0x1fffffff); // filter work for ID 0x00FFEE00 canBus.set_irq_mode(); // Use irq mode (recommended), so the handling of incoming messages Stat = canBus.status(); if (Stat != CAN_OK) { lcd.println("CAN initialization Failed"); /* Your own error processing here */ ; // Initialization failed } }

Vegfokic
Солнце 11 марта 2018 г. 20:03
Привет
Могу ли я найти библиотеку шины и пример для STM32F407?

Vegfokic
Чт 15 марта 2018 г. 11:16 утра
Привет

Я нашел код COIDE для STM32Discovery, и это работает после изменения. Плата изменяется на STM32F407VET6. Отмеченные синие и красные светодиоды изменяются на PA6 и PA7 LED. Могут ли выводы на PB8 и PB9, скорость 100 КБ/с. Мне удается загрузить на доску. После того, как два светодиода станут легкими. Когда я подключаюсь к сети 100 кб/с, которые выжимают сигнал к плате STM, два светодиода начинают мигать :) Я использую интерфейс SN65HVD230.

Как он может реализовать в Generic или Dunio Repo?

Фоно
Сб 24 марта 2018 г. 16:45
Всем привет,
В библиотеке CAN не хватает надлежащей информации для использования.
Что касается механизма фильтра, необходимо понять, как стоимость проходит как аргумент для идентификатора и маски, используется библиотекой.
Это потому, что идентификатор и регистры маски не должны быть записаны непосредственно со значением идентификатора. Вместо этого идентификатор должен быть обработан в соответствии с распределением битов, описанного на рисунке ниже (см. Руководство пользователя STM32 RM0008 Page 640, Рисунок 229).
Method Argument [31:24] : [23:16] : [15:8] : [7:0] Mapping STID[10:3] : STID[2:0] EXID[17:13] : EXID[12:5] : EXID[4:0] IDE RTR 0

Vegfokic
Пн 26 марта 2018 г., 19:35
Фоно
Мне это слишком сложно. У меня есть библиотека для Arduino STM32F103, это работа, но я не могу использовать ее для STM32F407.
Пример «Demo 59 Can» работает в Coide для STM32F407 (не используйте библиотеку HAL).
Теперь я пытаюсь настроить модуль в достуике, используя библиотеку HAL. У библиотеки Cubemx есть некоторая информация, но не в полной мере о может.

Лукас
Солнце 27 мая 2018 г., 22:15
Привет,

Я сделал что -то, что можно наполнить с оборудованием для диагностики UNO и CAR.
Я купил на eBay некоторые платы STM32F103C8T6, чтобы использовать их в качестве CAN Communicator.

Я подключил трансивер PCA82C250 к PB 8 и 9.
USB TTL подключен к A9 A10.

Аппаратное обеспечение подключено к некоторым автомобильным модулям на столе, я знаю, что они постоянно отправляют.
Подтверждено также с Uno...

Я просто хочу распечатать данные о USB TTL.

Скорость 125 расширенный идентификатор

Я проверил несколько библиотек здесь на доску, но потерял обзор---
Фоног компилируется, но сбои при подключении линий данных к шине банки
Megadrifter имеет некоторые ошибки в своем фильтре. Функции объявляются разными, что я не смог реконструировать функцию фильтра.

Я нашел третью библиотеку на последних страницах дискуссии совместного совместного...

Кажется, что прерывание часто выходит в сериал.println я теряю соединение с чипом.

Странно тоже.
Serial1 используется во многих библиотеках.
Я получаю только выход на сериал.

На третьем последовательном порте я не могу запрограммировать право STM32?

Может ли кто -нибудь предложить полную библиотеку, он уверен, что она работает на расширенных идентификаторах с USB TTL?

Фоно
Вт, 05 июня 2018 г., 15:05
@lukas:
Интерфейс CAN STM32F103 имеет общий вектор прерывания с интерфейсом USB.
Об этом позаботится в Arduino для ядра STM32 (по крайней мере, в версии, которую я совершил) и обрабатывался с помощью слабых идентификационных объявлений в библиотеке.
Пожалуйста, проверьте, подключен ли вектор прерывания CAN к процедуре CAN Service Service в библиотеке.

Лукас
SAT 09 июня 2018 11:27
Спасибо за ответ,
Я скачал эту библиотеку: https: // github.com/phonog/arduino_stm32 ... OG-Patch-1

и вставил все файлы через Arduino 1.85 Установка, которую я сделал с загрузкой из IDE.

Поэтому у меня должны быть все необходимые файлы, но плата вылетает после подключения к банке, возможно, я сделал что -то не так с подключением трансивера или приемопередатчика сломана, но не угадайте

Далее я сделал то же самое с этой библиотекой https: // github.com/megadrifter/arduino_ ... Gmlan-тест
Но здесь настройка фильтра в HardwareCan.CPP ошибается.c но функция определяется неправильно, после неуместного я почти получу тот же результат.

С некоторым нормальным UNO я могу получать данные с шины с расширенным идентификатором 125, так что на шине что -то есть...

Фоно
Солнце 24 июня 2018 г. 15:27
@Lukas: Я пока не знаю, но что -то выглядит странно. Я не знаком с OBD, но я читал на Википедии, что скорость битов должна быть 250 кб/с или 500 кб/с. Вы упоминаете об использовании 125 кб/с. Вы уверены?

Michelkeijzers
Вт 26 июня 2018 г. 9:10 вечера
Я скачал оба библиотеку с фоно (https: // github.com/phonog/arduino_stm32и мегадрифтер (https: // github.com/megadrifter/arduino_ ... Gmlan-тест), но когда я пытаюсь установить его (с Arduino IDE, Sketch, включите библиотеку, добавьте .Библиотека ZIP) и выбрать библиотеку, я получаю ошибку:

Статус выхода 1
Компиляция ошибок для платы Generic STM32F103C Series
Указанная папка/zip -файл не содержит действительной библиотеки.

Что я должен сделать, чтобы установить библиотеку (в системе Windows) ?

Пито
Вт 26 июня 2018 г., 21:18
Эти ссылки не библиотеки, а целые ядра STM32Duino..

Michelkeijzers
Ср 27 июня 2018 г., 19:40
[Пито - Вт 26 июня 2018 г., 21:18] - Эти ссылки не библиотеки, а целые ядра STM32Duino..
В соответствии с https: // www.Ардуино.cc/en/guide/ядра Мне нужно использовать файл менеджера доски, например:

https: // github.com/stm32duino/boardmana ... индекс.json

Или я должен установить версию с помощью файлов CAN по -другому? Если так, как?

С уважением, Мишель

michael_l
Вторник 04 сентября 2018 г. 15:35
Я планирую попытаться перенести эту библиотеку на F4 со Stevestrongs Repo. В F4 нет конфликтов между USB и может.

Где я могу найти последнюю версию ? Фоног: это здесь: https: // github.com/phonog/arduino_stm32 ... OG-Patch-1 ? Спасибо.

Фоно
Чт 13 сентября 2018 г., 19:56
@michael_l: Да, это правильное место.

darkspr1te
Пн, 01 октября 2018 г., 14:59
Привет всем,
Некоторые из вас могут захотеть увидеть код для работы,
https: // github.com/darkspr1te/om127-reboot


С уважением

darkspr1te

Tjlynchny
Пн 29 октября 2018 г., 22:40
[Фоно - Сб 24 марта 2018 г. 16:45] -
Для расширенного идентификатора это должно быть ( ( ( id & 0x7FF ) << 21 ) | ( ( id & 0x1FFFF800 ) >> 8 ) | 4 )

Фоно
Ср 31 октября 2018 г. 20:42
Если вы вставите эти формулы в код библиотеки, вы заставите библиотеку только распознавать расширенные идентификаторы.
Я имел в виду, что вы должны передать эти выражения в качестве аргументов к вызову метода фильтра. В вашем случае вы можете написать canBus.filter(0, ( ( id & 0x7FF ) << 21 ) | ( ( id & 0x1FFFF800 ) >> 8 ) | 4, 0xFFFFFFFF) ; //

И_ру
Сб 3 ноября 2018 г., 20:40
[Лукас - Солнце 27 мая 2018 г. 22:15] - Кажется, что прерывание часто выходит в сериал.println я теряю соединение с чипом.
Привет!
Просто для получения информации, в моих эскизах я использую
Serial1 = Pins A9-A10
Serial2 = Pins A2-A3
И это работает хорошо.

[Michelkeijzers - Вт 26 июня 2018 г., 21:10] - Мегадрифтер (https: // github.com/megadrifter/arduino_ ... Gmlan-тест)
Пожалуйста, не используйте это, я начал вносить некоторые изменения, но теперь это кажется заброшенным.

Если у вас проблемы с установкой библиотеки, вы можете загрузить ZIP -архив установленного Arduino IDE с рабочей библиотекой внутри.
https: // cloud.почта.ru/public/eqai/jaoxwvync (Я сделал этот снимок для себя).

Фоно
Пт, 09 ноября 2018 г., 9:39
Привет,
Я перенес библиотеку Hardwarecan в новейшее ядро, которое я взял из репозитория.
Он разбился при инициализации интерфейса CAN.
Я узнал, что код инициализации в Hardwarecan.CPP

Can_status hardwarecan :: begin (can_speed speed, uint32 режим)

включен а
Сериал.конец();
На более ранних версиях ядра он работал. Теперь это рухнет. Как быстрое и грязное решение, я прокомментировал это.
В этом состоянии работает мой эскиз, но когда начинается выполнение, мой компьютер жалуется, что нераспознанное USB -устройство было обнаружено. Это должно быть потому, что USB -сериал должен быть должным образом закрыт.
Кто может сказать мне, что сейчас не так? Какой правильный синтаксис для закрытия серийного интерфейса USB?

Фоно
Пт 16 ноября 2018 г. 13:09
В конце концов я обнаружил, что заявление
Сериал.конец();
может быть опасным, если сериал не определен в это время. Я изменил код на

if (серийный) серийный.конец() ;

И это вылечило проблему.
Пожалуйста, обновите свою библиотеку соответственно.

Metrobcn
Ср 28 ноября 2018 г., 7:19
Привет, фоно!

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

Ваш совет будет очень оценен!!

Фоно
Чт 29 ноября 2018 г., 7:45 утра
Я фактически обновил хранилище сегодня, чтобы включить это изменение. Вы найдете это в
https: // github.com/phonog

Vicolaships
Сб 02 февраля 2019 г. 20:28
Всем привет!
Я хотел бы запустить проект с 25 устройствами (STM32 Blue Pills), общающиеся через автобус.
Мне нужна автобус в банке, потому что у меня довольно длинные кабельные расстояния (~ 2 метра), а SPI / I2C очень трудно работать в этих условиях.

- Нужен ли мне внешнее оборудование или могу использовать булавки PB8/PB9 и PA11/PA12 синего боя ? (Какой из них я должен использовать ?)
- Какую библиотеку мне следует использовать ? Сырая банка в порядке (например, мне не нужен Canopen)
- Какое состояние этой библиотеки ? Есть ли недостающие функции ?

Я немного прочитал, но я не понимаю, какое программное обеспечение доступно, и прежде чем начать все, что я хотел бы получить больше информации :)
Спасибо за понимание!

Rogerclark
Солнце 03 февраля 2019 2:15 утра
Ядро Libmaple не имеет поддержки CAN, но есть пиар для него, который вы могли бы попробовать

Я не знаю, есть ли официальное ядро ​​ST, поддержка высокого уровня для CAN, вам нужно PM @FPISTM и спросить

Вы всегда можете напрямую получить доступ к аппаратному обеспечению CAN, но проблема в том, что он обменивается с USB, и по умолчанию ядро ​​Libmaple включена поддержка USB, если вы не загружаете через аппаратный сериал

Скоаа
Солнце 03 февраля 2019 г. 11:26 утра
Репозиторий для поддержки CAN - это ссылка выше вашего поста. Работает хорошо.

Vicolaships
Пн, 04 февраля 2019 13:02
ОК для стороны программного обеспечения.

Таким образом, мне нужен только приемопередатчик, а синяя таблетка имеет контроллер CAN (используется через библиотеку Hardwarecan) в STM32?

Я сделаю полный учебник (проводка + код) о том, как общаться между 2 STM32 через автобус, когда я получу чипы MCP2551, и все получаю все, что работает.

Роджерл
Пн, 04 февраля 2019 г. 15:53
[Vicolaships - Пн, 04 февраля 2019 г. 13:02] - Я сделаю полный учебник (проводка + код) о том, как общаться между 2 STM32 через автобус, когда я получу чипы MCP2551, и все получаю все, что работает.
Я планирую сделать проект в банке в конце года, так что с нетерпением жду вашего учебника. Я заказал несколько чипсов MCP2551.

Стивестронг
Чт, 07 февраля 2019 г. 10:02
Я только что получил свои 3 модуля с MCP2515 +TJA1050, заказано отсюда: https: // www.aliexpress.com/item/mcp2515 ... 72090.HTML
Теперь мне нужно найти для них проект 8-)

Vicolaships
Чт, 07 февраля 2019 г., 21:48
[Стивестронг - Чт, 07 февраля 2019 г. 10:02 утра] - Я только что получил свои 3 модуля с MCP2515 +TJA1050, заказано отсюда: https: // www.aliexpress.com/item/mcp2515 ... 72090.HTML
Теперь мне нужно найти для них проект 8-)
Прохладный!

Почему вы заказывали такой модуль (Can Controller и можете трансивель), если у синей пары (и других STM32) уже есть контроллер CAN?
Почему бы не заказать TJA1050 или MCP2551 напрямую?

Стивестронг
Пт, 08 февраля 2019 г. 8:51
Просто потому, что я использую USB -сериал, так что может тогда недоступен.
И цена на приемопередатчик не намного ниже, чем полный модуль, так зачем беспокоиться о программном обеспечении Native CAN?
Тем не менее, я все еще ценю усилия, чтобы принести возможность работать на BP, просто я считаю, что гораздо проще использовать LIB для MCP2515.

Vicolaships
Сб 23 февраля 2019 г., 19:14
Я передумал и буду использовать LiboPencm3 для своего проекта CAN:
http: // libopencm3.org/docs/andal/stm32 ... штраф.HTML

IRLIB на STM32?

RTC Libs.