[STM32Generic] F746 Discovery

Chismicro
Пн июня 05, 2017 5:35 утра
Поскольку Даниэль включил драйвер дисплея на доске, я сделал Некоторые примеры.

Простая демонстрация осциллографа имеет автоматический триггер, который дает быстро отзывчивый и стабильный график при выборке для E.глин. синусная волна.
Пример набора Мандельброта довольно хороший, и MCU быстро, единственным компромиссом является мерцающий дисплей при расчете набор Мандельброта.
Это связано с отсутствием двойной буферизации графики.

Chismicro
Чт, 08 июня 2017 12:38
Как я могу получить доступ к сенсорному контроллеру дисплея.
В листе данных говорится, что он подключен к I2C3

Я попытался посмотреть, отвечает ли I2C3 сканером I2C, но это не так:
#include TwoWire I2Cinterface(I2C3); #define SERIALINTERFACE Serial void enableDevices() { //on certain boards the I2C devices have to be enabled first // please put here your code to enable the devices // e.g. for the STM32F4 Discovery enabling the I2C codec is // pinMode(PD4,OUTPUT); // digitalWrite(PD4,HIGH); } void setup() { I2Cinterface.begin(); enableDevices(); SERIALINTERFACE.begin(115200); delay(5000); SERIALINTERFACE.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; SERIALINTERFACE.println("Scanning..."); delay(2000); nDevices = 0; for (address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. I2Cinterface.beginTransmission(address); I2Cinterface.write(0); error = I2Cinterface.endTransmission(); if (error == 0) { SERIALINTERFACE.print("I2C device found at address 0x"); if (address < 16) SERIALINTERFACE.print("0"); SERIALINTERFACE.print(address, HEX); SERIALINTERFACE.println(" !"); nDevices++; } else if (error == 4) { SERIALINTERFACE.print("no device found at address 0x"); if (address < 16) SERIALINTERFACE.print("0"); SERIALINTERFACE.println(address, HEX); } } if (nDevices == 0) { SERIALINTERFACE.println("No I2C devices found\n"); SERIALINTERFACE.println("Did you configure the chip select for your device?\n"); } else SERIALINTERFACE.println("done\n"); delay(5000); // wait 5 seconds for next scan }

Пито
Чт, 08 июня 2017 г., 16:22
Вы пробовали это?.. Wire.begin(); Wire.stm32SetInstance(I2C3); Wire.stm32SetSDA(Pxxx); Wire.stm32SetSCL(Pyyy); ..

Chismicro
Пт, 09 июня 2017 г., 4:08 утра
Спасибо за этот подсказка.
Я попробовал это: Wire.begin(); Wire.stm32SetInstance(I2C3); Wire.stm32SetSDA(PH8); Wire.stm32SetSCL(PH7);

Даниэфф
Пт, 09 июня 2017 г., 4:27
Вызовать проволоку.начинать(); После установки булавок не раньше.

РЕДАКТИРОВАТЬ: На самом деле конструктор также может принимать контакты, поэтому альтернативно измените вашу первую версию: TwoWire i2Cinterface (i2c3, ph8, ph7);

Chismicro
Пт, 09 июня 2017 г., 4:40 утра
Спасибо, Даниэль,

Я только что нашел это сам параллельно. Теперь сканер работает с:
Wire.stm32SetInstance(I2C3); Wire.stm32SetSDA(PH8); Wire.stm32SetSCL(PH7); Wire.begin();

Chismicro
Пт, 09 июня 2017 г. 8:08 утра
Здесь Вы можете найти пример прикосновения.

Мы должны обсудить, как справиться с обменом I2C3 между кодеком и сенсорным контроллером.

Даниэфф
Пт, 09 июня 2017 г. 8:32 утра
Прежде всего, эта библиотека не работает с сенсорным экраном? https: // github.com/adafruit/adafruit_ft6206_library Это для немного другой чип.

Chismicro
Пт, 09 июня 2017 г. 10:16 утра
Хм ... это другой чип.
Этим утром мне стоило несколько часов, чтобы узнать, как использовать эту другую библиотеку. Вопрос в том, необходимо ли использовать Adafruits lib?
Следующий вопрос: вы также нашли библиотеку для кодека? Ehernet также будет хорошим ....
На чем ты работаешь?

Даниэфф
Пт, 09 июня 2017 г., 15:30
Извините за ваше время, библиотека, кажется, работает #include "Wire.h" #include "Adafruit_FT6206.h" // library manager, search for FT6206 Adafruit_FT6206 touch = Adafruit_FT6206(); void setup() { Serial.begin(115200); Wire.stm32SetInstance(I2C3); Wire.stm32SetSDA(PH8); Wire.stm32SetSCL(PH7); touch.begin(); } void loop() { if (touch.touched()) { TS_Point p = touch.getPoint(); Serial.print(p.x); Serial.print(" "); Serial.println(p.y); } }

Chismicro
Пт, 09 июня 2017 г. 15:48
Интересный ... Ваш пример довольно ясен и короткий.
Всего за несколько минут до того, как я украсил и обновил пример прикосновения со старым драйвером.
У него есть одно преимущество: вам не нужно слишком устанавливать дополнительный драйвер Adafruit. Мне это как -то нравится, если он выбегает из коробки.

Во время моих попыток я обнаружил следующее: вы отображаете драйвер, не рисует Кликал и некоторые другие фигуры. Планируете ли вы его реализовать?
Другой вопрос: существуют ли некоторые широко используемые библиотеки, в которых есть сенсорные, ползунки и графики?
Есть ли несколько драйверов Sprite для игр?

И последний вопрос: мы единственные два человека на этом форуме, используя STM32F746 Discovery?

