Есть ли библиотека Ethernet, работающая на доске STM32F4 Discovery (F407)?

Stmfunk
Пн 12 декабря 2016 г. 14:43
Привет,

Все библиотеки Ethernet (uipethernet, ethernet_stm, arduino_uip, serasidis_ethercard_stm) могут быть составлены с STM32F103.
Но никто из них не компилируется с открытием F4 (F407).

Когда я увидел библиотеку "arduino_uip" в папке библиотеки STM32F4, я подумал, что могу использовать ее с платой F4. Но, к сожалению, это не компилировало. После исследования на форуме я обнаружил, что он был включен в библиотеку только для NetDuino. Это правильно?

Мне определенно нужен Ethernet на F4 Discovery, но похоже, что нет доступной библиотеки. Есть ли шанс получить Ethernet на этой доске?
Есть ли какие -либо модификации, необходимые в библиотеке, чтобы заставить ее работать? Если да, где я могу найти информацию для этого ?

Martinayotte
Пн 12 декабря 2016 г. 14:47
Да, arduino_uip в папке STM32F4 был добавлен некоторое время назад для NetDuino2plus, но он должен работать на любой F4.
Какие у вас ошибки компиляции ? (Может быть, некоторые другие изменения делают такие ошибки на поверхность)

Stmfunk
Пн 12 декабря 2016 г. 14:52
Спасибо, Мартин, за быстрый ответ.
Прошлой ночью я шел впадил почти все ваши посты относительно Ethernet :) Может я что -то пропустил...
Я также попробовал твою репо. Но все еще не повезло.
Пожалуйста, держитесь, я отправлю сообщения об ошибках через пару минут..

Stmfunk
Пн 12 декабря 2016 г. 15:02
Запуск последнего Arduino_stm32-Master на Arduino IDE 1.6.13

Вы упомянули ошибку SPI много IME. Я получаю те же ошибки класса SPI, но понятия не имею, как это решить.

Я также заменил библиотеку SPI от F1 до F4, но все еще не повезло.

Может быть, вы уже нашли решение для того, что я пропустил на этом форуме...



Arduino: 1.6.13 (Windows 7), Board: "STM32 Discovery F407" C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility\Enc28J60Network.cpp:40:8: error: 'SPIClass' does not name a type extern SPIClass SPI; ^ C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility\Enc28J60Network.cpp: In static member function 'static void Enc28J60Network::init(uint8_t*)': C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility\Enc28J60Network.cpp:72:7: error: 'class HardwareSPI' has no member named 'setBitOrder' SPI.setBitOrder(MSBFIRST); ^ Using library arduino_uip at version 1.04 in folder: C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip exit status 1 Error compiling for board STM32 Discovery F407.

Стивестронг
Вт 13 декабря 2016 г. 12:01
глупый вопрос, но вы включили <SPI.час>?

Stmfunk
Вт 13 декабря 2016 г. 12:31
Кстати, я пытаюсь скомпилировать udpclient.INO из включенной библиотеки arduino_uip в папке STM32F4/Libraries.
(ничего не редактировал; кроме как включена сейчас SPI.H в заголовке.)

Несгорательно, когда я включаю SPI.H я получаю ту же ошибку, опубликованную выше.

Стивестронг
Вт 13 декабря 2016 г. 8:30 утра
А что, если вы удалите линию: extern SPIClass SPI;

Stmfunk
Вторник 13 декабря 2016 12:17
Когда я удаляю extern SPIClass SPI;

Стивестронг
Вторник 13 декабря 2016 г. 13:02
Вы используете SPI.начинать(...)?
Можете ли вы показать нам свой эскиз?

Stmfunk
Вторник 13 декабря 2016 г. 14:01
Как я упоминал ранее, набросок то, что я пытаюсь скомпилировать, не является пользовательским наброском. Это уже в последнем arduino_stm32 Repo:

/Arduino_stm32-master/stm32f4/библиотеки/arduino_uip/примеры/udpclient/udpclient.Ино

Я просто не могу понять, что это в репо, но он не компилизируется.

Я сделал свежий Arduino IDE 1.6.12 & Сэм 1.6.9 Установите без других библиотек. Просто arduino_stm32....

Стивестронг
Вторник 13 декабря 2016 г. 15:17
Насколько я вижу, @martinayotte посвятил себя LIB в репо, поэтому он должен быть в состоянии поддержать вас.
Помимо этого, было бы полезно активировать Verbose Output для составления, чтобы увидеть, влияют ли некоторые другие предупреждения/ошибки.
Поэтому, пожалуйста, опубликуйте здесь все предупреждения, если таковые имеются, во время компиляции.

Stmfunk
Вторник 13 декабря 2016 г. 15:41
Спасибо за ваше время & усилие Стив.
Пловесная выход такая же.

Я надеялся, что Мартин сможет привести меня к некоторым направлениям, но я думаю, он занят.

Martinayotte
Вторник 13 декабря 2016 г. 16:55
Да, к сожалению, я действительно занят в эти дни.

