In-progress 2020 update
authorMichael McMaster <michael@codesrc.com>
Mon, 13 Jan 2020 08:51:49 +0000 (18:51 +1000)
committerMichael McMaster <michael@codesrc.com>
Mon, 13 Jan 2020 08:51:49 +0000 (18:51 +1000)
20 files changed:
STM32CubeMX/SCSI2SD-V6/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_sd.c
STM32CubeMX/SCSI2SD-V6/Inc/stm32f2xx_hal_conf.h
STM32CubeMX/SCSI2SD-V6/Inc/stm32f2xx_it.h
STM32CubeMX/SCSI2SD-V6/Inc/usb_device.h
STM32CubeMX/SCSI2SD-V6/Inc/usbd_conf.h
STM32CubeMX/SCSI2SD-V6/Inc/usbd_desc.h
STM32CubeMX/SCSI2SD-V6/SCSI2SD-V6.ioc
STM32CubeMX/SCSI2SD-V6/Src/fsmc.c
STM32CubeMX/SCSI2SD-V6/Src/gpio.c
STM32CubeMX/SCSI2SD-V6/Src/main.c
STM32CubeMX/SCSI2SD-V6/Src/sdio.c
STM32CubeMX/SCSI2SD-V6/Src/stm32f2xx_hal_msp.c
STM32CubeMX/SCSI2SD-V6/Src/stm32f2xx_it.c
STM32CubeMX/SCSI2SD-V6/Src/usb_device.c
STM32CubeMX/SCSI2SD-V6/Src/usbd_conf.c
rtl/fpga_bitmap.o
src/firmware/cubemx.patch
src/firmware/led.c
src/firmware/main.c
src/firmware/usb_device/usbd_desc.c

index 4df41a0aac8160d65abc7ff2a03352b027b1d3c9..233f4249c7ade8da118f68f5ed3df2941cb7933a 100755 (executable)
@@ -893,7 +893,7 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pRead
                                 SDIO_IT_STBITERR));
   
   /* Enable SDIO DMA transfer */
-  __HAL_SD_SDIO_DMA_ENABLE();
+  // MM disabled, as this fails on fast cards. __HAL_SD_SDIO_DMA_ENABLE();
   
   /* Configure DMA user callbacks */
   hsd->hdmarx->XferCpltCallback  = SD_DMA_RxCplt;
@@ -901,27 +901,29 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pRead
   
   /* Enable the DMA Stream */
   HAL_DMA_Start_IT(hsd->hdmarx, (uint32_t)&hsd->Instance->FIFO, (uint32_t)pReadBuffer, (uint32_t)(BlockSize * NumberOfBlocks)/4);
+
+  sdio_cmdinitstructure.Response         = SDIO_RESPONSE_SHORT;
+  sdio_cmdinitstructure.WaitForInterrupt = SDIO_WAIT_NO;
+  sdio_cmdinitstructure.CPSM             = SDIO_CPSM_ENABLE;
   
   if (hsd->CardType == HIGH_CAPACITY_SD_CARD)
   {
     BlockSize = 512;
     ReadAddr /= 512;
-  }
-  
-  /* Set Block Size for Card */ 
-  sdio_cmdinitstructure.Argument         = (uint32_t)BlockSize;
-  sdio_cmdinitstructure.CmdIndex         = SD_CMD_SET_BLOCKLEN;
-  sdio_cmdinitstructure.Response         = SDIO_RESPONSE_SHORT;
-  sdio_cmdinitstructure.WaitForInterrupt = SDIO_WAIT_NO;
-  sdio_cmdinitstructure.CPSM             = SDIO_CPSM_ENABLE;
-  SDIO_SendCommand(hsd->Instance, &sdio_cmdinitstructure);
+  } else {
+    /* Set Block Size for Card */ 
+    sdio_cmdinitstructure.Argument         = (uint32_t)BlockSize;
+    sdio_cmdinitstructure.CmdIndex         = SD_CMD_SET_BLOCKLEN;
+
+    SDIO_SendCommand(hsd->Instance, &sdio_cmdinitstructure);
   
-  /* Check for error conditions */
-  errorstate = SD_CmdResp1Error(hsd, SD_CMD_SET_BLOCKLEN);
+    /* Check for error conditions */
+    errorstate = SD_CmdResp1Error(hsd, SD_CMD_SET_BLOCKLEN);
   
-  if (errorstate != SD_OK)
-  {
-    return errorstate;
+    if (errorstate != SD_OK)
+    {
+      return errorstate;
+    }
   }
   
   /* Configure the SD DPSM (Data Path State Machine) */ 
@@ -931,6 +933,11 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pRead
   sdio_datainitstructure.TransferDir   = SDIO_TRANSFER_DIR_TO_SDIO;
   sdio_datainitstructure.TransferMode  = SDIO_TRANSFER_MODE_BLOCK;
   sdio_datainitstructure.DPSM          = SDIO_DPSM_ENABLE;
+
+  // We cannot enable DMA too early on UHS-I class 3 SD cards, or else the
+  // data is just discarded before the dpsm is started.
+  __HAL_SD_SDIO_DMA_ENABLE();
+  
   SDIO_DataConfig(hsd->Instance, &sdio_datainitstructure);
   
   /* Check number of blocks command */
@@ -1017,28 +1024,29 @@ HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWri
   HAL_DMA_Start_IT(hsd->hdmatx, (uint32_t)pWriteBuffer, (uint32_t)&hsd->Instance->FIFO, (uint32_t)(BlockSize * NumberOfBlocks)/4);
 
   /* Enable SDIO DMA transfer */
-  __HAL_SD_SDIO_DMA_ENABLE();
+  // MM disabled, as this fails on fast cards. __HAL_SD_SDIO_DMA_ENABLE();
+  sdio_cmdinitstructure.Response         = SDIO_RESPONSE_SHORT;
+  sdio_cmdinitstructure.WaitForInterrupt = SDIO_WAIT_NO;
+  sdio_cmdinitstructure.CPSM             = SDIO_CPSM_ENABLE;
   
   if (hsd->CardType == HIGH_CAPACITY_SD_CARD)
   {
     BlockSize = 512;
     WriteAddr /= 512;
-  }
+  } else {
+       /* Set Block Size for Card */ 
+    sdio_cmdinitstructure.Argument         = (uint32_t)BlockSize;
+    sdio_cmdinitstructure.CmdIndex         = SD_CMD_SET_BLOCKLEN;
 
-  /* Set Block Size for Card */ 
-  sdio_cmdinitstructure.Argument         = (uint32_t)BlockSize;
-  sdio_cmdinitstructure.CmdIndex         = SD_CMD_SET_BLOCKLEN;
-  sdio_cmdinitstructure.Response         = SDIO_RESPONSE_SHORT;
-  sdio_cmdinitstructure.WaitForInterrupt = SDIO_WAIT_NO;
-  sdio_cmdinitstructure.CPSM             = SDIO_CPSM_ENABLE;
-  SDIO_SendCommand(hsd->Instance, &sdio_cmdinitstructure);
+    SDIO_SendCommand(hsd->Instance, &sdio_cmdinitstructure);
 
-  /* Check for error conditions */
-  errorstate = SD_CmdResp1Error(hsd, SD_CMD_SET_BLOCKLEN);
+    /* Check for error conditions */
+    errorstate = SD_CmdResp1Error(hsd, SD_CMD_SET_BLOCKLEN);
 
-  if (errorstate != SD_OK)
-  {
-    return errorstate;
+    if (errorstate != SD_OK)
+    {
+      return errorstate;
+    }
   }
   
   /* Check number of blocks command */
@@ -1049,6 +1057,26 @@ HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWri
   }
   else
   {
+    /* MM: Prepare for write */
+    sdio_cmdinitstructure.Argument         = (uint32_t)(hsd->RCA << 16);
+    sdio_cmdinitstructure.CmdIndex         = SD_CMD_APP_CMD;
+    SDIO_SendCommand(hsd->Instance, &sdio_cmdinitstructure);
+    errorstate = SD_CmdResp1Error(hsd, SD_CMD_APP_CMD);
+    if (errorstate != SD_OK)
+    {
+      return errorstate;
+    }
+    sdio_cmdinitstructure.Argument         = (uint32_t)NumberOfBlocks;
+    sdio_cmdinitstructure.CmdIndex         = SD_CMD_SET_BLOCK_COUNT;
+    SDIO_SendCommand(hsd->Instance, &sdio_cmdinitstructure);
+    errorstate = SD_CmdResp1Error(hsd, SD_CMD_SET_BLOCK_COUNT);
+    if (errorstate != SD_OK)
+    {
+      return errorstate;
+    }
+
+    /* /MM */
+
     /* Send CMD25 WRITE_MULT_BLOCK with argument data address */
     sdio_cmdinitstructure.CmdIndex = SD_CMD_WRITE_MULT_BLOCK;
   }