Chismicro
Пт, 09 июня 2017 г. 15:55
РЕДАКТИРОВАТЬ: Я пытаюсь сделать централизованный DMA и I2 с DMA Это одна из моих основных проблем: иметь I2S DMA. Мои звуковые примеры могут воспроизводить блокирующие звуки из буфера, потому что нет ни прерывания I2S, ни DMA.

Я обнаружил, что в HAL есть процедура обратного вызова, но я не смог его запустить (я попробовал это с Black STM32F407)
extern "C" void HAL_I2S_TxCpltCallback( I2S_HandleTypeDef * handle) { digitalWrite( LED_GREEN, !digitalRead(LED_GREEN) ); } .. HAL_NVIC_SetPriority( SPI3_IRQn, 0, 0 ); HAL_NVIC_EnableIRQ ( SPI3_IRQn ); ..

Даниэфф
Пт, 09 июня 2017 г. 18:32
Я добавил буферированные DMA в I2S, буфер по умолчанию 2K (можно изменить с помощью SetBuffer (uint16_t *buf, size))).

Я упростил пример синусороды, теперь он больше не нужен свой собственный буфер.

Изменил srite (образец) на int16_t вместо uint16_t, поэтому нулевая амплитуда равен 0 сейчас. (Образцы I2S в любом случае являются дополнением двух, что соответствует подписанным 16 -битным.)

Да, я думаю, только мы используем F746 Discovery. Могу поспорить, это 90% F103, 9% F407, 1% другие.

Chismicro
Сб 10 июня 2017 г., 4:43
Я добавил буферированные DMA в I2S, буфер по умолчанию 2K (можно изменить с помощью SetBuffer (uint16_t *buf, size))). Большое спасибо.
>И последний вопрос: мы единственные два человека на этом форуме, используя STM32F746 Discovery?
Да, я думаю, только мы используем F746 Discovery. Могу поспорить, это 90% F103, 9% F407, 1% другие.
Да, открытие STM32F746 довольно дорого по сравнению с другими решениями. Но очень удобно иметь все компоненты на борту.

Наверное, мы должны сделать несколько игр для этого. Это всегда интересно для многих людей.

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

Chismicro
Пн 12 июня 2017 г. 8:28 утра
Я сделал калькулятор карманного экрана.

Chismicro
Пн 12 июня 2017 г. 15:20
Привет, Даниэль,

У меня иногда странное поведение STM32F746 Discovery:
Иногда доска, кажется, не начинается. Даже при нажатии сброса дисплей остается белым.
У меня не было такого поведения с примером Мандельброта, но с обоими Примеры в моем хранилище здесь.
Я пошел к другу, у которого такая же доска, и у нас там было то же поведение.
Мы попытались снабжать доску USB-хаб, который имеет отдельный источник питания, чтобы исключить возможность того, что она поступает из слабых источников питания. Но такое же поведение там: иногда оно начинается, а иногда нет.
Можете ли вы подтвердить это на своем доске?

Пито
Пн 12 июня 2017 г. 15:34
@ChriSmicro: В вашей демонстрации Мандельброта у вас есть рутина цветного колеса для 256 уровней цвета макс.
Любая идея, как его улучшить на 1024, например,?

Chismicro
Пн 12 июня 2017 г. 15:44
Привет, пито,

Цветовое колесо от Adafruit.
Но вы можете попробовать только этот быстрый взлом здесь:
/* Adafruit NeoPixelColorWheel extented to range of 1024 RGB_Color=Wheel(colorNumber) converts a colorNumber on a color wheel from 0 to 1024 into a RGB color. https://color.adobe.com/de/create/color-wheel/?base=2&rule=Analogous */ uint16_t colorWheel( uint16_t WheelPos ) { uint32_t r,g,b; WheelPos = 1024 - WheelPos; if (WheelPos < 85*4) { r = 255 - WheelPos * 3 / 4; g = 0; b = WheelPos * 3 / 4; }else if (WheelPos < 170 * 4) { WheelPos -= 85 * 4; r = 0; g = WheelPos * 3 / 4; b = 255 - WheelPos * 3 / 4; }else { WheelPos -= 170 * 4; r = WheelPos * 3 / 4; g = 255 - WheelPos * 3 / 4; b = 0; } uint16_t LTDC_color=tft.color565(r,g,b); return LTDC_color; }

Пито
Пн 12 июня 2017 г. 15:48
Хорошо, спасибо, так что эти магические номера 85 и 170 постоянны для любого n?

Chismicro
Пн 12 июня 2017 г. 15:51
Да, я думаю, это всего лишь 255/3 * n, n = 1,2

ZMEMW16
Пн 12 июня 2017 г. 15:52
255/3 & 2*255/3 Разделите его на трети?
127 за б&W ? :)
SRP

Chismicro
Пн 12 июня 2017 г. 16:18
>255/3 & 2*255/3 Разделите его на трети?
Да, я так думаю.

>127 за б&W ? :)
А Цвет Цвета на радиусе. Нет черного и белого
(Если я правильно понимаю ваш вопрос ? )

Даниэфф
Пн 12 июня 2017 г. 16:29
Chismicro написал:Привет, Даниэль,

У меня иногда странное поведение STM32F746 Discovery:
Иногда доска, кажется, не начинается. Даже при нажатии сброса дисплей остается белым.
У меня не было такого поведения с примером Мандельброта, но с обоими Примеры в моем хранилище здесь.
Я пошел к другу, у которого такая же доска, и у нас там было то же поведение.
Мы попытались снабжать доску USB-хаб, который имеет отдельный источник питания, чтобы исключить возможность того, что она поступает из слабых источников питания. Но такое же поведение там: иногда оно начинается, а иногда нет.
Можете ли вы подтвердить это на своем доске?

