Проблемы с I2C на F407VGT6

STM32_Discoverer
Вт 12 февраля 2019 г. 11:44
Привет всем, у меня есть вопрос о автобусе I2C на доске F407VGT6 Blackboard.Я использую Arduino IDE 1.8.6, STM32Core от Steverstrong не может скомпилировать эскиз... #include HardWire HWire(1, I2C_FAST_MODE); // I2c1 void setup() { Serial.begin(115200); while(!Serial); delay(1000); HWire.begin(); Serial.println("\nI2C Scanner"); } uint32_t counter; void loop() { byte error, address; int nDevices; Serial.print(counter++); Serial.println(": Scanning..."); 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. HWire.beginTransmission(address); error = HWire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); nDevices++; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println("No I2C devices found"); else Serial.println("done"); delay(5000); // wait 5 seconds for next scan }

Стивестронг
Вт 12 февраля 2019 г. 12:17
Это похоже на неверный путь установки.
Обычно папка arduino_stm32 должна быть расположена под \ Documents \ arduino \ hardware.
Также см http: // wiki.STM32duino.com/index.PHP?title = установка.
Какую доску вы выбрали?
Метод загрузки?

Кроме того, пожалуйста, замените Hardwire на TwoWire.

STM32_Discoverer
Вт 12 февраля 2019 г. 12:59
Я попробовал STM32 Discovery F407 и Generic STM32F407V Series. Результат такой же

Стивестронг
Вт 12 февраля 2019 г. 13:20
Проверьте еще раз и исправьте путь установки.

STM32_Discoverer
Вт 12 февраля 2019 г. 13:47
Вы были правы, Стив, Arduino_stm32 Папка не была расположена в разделе \ Documents \ arduino \ ardware.Я исправил это.Но теперь при составлении эскиза дает In file included from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/usb.h:8:0, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/usb_serial.h:34, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/wirish.h:50, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\system/libmaple/Arduino.h:31, from sketch\i2c_scanner_hardwire.ino.cpp:1: C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/VCP/usb_conf.h:29:22: error: conflicting declaration 'typedef unsigned int uint32_t' typedef unsigned int uint32_t; ^ In file included from c:\users\user-2\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\lib\gcc\arm-none-eabi\4.8.3\include\stdint.h:9:0, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/wirish.h:38, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\system/libmaple/Arduino.h:31, from sketch\i2c_scanner_hardwire.ino.cpp:1: c:\users\user-2\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\arm-none-eabi\include\stdint.h:66:20: error: 'uint32_t' has a previous declaration as 'typedef __uint32_t uint32_t' typedef __uint32_t uint32_t ; ^ exit status 1

Стивестронг
Вт 12 февраля 2019 г. 14:48
Да, вы нажимаете очень нежную точку.
К сожалению, внутреннее определение компилятора (без знака) не соответствует определению ядра (Unsigned int) для uint32_t.

Альтернативные решения:
1. - Изменить/прокомментировать эту строку https: // github.com/stevstrong/arduino_s ... конфликт.H#L29
или
2. - Измените определение компилятора в C: \ users \ user-2 \ appdata \ local \ arduino15 \ packages \ arduino \ tools \ arm-none-eabi-gcc \ 4.8.3-2014q1 \ arm-none-eabi \ include \ stdint.h: 66 до беспингевого int

Я применил решение NR 2. на моем компьютере.

STM32_Discoverer
Ср. 13 февраля 2019 12:24
Привет, Стив, теперь есть еще одна проблема. Я переустановил Arduino IDE в версию 1.8.8, следовали всем шагам в соответствии с инструкциями по установке:
-Загрузите и установите версию 1.8.5 из Arduino IDE.
-Запустите IDE, а в меню «Инструменты» выберите менеджер плат и установите платы Arduino Sam (Cortex-M3) из списка доступных досок.
-Загрузите zip -файл, содержащий файлы STM32 .
-Unzip для создания папки Arduino_stm32.
- Скопируйте папку arduino_stm32 в мои документы/Arduino/Adware (Примечание: если аппаратная папка не существует, вам нужно будет ее создать).
-Перезагрузить Arduino IDE.
А теперь, когда вы выбираете какую -либо плату STM32, не компилируется даже пустой эскиз. Бросает ошибки. void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }

Стивестронг
Ср 13 февраля 2019 г., 12:30
Вы должны изменить линию в c:\users\user-2\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\arm-none-eabi\include\stdint.h:66

STM32_Discoverer
Ср. 13 февраля 2019 12:47
Да, я сделал, как ты написал.А теперь есть еще одна ошибка: In file included from c:\users\user-2\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\lib\gcc\arm-none-eabi\4.8.3\include\stdint.h:9:0, from c:\users\user-2\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\arm-none-eabi\include\inttypes.h:17, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/libmaple_types.h:36, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_OTG_Driver/inc/usb_regs.h:28, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_OTG_Driver/inc/usb_core.h:28, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_OTG_Driver/inc/usb_dcd.h:27, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_Device_Library/Core/inc/usbd_core.h:27, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h:29, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h:27, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\usbF4\usb.c:5: c:\users\user-2\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\arm-none-eabi\include\stdint.h:67:22: error: conflicting types for 'uint32_t' typedef unsigned int uint32_t; ^ In file included from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/VCP/usbd_conf.h:28:0, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_Device_Library/Core/inc/usbd_def.h:27, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h:28, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h:27, from C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\usbF4\usb.c:5: C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple/libmaple/usbF4/VCP/usb_conf.h:29:24: note: previous declaration of 'uint32_t' was here typedef unsigned long uint32_t; ^ exit status 1

STM32_Discoverer
Ср. 13 февраля 2019 г. 13:02
//typedef __uint16_t unsigned int ; typedef unsigned int uint32_t;

Стивестронг
Ср. 13 февраля 2019 г. 13:02
Кажется, вы скачали репо Роджера вместо моего.
В моем репо эта линия выглядит по -другому: https: // github.com/stevstrong/arduino_s ... конфликт.H#L29.

STM32_Discoverer
Ср. 13 февраля 2019 г. 13:39
Я проверил, ядро ​​твое

Стивестронг
Ср. 13 февраля 2019 г. 13:42
Почему тогда онлайн -версия не соответствует вашей локальной версии?

STM32_Discoverer
Ср. 13 февраля 2019 г. 14:15
Теперь еще раз собрал пустой набросок, Arduino IDE версия 1.8, arduino_stm32 Stevstrong Core, The Poard - STM32 Discovery F407. теперь дает здесь такую ​​ошибку C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:1: error: 'ETH_REF_CLK' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:14: error: 'ETH_MDIO' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:24: error: 'ETH_CRS_DV' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:36: error: 'ETH_TX_EN' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:47: error: 'ETH_TX_D0' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:58: error: 'ETH_TX_D1' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:69: error: 'ETH_MDC' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:78: error: 'ETH_RX_D0' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\ethernet.c:14:89: error: 'ETH_RX_D1' undeclared here (not in a function) ETH_REF_CLK, ETH_MDIO, ETH_CRS_DV, ETH_TX_EN, ETH_TX_D0, ETH_TX_D1, ETH_MDC, ETH_RX_D0, ETH_RX_D1 ^ exit status 1

Стивестронг
Ср. 13 февраля 2019 г. 18:28
Спасибо, что указали на эту проблему, я только что подтолкнул к этому исправление.
Пожалуйста, получите новую версию от GitHub.

Для ошибок вы также можете начать проблему на GitHub.

STM32_Discoverer
Чт 14 февраля 2019 г., 7:43 утра
Привет, Стив, я обновил твое ядро, и теперь, когда я скомпилировал пустой набросок, я снова получаю ошибки C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\rccF4.c: In function 'rcc_clk_init': C:\Users\user-2\Documents\Arduino\hardware\Arduino_STM32\STM32F4\cores\maple\libmaple\rccF4.c:463:6: error: #elif with no expression #elif ^ exit status 1