@@ -1078,6 +1106,11 @@ HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWri
   sdio_datainitstructure.TransferDir   = SDIO_TRANSFER_DIR_TO_CARD;
   sdio_datainitstructure.TransferMode  = SDIO_TRANSFER_MODE_BLOCK;
   sdio_datainitstructure.DPSM          = SDIO_DPSM_ENABLE;
+
+  // We cannot enable DMA too early on UHS-I class 3 SD cards, or else the
+  // data is just discarded before the dpsm is started.
+  __HAL_SD_SDIO_DMA_ENABLE();
+
   SDIO_DataConfig(hsd->Instance, &sdio_datainitstructure);
   
   hsd->SdTransferErr = errorstate;
@@ -1116,7 +1149,9 @@ HAL_SD_ErrorTypedef HAL_SD_CheckReadOperation(SD_HandleTypeDef *hsd, uint32_t Ti
   
   timeout = Timeout;
   
-  /* Wait until the Rx transfer is no longer active */
+    /* Wait until the Rx transfer is no longer active. IE. fifo is empty.
+Once FIFO is empty, the DMA will have finished and DmaTransferCplt should
+be true */
   while((__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXACT)) && (timeout > 0))
   {
     timeout--;  
@@ -1916,10 +1951,12 @@ HAL_SD_ErrorTypedef HAL_SD_HighSpeed (SD_HandleTypeDef *hsd)
     __HAL_SD_SDIO_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
     
     /* Test if the switch mode HS is ok */
-    if ((SD_hs[13]& 2) != 2)
-    {
-      errorstate = SD_UNSUPPORTED_FEATURE;
-    } 
+    // MM: These bits (0 to 271) are reserved in the spec I'm looking at ???
+    // Should be safe to ignore the result.
+    //if ((SD_hs[13]& 2) != 2)
+    //{
+      //errorstate = SD_UNSUPPORTED_FEATURE;
+    //}
   }
   
   return errorstate;
index ef23c94f0f01f5f0f80b9da501907bc2af22f051..223aa4a2e8ac50948923fe66895f40f09fd52d36 100755 (executable)
@@ -76,7 +76,7 @@
 //#define HAL_SMARTCARD_MODULE_ENABLED   
 //#define HAL_WWDG_MODULE_ENABLED   
 #define HAL_PCD_MODULE_ENABLED
-//#define HAL_HCD_MODULE_ENABLED   
+#define HAL_HCD_MODULE_ENABLED   
 #define HAL_GPIO_MODULE_ENABLED
 #define HAL_DMA_MODULE_ENABLED
 #define HAL_RCC_MODULE_ENABLED
index 5c39a9d7beced68e97af055eda859880643f769d..293f87beba4293567e8c9555b0a28da7824b8f70 100755 (executable)
@@ -49,6 +49,7 @@ void SysTick_Handler(void);
 void EXTI4_IRQHandler(void);
 void SDIO_IRQHandler(void);
 void DMA2_Stream3_IRQHandler(void);