Chismicro
Пн 12 июня 2017 г., 17:22
Я подтверждаю. Когда метод загрузки является массовым хранилищем, он не начинается после загрузки. (Если размер вспышки немного больше, как ваши программы) Спасибо за попытку. Изменение метода загрузки: Stlink работает. Если вы сможете подтвердить, я просто установлю по умолчанию для Stlink Это как -то сложно. Вчера я работал целый день без проблем.
Этим утром это не сработало с тем же программным обеспечением.
Теперь я не могу воспроизвести ошибку даже с отключением/подключением устройства, чтобы отключить/подключить устройство.
Я должен подождать, пока проблема снова не произойдет ...
Наверное, кто -нибудь из других пользователей (Pito? ) может подтвердить это также.

Chismicro
Вт 13 июня 2017 г. 5:12 утра
@Daniel

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

Chismicro
Вт 13 июня 2017 г., 19:55
Я ищу библиотеку для графического интерфейса.

В качестве первого теста Я адаптировал Уги. Но я думаю, что эта библиотека слишком сложна и очень старомодная.

Кто -нибудь знает лучшую библиотеку?

Chismicro
Вт 13 июня 2017 г., 21:02
Поскольку Даниэль включил SDFAT сейчас, и он работает с STM32F746 Discovery I Arsy добавил пример для TFT.

Странная вещь: если нет SD-карты, подключенной, SD.начинается (), кажется, вешает трубку.

Chismicro
Солнце 18 июня 2017 г. 22:02
Вкусный На STM32F747 Discovery есть :-)

Chismicro
Ср 21 июня 2017 г. 11:49
Потому что есть так много примеров с сенсорным дисплеем ILI9341, я сделал обертку для сенсорных функций.
С помощью этой обертки легко использовать емкостный сенсорный дисплей STM32F746 с примерами ILI.

Вот предварительный пример обертки.

Пожалуйста, дайте мне ответ, как мы можем/ должны интегрировать это в рамку.

Chismicro
Солнце 2 июля 2017 г. 9:44
Я только что обнаружил дешевый FM-Radio IC:

Изображение

ZMEMW16
Солнце 2 июля 2017 г. 13:17
Пожалуйста, определите дешево :)
Стивен

Chismicro
Солнце 2 июля 2017 г. 15:14
SI4703-RDS-FM-Radio-Tuner-Evaluation-Breakout-Board-For-arduino-avr-pic-arm-new Самый дешевый, который я нашел, был на eBay за 2,59 €

ZMEMW16
Солнце 2 июля 2017 г. 15:24
aliexpress £ 1.97 бесплатный P+P, заказ 2 принесен P+P. Так что это 2 заказа :-)

Стивен

Jopelabln
Ср. 12 июля 2017 г. 14:13
Я еще не преуспел с примером TFT-Voltmeter другого канала ADC, чем A0 (PA0) успешно для использования.
Для каналов канала A1 (PF10) до A5 (PF6) я получаю неверные аналоговые значения.
Пожалуйста, помогите мне, чтобы эти каналы работали должным образом.
Спасибо
F746-Disco

Chismicro
Ср. 12 июля 2017 г. 14:37
Привет, Джопелаблн,

Когда я сделал пример, я проверил только входной PA0, который является A0 и работает.
Теперь я только что проверил каналы, которые вы упомянули, и вы правы: они, кажется, не работают.
Но это основная проблема, и Даниэффер - его сопровождающий.
Иногда он читает этот пост и реагирует довольно скоро. Если нет, то это, наверное, лучшее, что вы напрямую ставите проблему в его репозитории GitHub.

Просто поместите здесь проблему:
https: // github.com/danieleff/stm32generic/проблемы

Ваше здоровье,
Chismicro

Даниэфф
Ср. 12 июля 2017 г. 15:04
[Jopelabln - Ср. 12 июля 2017 г. 14:13] - Я еще не преуспел с примером TFT-Voltmeter другого канала ADC, чем A0 (PA0) успешно для использования.
Для каналов канала A1 (PF10) до A5 (PF6) я получаю неверные аналоговые значения.
Пожалуйста, помогите мне, чтобы эти каналы работали должным образом.
Спасибо
F746-Disco
Это потому, что я думал, что ADC1 может охватывать все аналоговые каналы ввода, но PF10..PF6 на ADC3. Я проверю на выходных.

Jopelabln
Ср. 12 июля 2017 г., 19:50
Спасибо за вопрос о проблеме и быстром ответе

Chismicro
Чт 13 июля 2017 г. 8:20 утра
Кстати: я думаю, что для таких досок, как STM32F746 Discovery с Arduino, совместимым с разъемом, определения Arduino должны быть добавлены как:

#define A0 PA0
#define A1 PF10
...

Chismicro
Сб 22 июля 2017 г., 6:15 утра
Я сделал новый Игра жизни.

Я думаю, что F7 довольно быстрый расчет всех ячеек на экране
Я мог наблюдать за развивающимися клетками часами : D

Самоудло
Пн 24 июля 2017 г. 2:41
Привет всем! Привет из Канады! Пожалуйста, простите меня, если это неправильное место, чтобы опубликовать этот вопрос, так как я новичок на форумах здесь.

USART6 - я не могу на всю жизнь найти, как инициализировать порт.

Я знаю, что это будет "usart6.начинать (115200); "Но это не займет.

Что мне не хватает?

заранее спасибо.

Даниэфф
Мон 24 июля 2017 г., 4:28
void setup() { SerialUART6.begin(115200); } void loop() { SerialUART6.println(millis()); delay(1000); }

Самоудло
Пн 24 июля 2017 г. 11:10
Спасибо, Даниэффеф, за ответ.

Я попробовал ваше предложение, и это принесло мне:
"Статус выхода 1
«Serialuart6» не был объявлен в этом сфере "

Тем не менее, после обновления моего файла STM32GENEREN до последних вариантов, эскиз компилируется без проблем.

РЕДАКТИРОВАТЬ - Эскиз компилируется и загружает, но последовательный TX не имеет никаких логических данных. Все, что я понюхал серийный вывод с возвращенной таломой. Я продолжу играть с этим.

