0 Replies Latest reply on Dec 22, 2016 5:59 AM by nrcrast

    STM32F469 Discovery Kit

    nrcrast

      Hi guys,

       

      I have an STM32F469 discovery kit that I'm trying to get to work with the WICED stack. There seems to be some limited support for the STM32F469_479 processor, but it doesn't seem to have been fully implemented. I am trying to add support, but have run into two problems:

       

      1.) The PLL constants. Using a sample STM32F469 discovery program from ST, I determined that the PLL constants should be the following:

       

      #define PLL_M_CONSTANT       ( 8 )

      #define PLL_N_CONSTANT       ( 360 )

      #define PLL_P_CONSTANT       ( 2 )

      #define PLL_Q_CONSTANT       ( 7 )

      #define PLL_R_CONSTANT ( 6 )

       

      However, when I set PLL_M to 8, the board is very unstable and seems to crash after a couple of seconds. Setting it to 9 works, but then I suspect that system clock timing may be slightly off.

       

      2.) The WIFI module I am using is an Inventek 43340 SDIO module that I am inserting into the microSD slot of the discovery board. Using the platform files from Inventek as a base (most of the GPIO pins are the same), I believe that I have all of the GPIO pins mapped correctly for this to work, but it gets stuck in this loop:

       

          result = wwd_bus_sdio_download_firmware( );

       
          if ( result != WWD_SUCCESS )
          {
              /*  either an error or user abort */
              return result;
          }
       
          /* Wait for F2 to be ready */
          loop_count = 0;
          while ( ( ( result = wwd_bus_read_register_value( BUS_FUNCTION, SDIOD_CCCR_IORDY, (uint8_t) 1, &byte_data ) ) == WWD_SUCCESS ) &&
                  ( ( byte_data & SDIO_FUNC_READY_2 ) == 0 ) &&
                  ( loop_count < (uint32_t) F2_READY_TIMEOUT_MS ) )
          {
              (void) host_rtos_delay_milliseconds( (uint32_t) 1 ); /* Ignore return - nothing can be done if it fails */
              loop_count++;
          }
          if ( loop_count >= (uint32_t) F2_READY_TIMEOUT_MS )
          {
              /* If your system fails here, it could be due to incorrect NVRAM variables.
               * Check which 'wifi_nvram_image.h' file your platform is using, and
               * check that it matches the WLAN device on your platform, including the
               * crystal frequency.
               */
              WPRINT_WWD_ERROR(("Timeout while waiting for function 2 to be ready\n"));
              /*@-unreachable@*/ /* Reachable after hitting assert */
              return WWD_TIMEOUT;
              /*@+unreachable@*/
          }

      That last if statement never actually runs; the system seems to crash before the loop_count can get high enough.

       

      Any ideas? I have tried using both SDK 4.1 and 3.7, with no luck.

       

      -Nick