+void OTG_FS_IRQHandler(void);
 void DMA2_Stream6_IRQHandler(void);
 void OTG_HS_IRQHandler(void);
 
index dd6f28671da281ddd3416f393e1f38b3c8df3324..4ccb62163837a0eea9f61664e94c7ba3313e0ab5 100755 (executable)
@@ -42,7 +42,7 @@
 #include "stm32f2xx_hal.h"
 #include "usbd_def.h"
 
-extern USBD_HandleTypeDef hUsbDeviceHS;
+extern USBD_HandleTypeDef hUsbDeviceFS;
 
 /* USB_Device init function */ 
 void MX_USB_DEVICE_Init(void);
index a3c561879910d56a07ad981f671ed60d14fde5a5..b4dd875e24efb9834bdb4c8d50845f9b652cd3fe 100755 (executable)
@@ -57,7 +57,7 @@
   */ 
 
 /*---------- -----------*/
-#define USBD_MAX_NUM_INTERFACES     1
+#define USBD_MAX_NUM_INTERFACES     2
 /*---------- -----------*/
 #define USBD_MAX_NUM_CONFIGURATION     1
 /*---------- -----------*/
@@ -70,8 +70,6 @@
 #define USBD_LPM_ENABLED     0
 /*---------- -----------*/
 #define USBD_SELF_POWERED     1
-/*---------- -----------*/
-#define MSC_MEDIA_PACKET     512
 
 /****************************************/
 /* #define for FS and HS identification */
index a70366881d0f09104774e2601790b5306544bad0..50dfc6fc94b3abb508a8830859ee79ad4d6b16d8 100755 (executable)
@@ -75,7 +75,7 @@
 /** @defgroup USBD_DESC_Exported_Variables
   * @{
   */ 
-extern USBD_DescriptorsTypeDef HS_Desc;
+extern USBD_DescriptorsTypeDef FS_Desc;
 /**
   * @}
   */ 
index a1b5b62b8db3eb3124d997639cf5d976a8443fcc..2255c6e83bc646296f9abee1cfbdd5e4b40be850 100755 (executable)
@@ -67,16 +67,17 @@ KeepUserPlacement=true
 Mcu.Family=STM32F2
 Mcu.IP0=DMA
 Mcu.IP1=FSMC
-Mcu.IP10=USB_OTG_HS
+Mcu.IP10=USB_OTG_FS
+Mcu.IP11=USB_OTG_HS
 Mcu.IP2=NVIC
 Mcu.IP3=RCC
 Mcu.IP4=SDIO
 Mcu.IP5=SPI1
-Mcu.IP6=TIM4
-Mcu.IP7=UART4
-Mcu.IP8=USB_DEVICE
-Mcu.IP9=USB_OTG_FS
-Mcu.IPNb=11
+Mcu.IP6=SYS
+Mcu.IP7=TIM4
+Mcu.IP8=UART4
+Mcu.IP9=USB_DEVICE
+Mcu.IPNb=12
 Mcu.Name=STM32F205V(B-C-E-F-G)Tx
 Mcu.Package=LQFP100
 Mcu.Pin0=PE2
@@ -160,23 +161,32 @@ Mcu.Pin79=PB9
 Mcu.Pin8=PH0-OSC_IN
 Mcu.Pin80=PE0
 Mcu.Pin81=PE1
-Mcu.Pin82=VP_TIM4_VS_ControllerModeClock
-Mcu.Pin83=VP_USB_DEVICE_VS_USB_DEVICE_MSC_HS
+Mcu.Pin82=VP_SYS_VS_Systick
+Mcu.Pin83=VP_TIM4_VS_ControllerModeClock
+Mcu.Pin84=VP_USB_DEVICE_VS_USB_DEVICE_MSC_HS
 Mcu.Pin9=PH1-OSC_OUT
-Mcu.PinsNb=84
+Mcu.PinsNb=85
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32F205VCTx
-MxCube.Version=4.11.0
-MxDb.Version=DB.4.0.110
+MxCube.Version=5.4.0
+MxDb.Version=DB.5.0.40
+NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:false\:false\:false
 NVIC.DMA2_Stream3_IRQn=true\:0\:0\:false\:false\:true\:true\:true
 NVIC.DMA2_Stream6_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:false\:false\:false
 NVIC.EXTI4_IRQn=true\:10\:0\:true\:false\:true\:true\:true
 NVIC.ForceEnableDMAVector=true
+NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:false\:false\:false
+NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:false\:false\:false
+NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:false\:false\:false
 NVIC.OTG_HS_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:false\:false\:false
 NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
 NVIC.SDIO_IRQn=true\:0\:0\:true\:false\:true\:true\:true
+NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false
 NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:false\:false\:false
 PA0-WKUP.Locked=true
 PA0-WKUP.Mode=Asynchronous
 PA0-WKUP.Signal=UART4_TX
@@ -217,7 +227,7 @@ PA7.Locked=true
 PA7.Mode=Full_Duplex_Master
 PA7.Signal=SPI1_MOSI
 PA8.GPIOParameters=GPIO_Speed
-PA8.GPIO_Speed=GPIO_SPEED_HIGH
+PA8.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
 PA8.Mode=Clock-out-1
 PA8.Signal=RCC_MCO_1
 PA9.GPIOParameters=GPIO_Label
@@ -246,8 +256,9 @@ PB14.GPIOParameters=GPIO_Label
 PB14.GPIO_Label=nTERM_EN
 PB14.Locked=true
 PB14.Signal=GPIO_Output
-PB15.GPIOParameters=GPIO_Label
+PB15.GPIOParameters=GPIO_PuPd,GPIO_Label
 PB15.GPIO_Label=LED_IO
+PB15.GPIO_PuPd=GPIO_PULLDOWN
 PB15.Locked=true
 PB15.Signal=GPIO_Output
 PB2.GPIOParameters=GPIO_PuPd,GPIO_Label