Спасибо, что подняли меня на ноги с этим!

ZMEMW16
Вт 25 июля 2017 г. 13:00
Попробуйте изменить скорость серийного монитора бода :!:
Нажмите кнопку вниз в правой нижней части

Лучше - Найдите процедуру настройки/функцию в вашем эскизе, в нем вы должны увидеть линию с ".начать (9600) »в нем
Это может быть 19200, 38400, 57600, 115200

Самоудло
Вт 25 июля 2017 г. 14:54
Привет, Zmemw,

Скорость бодства была первым, что я проверил. Все установлено на 115200.

Я использовал arduino uno изначально в качестве серийного приемника, но не повезло там.
Я также использовал базовую FTDI как с серийным монитором Arduino, так и с замазкой.

Это должно быть то, что я делаю не так, не могу представить, что это доска или репозиторий.
У меня есть исследователь XBEE, который хорошо работает как серийный монитор. Teraterm может быть еще одной альтернативой.

С нетерпением жду возможности вернуться домой в Тинкер с ним немного больше.

Самоудло
Ср. 26 июля 2017 г. 14:07
Понятно!

Так что, сериал.начало (115200); И "Serialuart6.начинать (115200); "вызывал проблемы. Как только я прокомментировал сериал.Begin Line, UART6 работал отлично.

Тем не менее, я с радостью счастлив!

Спасибо всем за помощь! : D

Chismicro
Ср. 09 августа 2017 г. 9:04
Наконец, кажется, что теперь есть «Ethernet», как -то реализовано:
https: // github.com/danieleff/stm32gener ... G/Ethernet
Но, к сожалению, это не работает по двум причинам:

1. Окончание примера файла *.txt insteat *.INO, который предотвращает загружать пример Arduino IDE
2. Драйвер не найден, когда пример называется правильно.

Даниэфф
Ср. 09 августа 2017 13:30
Он использует водителей Официальных водителей, о которых Фредерик говорил здесь: ViewTopic.PHP?F = 51&t = 2220&начало = 10#p31084

Они все еще находятся по запросу. В верхней части примера файла есть комментарии о том, как установить. Они находятся в другом филиале Repo +, поэтому вы не можете просто загрузить его из GitHub как Zip.

fpistm
Ср. 09 августа 2017 г. 14:44
В настоящее время я испытываю тестирование перед слиянием PR.

Chismicro
Ср. 09 августа 2017 г. 14:50
Привет, Даниэль,
Я видел, как ты положил много водителей в репо. По моему мнению, это хорошая идея, чтобы получить полную рабочую среду, даже немного громоздко поддерживать библиотеки. Насколько я знаю, Роджер тоже делает это в своем репо.
Время от времени я смотрю на то, что вы сделали, вытащите это и пробую. На этот раз я понял, что пример Ethernet не работает, и мой старый пример для SD-карты также не работает. Вероятно, для этого случая было бы лучше всего иметь филиал разработки, где проживают эти предварительные версии.
Какие у вас планы на Ethernet? Будет ли водитель включен?
Ваше здоровье,
Крис

Chismicro
Ср 09 августа 2017 14:51
В настоящее время я испытываю тестирование перед слиянием PR. Означает ли это, что общий репо и STM-Repo объединяется в одну репо?

fpistm
Чт 10 августа 2017 г., 6:43
Нет, только означает, что библиотеки могут быть обычным явлением.

Chismicro
Пт 11 августа 2017 г. 10:25
[Даниэфф - Ср. 09 августа 2017 13:30] - Он использует водителей Официальных водителей, о которых Фредерик говорил здесь: ViewTopic.PHP?F = 51&t = 2220&начало = 10#p31084

Они все еще находятся по запросу. В верхней части примера файла есть комментарии о том, как установить. Они находятся в другом филиале Repo +, поэтому вы не можете просто загрузить его из GitHub как Zip.
Я установил все LIBS, но некоторые пути, кажется, отсутствуют: В файле, включенном из C: \ Tools \ arduino \ arduino1_8 \ arphieware \ stm32generic \ stm32 \ Libraries \ STM32Thernet \ src/ethernetClient.H: 7: 0,

от c: \ tools \ arduino \ arduino1_8 \ arphieware \ stm32generic \ stm32 \ libraries \ stm32ethernet \ src/stm32ethernet.H: 6,

от c: \ tools \ arduino \ arduino1_8 \ harpware \ stm32generic \ stm32 \ libraries \ boardexamples \ Примеры \ Discovery746ng \ Ethernet \ Ethernet.Ино: 20:

C: \ Tools \ arduino \ arduino1_8 \ arpware \ stm32generic \ stm32 \ libraries \ stm32ethernet \ src/utility/stm32_eth.h: 47: 26: фатальная ошибка: lwip/ip_addr.H: нет такого файла или каталога

#include "lwip/ip_addr.час"

fpistm
Пт 11 августа 2017 г. 12:08
Это автономные библиотеки для Arduino.
Установить их в libraries

Chismicro
Пт 11 августа 2017 г. 15:13
Спасибо за ответ. Но, кажется, нет никаких изменений: В файле, включенном из C: \ Tools \ arduino \ arduino1_8 \ Libraries \ STM32ETHERNET \ SRC/EthernetClient.H: 7: 0,

от c: \ tools \ arduino \ arduino1_8 \ библиотеки \ stm32thernet \ src/stm32ethernet.H: 6,

от c: \ tools \ arduino \ arduino1_8 \ harpware \ stm32generic \ stm32 \ libraries \ boardexamples \ Примеры \ Discovery746ng \ Ethernet \ Ethernet.Ино: 20:

C: \ tools \ arduino \ arduino1_8 \ библиотеки \ stm32ethernet \ src/utility/stm32_eth.h: 47: 26: фатальная ошибка: lwip/ip_addr.H: нет такого файла или каталога