Короче говоря, я никогда не использовал примеры arduino_uip самостоятельно (возможно, их нужно изменить), я использовал свой собственный эскиз, который включает в себя SPI.h перед arduino_uip.час.

Для второй ошибки, «Ошибка: 'класс Hardwarespi' не имеет члена" SetbitOder "», кажется, что неправильный SPI включен, потому что он не должен быть Hardwarespi Class, в STM32F5/Libraries/SPI/SRC/SPI.H Метод SetBitOder () определяется там.
Может быть, причина в том, что вы явно включили Hardwarespi.H, но я думаю, что этот файл является Leaflab Legacy, так как класс SPI позаботится об использовании оборудования в любом случае, включив <Libmaple/Spi.час>

Stmfunk
Вт 13 декабря 2016 г., 22:18
Спасибо, Мартин, за то, что уделили время.

Для тестирования я заменил SPI.CPP & SPI.H содержание, которое имеет «setbitOder» с Hardwarespi.CPP & Hardwarespi.H Cotents.
Это так нет Дайте ошибки SPI, но много ошибок DMA преобразования. :(

Так как вы преодолели наследие Leaflab, чтобы предотвратить доступ к Hardwarespi?

Было бы здорово, если бы вы могли поделиться своим набросом для понимания того, как все работает.

Martinayotte
Ср 14 декабря 2016 г. 15:56
Почему вы заменили оригинальный SPI.CPP/SPI.час ?
Это те, которые уже позаботятся о разговоре с настоящим оборудованием.
(Hardwarespi.CPP/Hardwarespi.h остались из устаревшего кода и, вероятно, могут быть полностью удалены)

Stmfunk
Ср 14 декабря 2016 г., 16:04
Извините ошибку набора печати.

Я не заменил содержание оригинального SPI.CPP & SPI.час. Я заменил содержание Hardwarespi на оригинальные SPI. Просто для тестирования, чтобы увидеть, компилируется ли он, потому что, если он будет смотреть на Legacy Hardwarespi файлы во время компиляции, я подумал, что исходный контент SPI в Hardwarespi Content будет работать, и, возможно, каким -то образом может распознать сетебит -заказ и Extern Spi Class.
Как я уже сказал, заменив, он обходит ошибки класса Extern SPI и ошибки сетового заказа, но не может конвертировать в DMA.

Martinayotte
Ср 14 декабря 2016 г., 19:07
Я все еще запутался: зачем вам нужно заменить содержание Hardwarespi ?
Вам не нужны, просто включите SPI.H напрямую.
Для вещей DMA, если я помню, я просто прокомментировал.
Это просто потому, что F4 SPI является какой -то копией F1, и я не перенес его.
Может быть, вы можете сделать то же самое, так как arduino_uip не использует DMA в любом случае.

Stmfunk
Пн 19 декабря 2016 г., 11:06 вечера
Привет, Мартин, спасибо за советы.

Я прокомментировал вещи DMA.

Теперь он компилирует, но со следующими ошибками. (Кроме того, я еще не могу пинговать F4)
libraries\arduino_uip\utility\Enc28J60Network.cpp.o: In function `Enc28J60Network::readOp(unsigned char, unsigned char)': C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility/Enc28J60Network.cpp:476: warning: undefined reference to `SPI' libraries\arduino_uip\utility\Enc28J60Network.cpp.o: In function `Enc28J60Network::writeOp(unsigned char, unsigned char, unsigned char)': C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility/Enc28J60Network.cpp:485: warning: undefined reference to `SPI' libraries\arduino_uip\utility\Enc28J60Network.cpp.o: In function `Enc28J60Network::readBuffer(unsigned short, unsigned char*)': C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility/Enc28J60Network.cpp:497: warning: undefined reference to `SPI' libraries\arduino_uip\utility\Enc28J60Network.cpp.o: In function `Enc28J60Network::writeBuffer(unsigned short, unsigned char*)': C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility/Enc28J60Network.cpp:509: warning: undefined reference to `SPI' libraries\arduino_uip\utility\Enc28J60Network.cpp.o: In function `Enc28J60Network::readByte(unsigned short)': C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility/Enc28J60Network.cpp:383: warning: undefined reference to `SPI' libraries\arduino_uip\utility\Enc28J60Network.cpp.o:C:\Users\sly-VM\Documents\Arduino\hardware\Arduino_STM32-master\STM32F4\libraries\arduino_uip\utility/Enc28J60Network.cpp:392: warning: more undefined references to `SPI' follow

Martinayotte
Вт 20 декабря 2016 г., 17:59
Поскольку arduino_uip можно использовать с любым SPI, библиотека ссылается на порт как «Extern Spiclass Spi;» в arduino_uip/utility/enc28j60network.CPP.
Итак, вы должны создать его самостоятельно в своем основном наброске как «Spiclass spi (1);», где 1 - номер порта.

Радиотепика Bluepill