@@ -266,7 +277,7 @@ PB5.Signal=USB_OTG_HS_ULPI_D7
 PB6.Locked=true
 PB6.Signal=GPIO_Analog
 PB7.GPIOParameters=GPIO_Speed_High_Default
-PB7.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PB7.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PB7.Signal=FSMC_NL
 PB8.GPIOParameters=GPIO_PuPd,GPIO_Label
 PB8.GPIO_Label=nSD_WP
@@ -333,16 +344,24 @@ PC9.GPIOParameters=GPIO_PuPd
 PC9.GPIO_PuPd=GPIO_PULLUP
 PC9.Mode=SD_4_bits_Wide_bus
 PC9.Signal=SDIO_D1
+PCC.Checker=false
+PCC.Line=STM32F2x5
+PCC.MCU=STM32F205V(B-C-E-F-G)Tx
+PCC.PartNumber=STM32F205VCTx
+PCC.Seq0=0
+PCC.Series=STM32F2
+PCC.Temperature=25
+PCC.Vdd=3.3
 PD0.GPIOParameters=GPIO_Speed_High_Default
-PD0.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD0.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD0.Mode=16b-da1
 PD0.Signal=FSMC_DA2
 PD1.GPIOParameters=GPIO_Speed_High_Default
-PD1.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD1.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD1.Mode=16b-da1
 PD1.Signal=FSMC_DA3
 PD10.GPIOParameters=GPIO_Speed_High_Default
-PD10.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD10.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD10.Mode=16b-da1
 PD10.Signal=FSMC_DA15
 PD11.Locked=true
@@ -355,11 +374,11 @@ PD13.GPIO_PuPd=GPIO_NOPULL
 PD13.Locked=true
 PD13.Signal=GPIO_Output
 PD14.GPIOParameters=GPIO_Speed_High_Default
-PD14.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD14.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD14.Mode=16b-da1
 PD14.Signal=FSMC_DA0
 PD15.GPIOParameters=GPIO_Speed_High_Default
-PD15.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD15.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD15.Mode=16b-da1
 PD15.Signal=FSMC_DA1
 PD2.GPIOParameters=GPIO_PuPd
@@ -372,11 +391,11 @@ PD3.GPIO_PuPd=GPIO_PULLDOWN
 PD3.Locked=true
 PD3.Signal=GPIO_Input
 PD4.GPIOParameters=GPIO_Speed_High_Default
-PD4.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD4.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD4.Mode=MuxedPsram1
 PD4.Signal=FSMC_NOE
 PD5.GPIOParameters=GPIO_Speed_High_Default
-PD5.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD5.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD5.Mode=MuxedPsram1
 PD5.Signal=FSMC_NWE
 PD6.GPIOParameters=GPIO_Label
@@ -384,47 +403,47 @@ PD6.GPIO_Label=NWAIT_UNUSED
 PD6.Locked=true
 PD6.Signal=GPIO_Analog
 PD7.GPIOParameters=GPIO_Speed_High_Default
-PD7.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD7.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD7.Mode=NorPsramChipSelect1_1
 PD7.Signal=FSMC_NE1
 PD8.GPIOParameters=GPIO_Speed_High_Default
-PD8.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD8.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD8.Mode=16b-da1
 PD8.Signal=FSMC_DA13
 PD9.GPIOParameters=GPIO_Speed_High_Default
-PD9.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PD9.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PD9.Mode=16b-da1
 PD9.Signal=FSMC_DA14
 PE0.GPIOParameters=GPIO_Speed_High_Default
-PE0.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE0.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE0.Mode=2ByteEnable1
 PE0.Signal=FSMC_NBL0
 PE1.GPIOParameters=GPIO_Speed_High_Default
-PE1.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE1.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE1.Mode=2ByteEnable1
 PE1.Signal=FSMC_NBL1
 PE10.GPIOParameters=GPIO_Speed_High_Default
-PE10.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE10.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE10.Mode=16b-da1
 PE10.Signal=FSMC_DA7
 PE11.GPIOParameters=GPIO_Speed_High_Default
-PE11.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE11.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE11.Mode=16b-da1
 PE11.Signal=FSMC_DA8
 PE12.GPIOParameters=GPIO_Speed_High_Default
-PE12.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE12.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE12.Mode=16b-da1
 PE12.Signal=FSMC_DA9
 PE13.GPIOParameters=GPIO_Speed_High_Default
-PE13.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE13.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE13.Mode=16b-da1
 PE13.Signal=FSMC_DA10
 PE14.GPIOParameters=GPIO_Speed_High_Default
-PE14.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE14.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE14.Mode=16b-da1
 PE14.Signal=FSMC_DA11
 PE15.GPIOParameters=GPIO_Speed_High_Default
-PE15.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE15.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE15.Mode=16b-da1
 PE15.Signal=FSMC_DA12
 PE2.GPIOParameters=GPIO_PuPd,GPIO_Label
@@ -449,15 +468,15 @@ PE6.GPIO_PuPd=GPIO_PULLDOWN
 PE6.Locked=true
 PE6.Signal=GPIO_Input
 PE7.GPIOParameters=GPIO_Speed_High_Default
-PE7.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE7.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE7.Mode=16b-da1
 PE7.Signal=FSMC_DA4
 PE8.GPIOParameters=GPIO_Speed_High_Default
-PE8.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE8.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE8.Mode=16b-da1
 PE8.Signal=FSMC_DA5
 PE9.GPIOParameters=GPIO_Speed_High_Default
-PE9.GPIO_Speed_High_Default=GPIO_SPEED_MEDIUM
+PE9.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM
 PE9.Mode=16b-da1
 PE9.Signal=FSMC_DA6
 PH0-OSC_IN.Mode=HSE-External-Oscillator
@@ -505,29 +524,30 @@ RCC.EthernetFreq_Value=108000000
 RCC.FCLKCortexFreq_Value=108000000
 RCC.FamilyName=M
 RCC.HCLKFreq_Value=108000000