#include "lwip/ip_addr.час"
Недостающий файл находится в

C: \ tools \ arduino \ arduino1_8 \ библиотеки \ lwip \ src \ lwip

Даниэфф
Пт 11 августа 2017 г. 16:39
Ах, положить `#include" lwip.H "` в .Ино. Подтолкнул для этого коммит.
Я использую Eclipse с Slaeber и всегда выбираю библиотеки, не понял, что Arduino IDE не будет включать его автоматически.

Что касается того, как держать водителей в ядре: Фредерик, вы думали о том, чтобы поместить его в пакет менеджера совета директоров? При создании файла ZIP включите дополнительные библиотеки STM32. Это то, что делает Teensy. Ядро - одно репо, и все библиотеки - их собственные репозитории. И когда вы его установите, все упаковано в один.

fpistm
Пт 11 августа 2017 г., 19:55
Я никогда не думаю об этом, но это можно обсудить. Я проверю, что делает Teensy.

Chismicro
Солнце 13 августа 2017 г., 6:16
Теперь это компиляция.
Я пытался прочитать "www.STM32duino.компонент"Количество линии пользователей. Он работает, когда я использую только серийный порт.
Когда я включаю TFT-Display, он не работает. Так что, кажется, существует конфликт между Ethernet и TFT.
Что это может быть? Это память? Это время?
// Example for the onboard ethernet connector // // Install https://github.com/stm32duino/LwIP // and https://github.com/stm32duino/STM32Ethernet // // If they are empty, install the work in progress versions using git: // cd // git clone https://github.com/fprwi6labs/LwIP.git // cd LwIP // git checkout LwIP_src // // cd .. // git clone https://github.com/fprwi6labs/STM32Ethernet.git // cd STM32Ethernet // git checkout add_src // // // For more examples, check the STM32Ethernet examples folder #include #include #include "LTDC_F746_Discovery.h" LTDC_F746_Discovery tft; EthernetClient client; // random MAC address byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; void setup() { // The buffer is memory mapped // You can directly draw on the display by writing to the buffer uint16_t *buffer = (uint16_t *)malloc(LTDC_F746_ROKOTECH.width * LTDC_F746_ROKOTECH.height); tft.begin((uint16_t *)buffer); tft.fillScreen(LTDC_BLACK); tft.setCursor(0, 0); tft.setTextColor(LTDC_GREEN); tft.setTextSize(3); tft.println("STM32F746 Discovery"); tft.setTextColor(LTDC_YELLOW); tft.setTextSize(2); Serial.begin(115200); Serial.println("Connecting to Ethernet"); delay(1000); if (!Ethernet.begin(mac)) { Serial.println("ERROR: Could not connect to ethernet!"); while (1); } Serial.println("Connecting to www.stm32duino.com"); //if (!client.connect("example.com", 80)) { if (!client.connect("www.stm32duino.com", 80)) { Serial.println("ERROR: Could not connect to www.stm32duino.com!"); while (1); } Serial.println("Connected, sending request"); client.println("GET / HTTP/1.1"); client.println("Host: www.stm32duino.com"); client.println("User-Agent: Mozilla//5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko//20100101 Firefox//54.0"); client.println("Accept: text//html,application//xhtml+xml,application//xml;q=0.9,*//*;q=0.8"); client.println("Accept-Language: en-US,en;q=0.5"); //client.println("Accept-Encoding: gzip, deflate"); client.println("Cookie: phpbb3_4im1j_u=1; phpbb3_4im1j_k=; "); client.println("DNT: 1"); client.println("Connection: keep-alive"); client.println("Upgrade-Insecure-Requests: 1"); client.println(); client.flush(); Serial.println("Request sent, printing response"); } String str; boolean flag = false; void loop() { if (client.available()) { char c = client.read(); if (c != '>')str += c; else { if (str.indexOf("users online") > 0) { flag=true; Serial.print("====> "); Serial.println(str); tft.println(str); } str = ""; } } if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); while (1); } }

fpistm
Солнце 13 августа 2017 г., 17:42
Я не знаю/проверяю, как Даниэль интегрировал, но это может быть подсказкой:

https: // github.com/stm32duino/stm32ethe ... 2EEC7D8R21
Степень LWIP требуется для обработки таймера и данных.
Эта холостовая задача называется внутри основной петли в фоновом режиме функцией
stm32_eth_scheduler (). Будьте осторожны, чтобы не блокировать систему внутри функции
Loop (), где LWIP никогда не может быть обновлен. Call EthernetUdp :: parsepacket () или
EthernetClient :: Доступно () выполняет обновление стека LWIP.
Звоните в основной цикл:
https: // github.com/stm32duino/arduino_c ... FC7DDA4R49

РЕДАКТИРОВАТЬ: кажется, не вызовет STM32_ETH_SCHEDULER, так что, вероятно, это основная причина.

Даниэфф
Вторник 15 августа 2017 г. 6:09
[fpistm - Солнце 13 августа 2017 г., 17:42] - Я не знаю/проверяю, как Даниэль интегрировал, но это может быть подсказкой:

https: // github.com/stm32duino/stm32ethe ... 2EEC7D8R21
Степень LWIP требуется для обработки таймера и данных.
Эта холостовая задача называется внутри основной петли в фоновом режиме функцией
stm32_eth_scheduler (). Будьте осторожны, чтобы не блокировать систему внутри функции
Loop (), где LWIP никогда не может быть обновлен. Call EthernetUdp :: parsepacket () или
EthernetClient :: Доступно () выполняет обновление стека LWIP.
Звоните в основной цикл:
https: // github.com/stm32duino/arduino_c ... FC7DDA4R49

