Bienvenido a los foros de FT81x Manía. Te invitamos a regístrate totalmente gratis. Disfruta de tu experiencia con un grandes amigos y Staff.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Thread Contributor: TFTLCDCygCorrecciones para hacer funcionar el MCU F429ZI en el coreGeneric@danieleff

#1
0
Al seleccionar la placa Discovery F429ZI y tratar de compilar algun ejemplo de la librería GD23STM32, saltan estos errores:

?mage

Error en el core genérico de danieleff

El core genérico de danieleff que estamos usando para manejar las MCU de STM32 en el ide de arduino, es una excelente base de aprendizaje para entender cómo funcionan estas placas, que a pesar de la complejidad que tienen, es posible rastrear determinados errores, resultando una labor bastante educativa.

El GPIO definido para cada placa está repartido en varios archivos y los ajustes fallidos pueden convertirse en un mar de errores al compilar.

El primer error está relacionado a la frecuencia del MCU. Dado que es un trabajo en proceso, algunos elementos del core no han sido establecidos correctamente y alguno que otro comentario se queda en el camino.

Para corregir este error hay que ir a la siguiente ruta:


C:\arduino-1.8.3\hardware\STM32GENERIC_danielefF\STM32

Abrimos el archivo boards.txt.

Localizamos ésta linea:


# Discovery F429ZI board

Veremos los descriptores generales de la F429ZI-Discovery.


################################################################################
# Discovery F429ZI board

DISCOVERY_F429ZI.name = Discovery F429ZI

# TBD: correct memory settings here and in ldscript !!
DISCOVERY_F429ZI.upload.maximum_size=1048576
DISCOVERY_F429ZI.upload.maximum_data_size=131072

DISCOVERY_F429ZI.build.core=arduino
DISCOVERY_F429ZI.build.board=DISCOVERY_F429ZI

DISCOVERY_F429ZI.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
DISCOVERY_F429ZI.build.series=STM32F4
DISCOVERY_F429ZI.build.variant=DISCOVERY_F429ZI

DISCOVERY_F429ZI.build.extra_flags=-DSTM32F429ZI -DSTM32F429xx -DHSE_VALUE=8000000
# TODO f_cpu, and check SystemClock_Config() 
# DISCOVERY_F429ZI.build.f_cpu=168000000L

DISCOVERY_F429ZI.upload.protocol=STLink
DISCOVERY_F429ZI.upload.tool=stlink_upload

DISCOVERY_F429ZI.menu.usb.SerialUSB=Serial [Virtual COM port]
DISCOVERY_F429ZI.menu.usb.SerialUSB.build.extra_flags_usb=-DMENU_USB_SERIAL
DISCOVERY_F429ZI.menu.usb.SerialMSC=Mass storage [testing, see documentation]
DISCOVERY_F429ZI.menu.usb.SerialMSC.build.extra_flags_usb=-DMENU_USB_MASS_STORAGE
DISCOVERY_F429ZI.menu.usb.Disabled=Disabled, no USB

DISCOVERY_F429ZI.menu.serial.SerialUSB=SerialUSB
DISCOVERY_F429ZI.menu.serial.SerialUSB.build.extra_flags_serial=-DMENU_SERIAL=SerialUSB
DISCOVERY_F429ZI.menu.serial.SerialUART1=SerialUART1 [PA9/PA10]
DISCOVERY_F429ZI.menu.serial.SerialUART1.build.extra_flags_serial=-DMENU_SERIAL=SerialUART1

################################################################################

Los relevantes son estos:

1
Dice:

DISCOVERY_F429ZI.upload.maximum_size=1048576

Debe decir:


DISCOVERY_F429ZI.upload.maximum_size=2097152


Dice:

# DISCOVERY_F429ZI.build.f_cpu=168000000L

Debe decir:

DISCOVERY_F429ZI.build.f_cpu=180000000L

Error en SdFat para STM32

El segundo error de compilación tiene que ver con el ajuste de GPIO SPI. La F429I-Disco, tiene 6 buses SPI. La mayoría de placas stm tienen 3, por lo que al compilar algún ejemplo de GD23STM32 en F103 o F407, estos errores no habían aparecido.

Para corregir el problema, hay que ir a la siguiente ruta de la librería SdFat, incluida en el core de danieleff:

C:\arduino-1.8.3\hardware\STM32GENERIC_danielefF\STM32\libraries\SdFat\src\SpiDriver

Abrimos el archivo: SdSpiSTM32.ccp, con el block de notas o wordpad

Localizamos estas lineas:

static SPIClass m_SPI1(SPI1);

#ifdef SPI2
    static SPIClass m_SPI2(SPI2);
#endif
#ifdef SPI3
    static SPIClass m_SPI3(SPI3);
#endif
#ifdef SPI4
    static SPIClass m_SPI3(SPI4);
#endif
#ifdef SPI5
    static SPIClass m_SPI3(SPI5);
#endif
#ifdef SPI6
    static SPIClass m_SPI3(SPI6);
#endif

A partir del ifdef SPI4, podemos ver que todas las definiciones hasta SPI6, definen al bus SPI3; las lineas deben quedar así:


static SPIClass m_SPI1(SPI1);

#ifdef SPI2
    static SPIClass m_SPI2(SPI2);
#endif
#ifdef SPI3
    static SPIClass m_SPI3(SPI3);
#endif
#ifdef SPI4
    static SPIClass m_SPI4(SPI4);
#endif
#ifdef SPI5
    static SPIClass m_SPI5(SPI5);
#endif
#ifdef SPI6
    static SPIClass m_SPI6(SPI6);
#endif


Resultado

Con los ajustes mencionados, se muestran algunas advertencias, pero el sketch compila sin errores

?mage

Los cambios:

Link de descarga de los archivos corregidos

Cabe señalar que el nombre de la carpeta del core, debe corresponder a la que hayan decidido usar en sus computadores, en mi caso usé el nombre STM32GENERIC_danielefF

1 Localizar esta carpeta: C:\arduino-1.8.3\hardware\STM32GENERIC_danielefF\STM32, sobreescribir el archivo adjunto boards.txt 

2 Localizar esta carpeta: C:\arduino-1.8.3\hardware\STM32GENERIC_danielefF\STM32\libraries\SdFat\src\SpiDriver, sobreescribir el archivo adjunto SdSpiSTM32.ccp


Attached Files
.txt   boards.txt (Size: 36.78 KB / Downloads: 1)
.cpp   SdSpiSTM32.cpp (Size: 4.23 KB / Downloads: 0)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)