-RCC.HSE_VALUE=20000000
+RCC.HSE_VALUE=12000000
 RCC.HSI_VALUE=16000000
 RCC.I2SClocksFreq_Value=96000000
-RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLP,PLLQ,RCC_MCO1Source,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
+RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLP,PLLQ,PLLSourceVirtual,RCC_MCO1Source,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
 RCC.LSE_VALUE=32768
 RCC.LSI_VALUE=32000
 RCC.MCO1PinFreq_Value=108000000
 RCC.MCO2PinFreq_Value=108000000
 RCC.PLLCLKFreq_Value=108000000
-RCC.PLLM=20
+RCC.PLLM=12
 RCC.PLLN=432
 RCC.PLLP=RCC_PLLP_DIV4
 RCC.PLLQ=9
+RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
 RCC.RCC_MCO1Source=RCC_MCO1SOURCE_PLLCLK
 RCC.RTCFreq_Value=32000
-RCC.RTCHSEDivFreq_Value=10000000
+RCC.RTCHSEDivFreq_Value=6000000
 RCC.SYSCLKFreq_VALUE=108000000
 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
 RCC.VCOI2SOutputFreq_Value=192000000
 RCC.VCOInputFreq_Value=1000000
 RCC.VCOOutputFreq_Value=432000000
 RCC.VcooutputI2S=96000000
-SH.FSMC_NL.0=FSMC_NL,MuxedPsram1
+SH.FSMC_NL.0=FSMC_NL,AddressValid1
 SH.FSMC_NL.ConfNb=1
 SH.GPXTI4.0=GPIO_EXTI4
 SH.GPXTI4.ConfNb=1
@@ -537,13 +557,15 @@ SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_4
 SPI1.CLKPhase=SPI_PHASE_2EDGE
 SPI1.CLKPolarity=SPI_POLARITY_HIGH
 SPI1.CalculateBaudRate=13.5 MBits/s
-SPI1.IPParameters=VirtualType,Mode,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,CLKPhase
+SPI1.Direction=SPI_DIRECTION_2LINES
+SPI1.IPParameters=VirtualType,Mode,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,CLKPhase,Direction
 SPI1.Mode=SPI_MODE_MASTER
 SPI1.VirtualType=VM_MASTER
 UART4.BaudRate=9600
 UART4.IPParameters=VirtualMode,BaudRate
 UART4.VirtualMode=Asynchronous
-USB_DEVICE.IPParameters=VirtualMode-MSC_HS,USBD_HandleTypeDef-MSC_HS,VirtualModeHS
+USB_DEVICE.CLASS_NAME_HS=MSC
+USB_DEVICE.IPParameters=VirtualMode-MSC_HS,USBD_HandleTypeDef-MSC_HS,VirtualModeHS,CLASS_NAME_HS
 USB_DEVICE.USBD_HandleTypeDef-MSC_HS=hUsbDeviceHS
 USB_DEVICE.VirtualMode-MSC_HS=Msc
 USB_DEVICE.VirtualModeHS=Msc_HS
@@ -552,6 +574,8 @@ USB_OTG_FS.VirtualMode=Device_Only
 USB_OTG_HS.IPParameters=VirtualMode-Device_HS,dma_enable-Device_HS
 USB_OTG_HS.VirtualMode-Device_HS=Device_HS
 USB_OTG_HS.dma_enable-Device_HS=ENABLE
+VP_SYS_VS_Systick.Mode=SysTick
+VP_SYS_VS_Systick.Signal=SYS_VS_Systick
 VP_TIM4_VS_ControllerModeClock.Mode=Clock Mode
 VP_TIM4_VS_ControllerModeClock.Signal=TIM4_VS_ControllerModeClock
 VP_USB_DEVICE_VS_USB_DEVICE_MSC_HS.Mode=MSC_HS
index c257924341bb790efddb648fcfaa2f0bcf393574..9f34729a3840558a44a8a54e3ca31e47c86550fe 100755 (executable)
@@ -91,7 +91,7 @@ static void HAL_FSMC_MspInit(void){
   }
   FSMC_Initialized = 1;
   /* Peripheral clock enable */
-  #__FSMC_CLK_ENABLE();
+  __FSMC_CLK_ENABLE();
   
   /** FSMC GPIO Configuration  
   PE7   ------> FSMC_DA4
index eb469982e024c38f1194379d69acfd245b597327..78e5996f0932f3c6c6ee16e444889e4318ae423f 100755 (executable)
@@ -117,13 +117,20 @@ void MX_GPIO_Init(void)
   GPIO_InitStruct.Pull = GPIO_PULLDOWN;
   HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : PBPin PBPin */
-  GPIO_InitStruct.Pin = nTERM_EN_Pin|LED_IO_Pin;
+  /*Configure GPIO pins : PBPin */
+  GPIO_InitStruct.Pin = nTERM_EN_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
+  /*Configure GPIO pins : PBPin */
+  GPIO_InitStruct.Pin = LED_IO_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
   /*Configure GPIO pins : PD11 PDPin */
   GPIO_InitStruct.Pin = GPIO_PIN_11|NWAIT_UNUSED_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
index 78207ba2e1e4f56ba8d55638d99d28ed8dfcf27d..281ec07dd052c63fb753f090dc6d2815d69dcdeb 100755 (executable)
   */
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f2xx_hal.h"
-#include "dma.h"
 #include "sdio.h"
 #include "spi.h"
-#include "tim.h"
 #include "usart.h"
 #include "usb_device.h"
-#include "usb_otg_fs.h"
+//#include "usb_otg_fs.h"
 #include "gpio.h"
 #include "fsmc.h"
 
@@ -88,15 +86,10 @@ int main(void)
 
   /* Initialize all configured peripherals */
   MX_GPIO_Init();
-  MX_DMA_Init();
-  SystemClock_Config();
   MX_FSMC_Init();
   MX_SDIO_SD_Init();
   MX_SPI1_Init();