РЕДАКТИРОВАТЬ: кажется, не вызовет STM32_ETH_SCHEDULER, так что, вероятно, это основная причина.
if (client.available()) {

Даниэфф
Вторник 15 августа 2017 г., 17:38
Я только что понял, что буфер TFT Malloc должен быть * 2, потому что 1 пиксель - 2 байта.

Но код на самом деле иногда работает (печатает пользователей в Интернете для отображения), иногда не удается клиента.соединять("www.STM32duino.компонент", 80)

Chismicro
Чт 17 августа 2017 г., 4:59 утра
Я только что понял, что буфер TFT Malloc должен быть * 2, потому что 1 пиксель - 2 байта. Спасибо. Я исправил все TFT-examples.
Но код на самом деле иногда работает (печатает пользователей в Интернете для отображения), иногда не удается клиента.соединять("www.STM32duino.компонент", 80) Я не уверен, является ли это вопросом, как быстро реагирует STM32Duino-Website. Надеемся, что сервер Роджера не получит атаку DDS от некоторых открытий STM32F746 : шок:

fpistm
Чт 17 августа 2017 г., 6:58
К вашему сведению: Ethernet Libs был выпущен и должен быть доступен в ближайшее время благодаря менеджеру библиотеки

Chismicro
Чт 17 августа 2017 г. 8:13
Вот новая версия пользователей Poling The STM32Duino.

Назовем это «Ethernet» тестом: // Example for the onboard ethernet connector // // Install https://github.com/stm32duino/LwIP // and https://github.com/stm32duino/STM32Ethernet // // If they are empty, install the work in progress versions using git: // cd // git clone https://github.com/fprwi6labs/LwIP.git // cd LwIP // git checkout LwIP_src // // cd .. // git clone https://github.com/fprwi6labs/STM32Ethernet.git // cd STM32Ethernet // git checkout add_src // // // For more examples, check the STM32Ethernet examples folder #include #include #include "LTDC_F746_Discovery.h" LTDC_F746_Discovery tft; EthernetClient client; // random MAC address byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; void requestSTM32duino() { Serial.println("Connected, sending request"); client.println("GET / HTTP/1.1"); client.println("Host: www.stm32duino.com"); client.println("User-Agent: Mozilla//5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko//20100101 Firefox//54.0"); client.println("Accept: text//html,application//xhtml+xml,application//xml;q=0.9,*//*;q=0.8"); client.println("Accept-Language: en-US,en;q=0.5"); //client.println("Accept-Encoding: gzip, deflate"); client.println("Cookie: phpbb3_4im1j_u=1; phpbb3_4im1j_k=; "); client.println("DNT: 1"); client.println("Connection: keep-alive"); client.println("Upgrade-Insecure-Requests: 1"); client.println(); client.flush(); Serial.println("Request sent, waiting for response"); } uint32_t startTime; void setup() { // The buffer is memory mapped // You can directly draw on the display by writing to the buffer uint16_t *buffer = (uint16_t *)malloc(2*LTDC_F746_ROKOTECH.width * LTDC_F746_ROKOTECH.height); tft.begin((uint16_t *)buffer); tft.fillScreen(LTDC_BLACK); tft.setCursor(0, 0); tft.setTextColor(LTDC_GREEN); tft.setTextSize(3); tft.println("STM32F746 Discovery"); tft.setTextColor(LTDC_YELLOW); tft.setTextSize(2); Serial.begin(115200); Serial.println("Connecting to Ethernet"); tft.println("Connecting to Ethernet"); delay(1000); if (!Ethernet.begin(mac)) { Serial.println("ERROR: Could not connect to ethernet!"); tft.println("ERROR: Could not connect to ethernet!"); tft.println("program stopped, press reset to restart"); while (1); } Serial.println("Connecting to www.stm32duino.com"); tft.println("Connecting to www.stm32duino.com"); if (!client.connect("www.stm32duino.com", 80)) { Serial.println("ERROR: Could not connect to www.stm32duino.com!"); tft.println("ERROR: Could not connect to www.stm32duino.com!"); tft.println("program stopped, press reset to restart"); while (1); } requestSTM32duino(); startTime=millis(); } // Freestack is found here // https://github.com/greiman/SdFat-beta/blob/master/SdFat/src/FreeStack.h#L45 // from William Greiman #if defined(__arm__) extern "C" char* sbrk(int incr); static int FreeStack() { char top = 't'; return &top - reinterpret_cast(sbrk(0)); } #endif String str; int FailedCounter=0; void loop() { if (client.available()) { FailedCounter=0; char c = client.read(); if (c != '>')str += c; else { if (str.indexOf("users online") > 0) { Serial.print("====> "); Serial.println(str); tft.println(""); tft.println(str); } str = ""; } //if(str.length()>10000) str=""; }else { tft.print("."); if(tft.getCursorY()>260) { tft.fillScreen(LTDC_BLACK); // cls tft.setCursor(0,0); } delay(1000); FailedCounter++; if ( FailedCounter > 30 ) { requestSTM32duino(); // send new request on timeout FailedCounter=0; } } if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); tft.println("disconnecting."); client.stop(); while (1); } if(millis()-startTime>10000) { //tft.println("alive"); tft.print("stack: ");tft.println(FreeStack()); startTime=millis(); } }

Chismicro
Чт 17 августа 2017 г. 9:59 утра
Здесь Я адаптировал NTP-Time-Client.
Теперь вы можете увидеть время UTC-Internet на TFT.

Chismicro
Пт 18 августа 2017 г. 14:03
Здесь я сделал передачу через Ethernt для Картинки от UDP.

Я надеялся достичь чего-то близкого к «видео скорости», но я понял, что Arduino-UDP поддерживает только длину пакетов до 24 байтов. Это приводит к более похожей на скорость, как в эпоху телетипа.

Я положил картинку в ветку Ethernet:
http: // www.STM32duino.com/viewtopic.PHP ... 447#P33151

Даниэфф
Пт 18 августа 2017 г. 16:47
У меня проблемы с загрузкой больших файлов. Через несколько КБ он просто останавливается.
Я могу исправить, отключив кучу во внешней оперативной памяти (комментируя `setheap` в варианте.CPP)
Так что я думаю, что есть какая -то проблема (но дисплей использует его, внутренняя оперативная память недостаточно).
Настройка внешней ОЗУ находится в STM32 \ System \ STM32F7 \ HAL_SRC \ SYSTEM_STM32F7XX.c, но это в основном копия STM32Cube_fw_f7_v1.7.0 \ Projects \ STM32746G-Discovery \ Примеры \ fmc \ fmc_sdram \ src \ system_stm32f7xx.c, так что я не уверен.

Chismicro
Пт 18 августа 2017 г., 17:40
У меня проблемы с загрузкой больших файлов. Через несколько КБ он просто останавливается. Загрузка с Ethernet?

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

ZMEMW16
Пт 18 августа 2017 г. 8:10 вечера
65 507 байт
Размер поля устанавливает теоретический предел 65 535 байтов (8 байтовского заголовка + 65 527 байтов данных) для DATAGRAM UDP. Однако фактический предел длины данных, который навязывается базовым протоколом IPv4, составляет 65 507 байт (65 535 - 8 байт заголовок UDP - 20 байтов) заголовок IP).
SRP