Стивестронг
Чт 14 февраля 2019 г. 8:22 утра
HM, странно, я не получаю эту ошибку, может быть, потому что я использую новейшую версию GCC.
Но я исправил это (все равно заменил #elif #else). Спасибо за отчет.

STM32_Discoverer
Чт 14 февраля 2019 г. 9:26 утра
Стив, я снова обновил ваше ядро, и когда я скомпилировал пустой набросок - все в порядке, но когда я скомпилировал набросок только с сериалом.Начните (115200);, я снова получаю ошибку void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: }

Стивестронг
Чт 14 февраля 2019 г. 9:37
Это потому, что вы выбрали доску F4 Discovery.
Хотя эта доска присутствует в репо, но на самом деле не тестируется, и я не уверен, имеет ли он прямой функцию серийного соединения USB или нет.

Основной целью моего F4 Repo являются общие платы F407 (черный и мини -вете) и Arch Max v1.1, чтобы я не мог гарантировать, что любая другая доска будет работать.
Также обратите внимание, что серийная функция USB может быть выбрана в меню Arduino IDE.

Для VGT6 я бы предложил либо клонировать мою репо и сделать новый вариант платы VGT6 на основе Vet6, либо отправить PR с недавно сгенерированным вариантом.

STM32_Discoverer
Чт 14 февраля 2019 г. 10:05 утра
Хорошо, но теперь я снова пытаюсь скомпилировать эскиз - i2c_scanner_hardwire, плата - Generic STM32F407V, и я снова получаю ошибку #include "Wire.h" TwoWire HWire(1, I2C_FAST_MODE); // I2c1 // optionally, it is possible to use the default declared Wire(1) instance with normal speed //#define HWire Wire void setup() { Serial.begin(115200); while(!Serial); delay(1000); HWire.begin(); Serial.println("\nI2C Scanner"); } uint32_t counter; void loop() { byte error, address; int nDevices; Serial.print(counter++); Serial.println(": Scanning..."); 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. HWire.beginTransmission(address); error = HWire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); nDevices++; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println("No I2C devices found"); else Serial.println("done"); delay(5000); // wait 5 seconds for next scan }

Стивестронг
Чт 14 февраля 2019 г. 10:57 утра
Кажется, я забыл обновить все файлы i2c в прошлый раз, когда я менял Hardwire на TwoWire.
Я исправил это, пожалуйста, проверьте это еще раз.

STM32_Discoverer
Чт 14 февраля 2019 г. 11:45
Да, Стив, наконец, теперь все в порядке, сборник эскизов был успешным!!! :) Если вы не возражаете, я буду продолжать обнаружить ошибки при составлении различных набросков досок F407

Стивестронг
Чт 14 февраля 2019 г. 11:48 утра
Нет проблем, я был бы рад, что кто -то еще проверил это.

Беннебой
Чт 14 февраля 2019 г. 13:43
STM Core имеет VGT6 в новом 1.5.0 Выпуск, вместе с USB CDC (Serial), I2C Works.

Mrburnette
Чт 14 февраля 2019 г. 16:33
[Беннебой - Чт 14 февраля 2019 г. 13:43] - STM Core имеет VGT6 в новом 1.5.0 Выпуск, вместе с USB CDC (Serial), I2C Works.
F4 Стива не уходит, и он указал, что фиксам ошибок будет управляться через GitHub после того, как этот форум отключится.

Я серьезный толкатель для пользователей, чтобы перейти к официальному ядру STM, но будут пользователи, которые останутся с F1 Roger и F4 на основе их потребностей. Роджер не указал мне, что он будет продолжать делать перерыв на F1 после 27 апреля.

ИМХО, когда Стив Ф4 поддержал будущее, гораздо важнее, поскольку он предлагает путь худой миграции от F1 на F4 ... Важно для конечных пользователей, раздвигающих границы F1 сегодня.


Луча

Стивестронг
Пт 15 февраля 2019 г. 8:29
Да, Рэй, я намерен поддерживать в будущем как мои репозиции на основе F1 и F4 Libmaple.

STM32F407VET6 имеет 1MB Flash !

Bluepill с STM32F4