-  MX_TIM4_Init();
-  MX_USB_DEVICE_Init();
   MX_UART4_Init();
-  MX_USB_OTG_FS_PCD_Init();
 
   /* USER CODE BEGIN 2 */
   mainInit();
@@ -130,7 +123,7 @@ void SystemClock_Config(void)
   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
-  RCC_OscInitStruct.PLL.PLLM = 20;
+  RCC_OscInitStruct.PLL.PLLM = 12;
   RCC_OscInitStruct.PLL.PLLN = 432;
   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
   RCC_OscInitStruct.PLL.PLLQ = 9;
index e8b2ad88c3d9d36fff838e0acd3e2da3c8105d7a..3d4a357279d630918177341f8caaa4b61bd4b514 100755 (executable)
@@ -36,7 +36,6 @@
 #include "sdio.h"
 
 #include "gpio.h"
-#include "dma.h"
 
 /* USER CODE BEGIN 0 */
 
@@ -59,9 +58,6 @@ void MX_SDIO_SD_Init(void)
   hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
   hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
   hsd.Init.ClockDiv = 0;
-  HAL_SD_Init(&hsd, &SDCardInfo);
-
-  HAL_SD_WideBusOperation_Config(&hsd, SDIO_BUS_WIDE_4B);
 
 }
 
@@ -143,6 +139,7 @@ void HAL_SD_MspInit(SD_HandleTypeDef* hsd)
     __HAL_LINKDMA(hsd,hdmarx,hdma_sdio_rx);
 
     /* Peripheral interrupt init*/
+       HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
     HAL_NVIC_SetPriority(SDIO_IRQn, 0, 0);
     HAL_NVIC_EnableIRQ(SDIO_IRQn);
   /* USER CODE BEGIN SDIO_MspInit 1 */
index e6b778381f5cc1c5bd902c753760073a68d5d5d6..cc6e0c4490d9d399edfad5df85e3fe3ca9e96b65 100755 (executable)
@@ -50,14 +50,6 @@ void HAL_MspInit(void)
   HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
 
   /* System interrupt init*/
-  /* MemoryManagement_IRQn interrupt configuration */
-  HAL_NVIC_SetPriority(MemoryManagement_IRQn, 0, 0);
-  /* BusFault_IRQn interrupt configuration */
-  HAL_NVIC_SetPriority(BusFault_IRQn, 0, 0);
-  /* UsageFault_IRQn interrupt configuration */
-  HAL_NVIC_SetPriority(UsageFault_IRQn, 0, 0);
-  /* DebugMonitor_IRQn interrupt configuration */
-  HAL_NVIC_SetPriority(DebugMonitor_IRQn, 0, 0);
   /* SysTick_IRQn interrupt configuration */
   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
 
index a22ddca6fcdb0b3fa6ea2c38940ae6ea21c4e786..b562ca459939352ae76bba35ed75a716643d4547 100755 (executable)
@@ -40,7 +40,8 @@
 /* USER CODE END 0 */
 
 /* External variables --------------------------------------------------------*/
-extern PCD_HandleTypeDef hpcd_USB_OTG_HS;
+extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
+extern HCD_HandleTypeDef hhcd_USB_OTG_HS;
 extern DMA_HandleTypeDef hdma_sdio_tx;
 extern DMA_HandleTypeDef hdma_sdio_rx;
 extern SD_HandleTypeDef hsd;
@@ -113,6 +114,21 @@ void DMA2_Stream3_IRQHandler(void)
   /* USER CODE END DMA2_Stream3_IRQn 1 */
 }
 
+/**
+* @brief This function handles USB On The Go FS global interrupt.
+*/
+void OTG_FS_IRQHandler(void)
+{
+  /* USER CODE BEGIN OTG_FS_IRQn 0 */
+
+  /* USER CODE END OTG_FS_IRQn 0 */
+  HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS);
+  /* USER CODE BEGIN OTG_FS_IRQn 1 */
+
+  /* USER CODE END OTG_FS_IRQn 1 */
+}
+
+
 /**
 * @brief This function handles DMA2 Stream6 global interrupt.
 */
@@ -135,7 +151,7 @@ void OTG_HS_IRQHandler(void)
   /* USER CODE BEGIN OTG_HS_IRQn 0 */
 
   /* USER CODE END OTG_HS_IRQn 0 */
-  HAL_PCD_IRQHandler(&hpcd_USB_OTG_HS);
+  //HAL_HCD_IRQHandler(&hhcd_USB_OTG_HS);
   /* USER CODE BEGIN OTG_HS_IRQn 1 */
 
   /* USER CODE END OTG_HS_IRQn 1 */
index 5a044dfeb31e2fee1e71967953c4196322557733..f410ba7bdd8abda3cb8045b0e944fb88a46b647f 100755 (executable)
 #include "usb_device.h"
 #include "usbd_core.h"
 #include "usbd_desc.h"
-#include "usbd_msc.h"
-#include "usbd_storage_if.h"
+#include "usbd_hid.h"
 
 /* USB Device Core handle declaration */
-USBD_HandleTypeDef hUsbDeviceHS;
+USBD_HandleTypeDef hUsbDeviceFS;
 
 /* init function */                                    
 void MX_USB_DEVICE_Init(void)
 {
   /* Init Device Library,Add Supported Class and Start the library*/
-  USBD_Init(&hUsbDeviceHS, &HS_Desc, DEVICE_HS);
+  USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS);
 
-  USBD_RegisterClass(&hUsbDeviceHS, &USBD_MSC);
+  USBD_RegisterClass(&hUsbDeviceFS, &USBD_HID);
 