Chismicro
Пт 18 августа 2017 г., 21:03
Я думаю, что переменная в нормальном arduino ethernetudp установлена ​​на

#define udp_tx_packet_max_size 24

и на arduino uno со своим 2K-рам это, вероятно, больше не может быть.

от
https: // github.com/arduino-libraries/et ... Ernetudp.час
В строке 42:

Chismicro
Ср 30 августа 2017 г. 8:09
Я только что обнаружил, что в репо -репо eepromememurulation есть пример эпремовации:
Это не компиляция.

Tftlcdcyg
Сб 02 сентября 2017 г. 15:00
Офтопический

Крис ваш ядро ​​работает нормально с STM32F429ZI-Disco и библиотеками: SDFAT, AT24CXX, SPI, WIRE и нашей библиотекой GD23STM32 для TFT, таких как FT80X и FT81X, на основе Gameduino 2 Library 2.

Ваше последнее обновление для библиотеки SPI работает отлично!

MCU: STM32F429ZI-Disco
Периферийные устройства: FT813 5 "Riverdi, Breakout-20 (Riverdi), SD Reader (с Sandisk Extreme 32 ГБ), DS3231
Метод загрузки: ST-Link V2 (из платы)

Изображение

Спасибо за ваши усилия и энтузиазм

ПД: Извините за шок! :ржу не могу: Мне пришлось вырезать ILI9341 только для того, чтобы выпустить несколько милиамперов для TFT (на SPI1) и SD Reader (на SPI3)

Следите за обновлениями!
============================================================================= ======
Team Ft81x (@TFTLCDCYG, @lightcalamar и @rndmnkiii)
============================================================================= ======

Lightcalamar
Сб 02 сентября 2017 г. 11:11
Быть таким другом Tftlcdcyg быть для мусорных экранов ili9341 это не осознают и не получают своего времени и жизни ...

Что делать, если они живут только для дерьма экранов ILI9341. Они живут за них, они не знают, что тратят время.
Не зная, чего мы достигли, и мы собираемся каждый день, чтобы больше. . .

Бесконечно спасибо за то, что увидели этот мусор экрана, чтобы отказаться, большое спасибо, мой друг!

Уже есть место :ржу не могу:

Chismicro
Сб 02 сентября 2017 г. 11:26
Крис ваш ядро ​​работает нормально с STM32F429ZI-Disco и библиотеками Большое спасибо : D
Но я точно не знаю, что показывает ваш экран.
Все кредиты, связанные с ядром, перейдите к Даниэффефу Потому что он является основным разработчиком ядра.
Я сделал только несколько примеров в репо, чтобы упростить жизнь людей, что делает лишь очень незначительную часть по сравнению с работой Даниэля.

Наверное, вы хотели бы, чтобы ваша работа была связана с STM32F429ZI-Disco здесь Потому что это поток для платы F7.

Tftlcdcyg
Чт 14 сентября 2017 г. 6:35 утра
ОК, Крис.

У меня есть вопрос о MCU F746.

Я пытаюсь проверить простой набросок мигания, но я получаю эту ошибку
arm-none-eabi-g++: error: unrecognized argument in option '-mcpu=cortex-m7' arm-none-eabi-g++: note: valid arguments to '-mcpu=' are: arm1020e arm1020t arm1022e arm1026ej-s arm10e arm10tdmi arm1136j-s arm1136jf-s arm1156t2-s arm1156t2f-s arm1176jz-s arm1176jzf-s arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm70 arm700 arm700i arm710 arm7100 arm710c arm710t arm720 arm720t arm740t arm7500 arm7500fe arm7d arm7di arm7dm arm7dmi arm7m arm7tdmi arm7tdmi-s arm8 arm810 arm9 arm920 arm920t arm922t arm926ej-s arm940t arm946e-s arm966e-s arm968e-s arm9e arm9tdmi cortex-a15 cortex-a5 cortex-a7 cortex-a8 cortex-a9 cortex-m0 cortex-m0plus cortex-m1 cortex-m3 cortex-m4 cortex-r4 cortex-r4f cortex-r5 cortex-r7 ep9312 fa526 fa606te fa626 fa626te fa726te fmp626 generic-armv7-a iwmmxt iwmmxt2 marvell-pj4 mpcore mpcorenovfp native strongarm strongarm110 strongarm1100 strongarm1110 xscale exit status 1 Error compilando para la tarjeta Discovery F746NG.