-  USBD_MSC_RegisterStorage(&hUsbDeviceHS, &USBD_Storage_Interface_fops_HS);
-
-  USBD_Start(&hUsbDeviceHS);
+  USBD_Start(&hUsbDeviceFS);
 
 }
 /**
index 915a3fce257f401855e99531caff33817b1026a7..29e0812f60b91801c6d1beace45cc9fcc0625c42 100755 (executable)
@@ -37,7 +37,7 @@
 #include "usbd_def.h"
 #include "usbd_core.h"
 
-PCD_HandleTypeDef hpcd_USB_OTG_HS;
+PCD_HandleTypeDef hpcd_USB_OTG_FS;
 
 /* External functions --------------------------------------------------------*/
 void SystemClock_Config(void);
@@ -355,8 +355,35 @@ void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
 USBD_StatusTypeDef  USBD_LL_Init (USBD_HandleTypeDef *pdev)
 { 
   /* Init USB_IP */
-  if (pdev->id == DEVICE_HS) {
+  if (pdev->id == DEVICE_FS) {
   /* Link The driver to the stack */
+  hpcd_USB_OTG_FS.pData = pdev;
+  pdev->pData = &hpcd_USB_OTG_FS;
+
+  hpcd_USB_OTG_FS.Instance = USB_OTG_FS;
+  hpcd_USB_OTG_FS.Init.dev_endpoints = 7;
+  hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL;
+  hpcd_USB_OTG_FS.Init.dma_enable = DISABLE;
+  hpcd_USB_OTG_FS.Init.ep0_mps = DEP0CTL_MPS_64;
+  hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
+  hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE;
+  hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE;
+  hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE;  // VBUS NOT CONNECTED ?? CHECK.
+  hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE;
+  HAL_PCD_Init(&hpcd_USB_OTG_FS);
+
+  // Sum of all FIFOs must be <= 320.
+  HAL_PCD_SetRxFiFo(&hpcd_USB_OTG_FS, 0x80);
+  HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 0x40);
+  HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x40);
+  HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_FS, 2, 0x40);
+
+  HAL_NVIC_SetPriority(OTG_FS_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
+
+  } else if (pdev->id == DEVICE_HS) {
+  /* Link The driver to the stack */
+         /*
   hpcd_USB_OTG_HS.pData = pdev;
   pdev->pData = &hpcd_USB_OTG_HS;
 
@@ -374,8 +401,10 @@ USBD_StatusTypeDef  USBD_LL_Init (USBD_HandleTypeDef *pdev)
   HAL_PCD_Init(&hpcd_USB_OTG_HS);
 
   HAL_PCD_SetRxFiFo(&hpcd_USB_OTG_HS, 0x200);
-  HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_HS, 0, 0x80);
-  HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_HS, 1, 0x174);
+  HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_HS, 0, 0x40);
+  HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_HS, 1, 0x40);
+  HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_HS, 2, 0x174);
+  */
   }
   return USBD_OK;
 }
index e877e44b206e1382f9752496cd099314343dc659..7eb0ff639d8f6f957b3c8763023749d56c6eb1a4 100644 (file)
Binary files a/rtl/fpga_bitmap.o and b/rtl/fpga_bitmap.o differ
index 943b1af52c8b40dc2879ed668c80ae8f7a52e2d8..7362ff7c192158b5699f31064f59e53f9ffeaba4 100644 (file)
@@ -346,99 +346,6 @@ index c257924..5261aa9 100755
  
    HAL_GPIO_DeInit(GPIOB, GPIO_PIN_7);
  
-diff --git b/STM32CubeMX/SCSI2SD-V6/Src/gpio.c a/STM32CubeMX/SCSI2SD-V6/Src/gpio.c
-index 21529ff..5682f25 100755
---- b/STM32CubeMX/SCSI2SD-V6/Src/gpio.c
-+++ a/STM32CubeMX/SCSI2SD-V6/Src/gpio.c
-@@ -68,17 +68,17 @@ void MX_GPIO_Init(void)
-   __GPIOB_CLK_ENABLE();
-   __GPIOD_CLK_ENABLE();
--  /*Configure GPIO pins : PEPin PEPin PEPin */
-+  /*Configure GPIO pins : PEPin PEPin PEPin PEPin */
-   GPIO_InitStruct.Pin = FPGA_GPIO2_Pin|UNUSED_PE5_Pin|UNUSED_PE6_Pin;
-   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-   GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-   HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
--  /*Configure GPIO pin : PtPin */
-+  /*Configure GPIO pin : PE3 */
-   GPIO_InitStruct.Pin = FPGA_GPIO3_Pin;
-   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-   GPIO_InitStruct.Pull = GPIO_NOPULL;
--  HAL_GPIO_Init(FPGA_GPIO3_GPIO_Port, &GPIO_InitStruct);
-+  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
-   /*Configure GPIO pin : PE4 */
-   GPIO_InitStruct.Pin = GPIO_PIN_4;
-@@ -96,10 +96,8 @@ void MX_GPIO_Init(void)
-   GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
--  /*Configure GPIO pins : PAPin PAPin PAPin PAPin 
--                           PA10 */
--  GPIO_InitStruct.Pin = UNUSED_PA0_Pin|UNUSED_PA1_Pin|UNUSED_PA2_Pin|UNUSED_PA3_Pin 
--                          |GPIO_PIN_10;
-+  /*Configure GPIO pins : PAPin PAPin PAPin PAPin */
-+  GPIO_InitStruct.Pin = UNUSED_PA0_Pin|UNUSED_PA1_Pin|UNUSED_PA2_Pin|UNUSED_PA3_Pin;
-   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-   GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-@@ -125,14 +123,26 @@ void MX_GPIO_Init(void)
-   GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
-   HAL_GPIO_Init(nTERM_EN_GPIO_Port, &GPIO_InitStruct);
--  /*Configure GPIO pins : PBPin PBPin PBPin PB14 
--                           PB15 PBPin PBPin */
--  GPIO_InitStruct.Pin = BOOT1_Pin|UNUSED_PB12_Pin|UNUSED_PB13_Pin|GPIO_PIN_14 
--                          |GPIO_PIN_15|UNUSED_PB5_Pin|UNUSED_PB6_Pin;
-+  /*Configure GPIO pins : PBPin PBPin PBPin */
-+  GPIO_InitStruct.Pin = BOOT1_Pin|UNUSED_PB5_Pin|UNUSED_PB6_Pin;
-+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-+  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-+
-+  /*Configure GPIO pins : PBPin PBPin */
-+  GPIO_InitStruct.Pin = UNUSED_PB12_Pin|UNUSED_PB13_Pin;
-   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-   GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-+  /*Configure GPIO pins : PD6, PD12 */
-+  // PD6: FSMC NWAIT, not used yet.PULLED UP in fpga pin config
-+  // PD12: FPGA_GPIO1, not used.
-+  GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_12;
-+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-+  GPIO_InitStruct.Pull = GPIO_PULLUP;
-+  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
-+
-   /*Configure GPIO pins : PDPin PDPin */
-   GPIO_InitStruct.Pin = UNUSED_PD11_Pin|FSMC_UNUSED_CLK_Pin;
-   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-@@ -160,11 +170,18 @@ void MX_GPIO_Init(void)
-   GPIO_InitStruct.Alternate = GPIO_AF0_MCO;
-   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
--  /*Configure GPIO pin : PD6 */
--  GPIO_InitStruct.Pin = GPIO_PIN_6;
--  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
--  GPIO_InitStruct.Pull = GPIO_NOPULL;
--  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
-+  /*Configure GPIO pin : PA10 */
-+  // USB Host OTG ID pin
-+  GPIO_InitStruct.Pin = GPIO_PIN_10;
-+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-+  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-+  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-+
-+  // USB Host pins, currently unused.
-+  GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;
-+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-+  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-   /*Configure GPIO pins : PBPin PBPin */
-   GPIO_InitStruct.Pin = nSD_WP_Pin|nSD_CD_Pin;
 diff --git b/STM32CubeMX/SCSI2SD-V6/Src/main.c a/STM32CubeMX/SCSI2SD-V6/Src/main.c
 index 48e1f9a..a80e078 100755
 --- b/STM32CubeMX/SCSI2SD-V6/Src/main.c
index 4ae74a9da78e31519eabb34bd4ba72a12e3db8c8..8a1d62b6c991d501433e42bd0b8cde40964253f5 100755 (executable)
@@ -26,22 +26,22 @@ void s2s_ledInit()
        s2s_ledOff();
 
        GPIO_InitTypeDef ledDef = {
-               LED_Pin, // Pin
+               LED_IO_Pin, // Pin
                GPIO_MODE_OUTPUT_PP, // Mode
                GPIO_NOPULL, // Pull(ups)
                GPIO_SPEED_FREQ_LOW, // Speed (2MHz)
                0 // Alternate function
        };
-       HAL_GPIO_Init(LED_GPIO_Port, &ledDef);
+       HAL_GPIO_Init(LED_IO_GPIO_Port, &ledDef);
 }
 
 void s2s_ledOn()
 {
-       HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
+       HAL_GPIO_WritePin(LED_IO_GPIO_Port, LED_IO_Pin, GPIO_PIN_RESET);
 }
 
 void s2s_ledOff()
 {
-       HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
+       HAL_GPIO_WritePin(LED_IO_GPIO_Port, LED_IO_Pin, GPIO_PIN_SET);
 }
 
index ed37b5cc61b151740a96e3310cfb0536bda00e71..8a8e365344349afbf27dbf917cf27b8ddebe6ee6 100755 (executable)
@@ -32,7 +32,7 @@
 #include "usb_device/usbd_msc_storage_sd.h"\r
 \r
 \r
-const char* Notice = "Copyright (C) 2016 Michael McMaster <michael@codesrc.com>";\r
+const char* Notice = "Copyright (C) 2019 Michael McMaster <michael@codesrc.com>";\r
 uint32_t lastSDPoll;\r
 \r
 static int isUsbStarted;\r
@@ -45,6 +45,10 @@ void mainEarlyInit()
 \r
 void mainInit()\r
 {\r
+       // DISable the ULPI chip\r
+       // NO SEE AN4879: CLOCK IS INPUT ONLY YOU IDIOT.\r
+       HAL_GPIO_WritePin(nULPI_RESET_GPIO_Port, nULPI_RESET_Pin, GPIO_PIN_RESET);\r
+\r
        s2s_timeInit();\r
        s2s_ledInit();\r
        s2s_fpgaInit();\r
@@ -102,14 +106,17 @@ void mainLoop()
                                scsiInit();\r
 \r
                                // Is a USB host connected ?\r
+/* TODO DEAL WITH THIS\r
                                if (isUsbStarted)\r
                                {\r
                                        USBD_Stop(&hUsbDeviceFS);\r
                                        s2s_delay_ms(128);\r
                                        USBD_Start(&hUsbDeviceFS);\r
                                }\r
+*/                     \r
                        }\r
 \r
+/* TODO DEAL WITH THIS\r
                        // Can we speed up the SD card ?\r
                        // Don't combine with the above block because that won't\r
                        // run if the SD card is present at startup.\r
@@ -136,6 +143,7 @@ void mainLoop()
                                USBD_Start(&hUsbDeviceFS);\r
                                isUsbStarted = 1;\r
                        }\r
+       */\r
                }\r
                else\r
                {\r
index f7b30d39c9e0e453744fe33a867d8faa78f9c897..a9e71482f69439a5fba1ec054fc5c41a12e858ea 100755 (executable)
@@ -263,7 +263,7 @@ uint8_t *  USBD_FS_ConfigStrDescriptor( USBD_SpeedTypeDef speed , uint16_t *leng
 }
 
 /**
-* @brief  USBD_HS_InterfaceStrDescriptor 
+* @brief  USBD_FS_InterfaceStrDescriptor 
 *         return the interface string descriptor
 * @param  speed : current device speed
 * @param  length : pointer to data length variable