Даниэфф
Чт 14 сентября 2017 г., 7:22 утра
1. Загрузите новейший встроенный gnu Arm chedchain Toolchain https: // Разработчик.рука.com/с открытым исходным кодом/g ... /Загрузки
2. Изменить компилятор.Путь в платформе.TXT, чтобы указать на то, что вы скачали. https: // github.com/danieleff/stm32gener ... rm.TXT#L21

Ykciv
Чт 19 апреля 2018 г., 6:03
Привет.

Я новичок в STM32. При составлении базовой программы Blink я получаю приведенную ниже ошибку.

"Exec:"/armware/stm32generic/stm32/gccarm-none-ebi-g ++ ": файл не существует
Компиляция ошибок для обнаружения платы F746NG."

Может ли кто -нибудь помочь мне исправить эту ошибку.

Спасибо.

Rogerclark
Чт 19 апреля 2018 г., 9:04
Вы видели пост незадолго до вашего..

Ykciv
Чт 19 апреля 2018 г., 11:37
да. Я видел пост Дэниела и Криса, чтобы установить платы STM32. Я загрузил обновленную цепочку инструментов компилятора ARM в соответствии с инструкциями и отредактировал компилятор.Путь в платформе.TXT, как показано ниже

"Компилятор.PATH = аппаратное/инструмент/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/"

И у меня есть цепочка инструментов GCC в этом месте "C: \ users \ sla \ documents \ arduino \ ardware \ tools".

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

Примечание:
Основная программа мигания работает нормально с проблемой STM32F407 BT, обращенной к компиляции для STM32F7.

fpistm
Чт 19 апреля 2018 г., 12:00
Вы должны установить полный путь: compiler.path=C:\Users\sla\Documents\Arduino\hardware/tool/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/

Ykciv
Чт 19 апреля 2018 г. 12:28
После отредактирования такого пути «Компилятор.path = c: \ users \ sla \ documents \ arduino \ harpware/tool/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/"

Теперь показывает следующую ошибку

"Exec:" C: \\ users \\ sla \\ appdata \\ local \\ arduino15 \\ Packages \\ arduino \\ Tools \\ arm-none-eabi-gcc \\ 4.8.3-2014Q1Hardware/Tools/GCC-ARM-None-EABI-7-2017-Q4-MAJOR-WIN32/BIN/ARM-None-EABI-G ++ ": Файл не существует
Компиляция ошибок для обнаружения платы F746NG."

fpistm
Чт 19 апреля 2018 г. 13:00
Серьезно?
И что вы думаете о своей проблеме?

Кажется, это incatenate 2 Path:
C: \\ users \\ sla \\ appdata \\ local \\ arduino15 \\ Пакеты \\ arduino \\ Инструменты \\ arm-none-eabi-gcc \\ 4.8.3-2014Q1Аппаратное/инструменты/GCC-ARM-None-EAB-7-2017-Q4-MAJOR-WIN32/BIN/ARM-None-Eabi-G++
Так что я не знаю, как вам удается обновить файл, но я думаю, что вы могли бы попытаться понять, что вы сделали, прежде чем запрашивать поддержку.
Это хороший файл, используемый ядром, который я использовал.
Может, мне нужно использовать тот же сепаратор каталога? \\ или / ?
Почему он объединяет 2 пути?
....

Ykciv
Чт 19 апреля 2018 г., 13:13
Я думаю «C: \\ Пользователи \\ Sla \\ Appdata \\ local \\ arduino15 \\ Пакеты \\ arduino \\ Tools \\ arm-none-eabi-gcc \\ 4.8.3-2014Q1 "-это компилятор ARM Decl Arm GCC, который является старым.

Мне нужно удалить его?

fpistm
Чт 19 апреля 2018 г. 14:07
Нет, просто укажите на правый.
Не могли бы вы дать нам свою платформу.текст.

Ykciv
Чт 19 апреля 2018 г. 14:36
[fpistm - Чт 19 апреля 2018 г. 13:00] - Это хороший файл, используемый ядром, который я использовал.
Может, мне нужно использовать тот же сепаратор каталога? \\ или / ?
Спасибо за помощь. Ошибка, которую я совершил, заключалась в том, чтобы сохранить цепочку инструментов Arm в формате Exe. Но на самом деле необходимо запустить файл EXE, и «мы должны указывать на эту папку после того, как мы извлеките файлы» из EXE.

Это просто предложение: я не видел ничего подобного в липком файле установки. Если вы обновите этот момент и как редактировать файл платформы с помощью примера, то он будет очень полезен для начинающих, таких как я. Таким образом, мы можем избежать этих проблем в будущем.

Спасибо.

fpistm
Чт 19 апреля 2018 г. 15:43
[Ykciv - Чт 19 апреля 2018 г., 14:36] - Это просто предложение: я не видел ничего подобного в липком файле установки. Если вы обновите этот момент и как редактировать файл платформы с помощью примера, то он будет очень полезен для начинающих, таких как я. Таким образом, мы можем избежать этих проблем в будущем.

Спасибо.
Добро пожаловать.
Фактически, я поддерживаю официальное ядро ​​STM, которое предоставляет все пакеты, необходимые для версии правой руки для поддержки Cortex M7 (в настоящее время V6 Update Q2)
https: // github.com/stm32duino
https: // github.com/stm32duino/wiki/wiki/
Итак, такая проблема не произошла с этим ядром.

Похоже, вы использовали ядро ​​STM322, Даниэль объясняет, как справиться с этим для F7: Дополнительные инструкции для плат F7:

Загрузите новейший встроенный gnu Arm chedchain Toolchain
Изменить компилятор.Путь в платформе.TXT, чтобы указать на то, что вы скачали.
Не стесняйтесь представлять PR на свой GitHub, чтобы расширить его комментарий.

Ykciv
Вторник 8 мая 2018 12:01
Есть ли обновленная библиотека для STM32F7 eeprom?? Потому что нет поддержки STM32F7 в текущей библиотеке EEPROM.

ошибка micros ()??