From b69ac1bce1f5f19a866716ae1da4863f5b654bb9 Mon Sep 17 00:00:00 2001 From: Michael McMaster Date: Mon, 8 Mar 2021 13:25:40 +1000 Subject: [PATCH] STM32Cubemx patches for rev f firmware --- STM32CubeMX/revF.diff | 229 ++++++++++++++++++++++++++++++++++++ STM32CubeMX/revF/Src/fsmc.c | 64 ++++++++-- STM32CubeMX/revF/Src/gpio.c | 20 +--- STM32CubeMX/revF/revF.ioc | 136 ++++++++++++++------- 4 files changed, 383 insertions(+), 66 deletions(-) create mode 100644 STM32CubeMX/revF.diff diff --git a/STM32CubeMX/revF.diff b/STM32CubeMX/revF.diff new file mode 100644 index 00000000..3a63a3bb --- /dev/null +++ b/STM32CubeMX/revF.diff @@ -0,0 +1,229 @@ +diff --git a/STM32CubeMX/revF/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_sd.c b/STM32CubeMX/revF/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_sd.c +index 569c8b1..1b8c51b 100644 +--- a/STM32CubeMX/revF/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_sd.c ++++ b/STM32CubeMX/revF/Drivers/STM32F2xx_HAL_Driver/Src/stm32f2xx_hal_sd.c +@@ -430,6 +430,10 @@ HAL_StatusTypeDef HAL_SD_InitCard(SD_HandleTypeDef *hsd) + /* Enable SDIO Clock */ + __HAL_SD_ENABLE(hsd); + ++ /* 1ms: required power up waiting time before starting the SD initialization ++ sequence */ ++ HAL_Delay(1); ++ + /* Identify card operating voltage */ + errorstate = SD_PowerON(hsd); + if(errorstate != HAL_SD_ERROR_NONE) +@@ -1227,22 +1231,22 @@ HAL_StatusTypeDef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, u + else + { + /* Enable SD DMA transfer */ +- __HAL_SD_DMA_ENABLE(hsd); ++ // MM disabled, as this fails on fast cards. __HAL_SD_DMA_ENABLE(hsd); + + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + add *= 512U; +- } + +- /* Set Block Size for Card */ +- errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); +- if(errorstate != HAL_SD_ERROR_NONE) +- { +- /* Clear all the static flags */ +- __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS); +- hsd->ErrorCode |= errorstate; +- hsd->State = HAL_SD_STATE_READY; +- return HAL_ERROR; ++ /* Set Block Size for Card */ ++ errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); ++ if(errorstate != HAL_SD_ERROR_NONE) ++ { ++ /* Clear all the static flags */ ++ __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS); ++ hsd->ErrorCode |= errorstate; ++ hsd->State = HAL_SD_STATE_READY; ++ return HAL_ERROR; ++ } + } + + /* Configure the SD DPSM (Data Path State Machine) */ +@@ -1252,6 +1256,11 @@ HAL_StatusTypeDef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, u + config.TransferDir = SDIO_TRANSFER_DIR_TO_SDIO; + config.TransferMode = SDIO_TRANSFER_MODE_BLOCK; + config.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_DMA_ENABLE(hsd); ++ + (void)SDIO_ConfigData(hsd->Instance, &config); + + /* Read Blocks in DMA mode */ +@@ -1343,17 +1352,17 @@ HAL_StatusTypeDef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + add *= 512U; +- } + +- /* Set Block Size for Card */ +- errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); +- if(errorstate != HAL_SD_ERROR_NONE) +- { +- /* Clear all the static flags */ +- __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS); +- hsd->ErrorCode |= errorstate; +- hsd->State = HAL_SD_STATE_READY; +- return HAL_ERROR; ++ /* Set Block Size for Card */ ++ errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); ++ if(errorstate != HAL_SD_ERROR_NONE) ++ { ++ /* Clear all the static flags */ ++ __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS); ++ hsd->ErrorCode |= errorstate; ++ hsd->State = HAL_SD_STATE_READY; ++ return HAL_ERROR; ++ } + } + + /* Write Blocks in Polling mode */ +@@ -1361,6 +1370,18 @@ HAL_StatusTypeDef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, + { + hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK | SD_CONTEXT_DMA); + ++ /* MM: Prepare for write */ ++/* TODO ++ SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)(hsd->RCA << 16)); ++ SDIO_CmdInitTypeDef mm_cmdinit; ++ mm_cmdinit.Argument = (uint32_t)NumberOfBlocks; ++ mm_cmdinit.CmdIndex = SDMMC_CMD_SET_BLOCK_COUNT; ++ mm_cmdinit.Response = SDIO_RESPONSE_SHORT; ++ mm_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; ++ mm_cmdinit.CPSM = SDIO_CPSM_ENABLE; ++ (void)SDIO_SendCommand(hsd->Instance, &mm_cmdinit); ++ SDMMC_GetCmdResp1(hsd->Instance, SDMMC_CMD_SET_BLOCK_COUNT, SDIO_CMDTIMEOUT);*/ ++ + /* Write Multi Block command */ + errorstate = SDMMC_CmdWriteMultiBlock(hsd->Instance, add); + } +@@ -1382,7 +1403,7 @@ HAL_StatusTypeDef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, + } + + /* Enable SDIO DMA transfer */ +- __HAL_SD_DMA_ENABLE(hsd); ++ // MM disabled, as this fails on fast cards. __HAL_SD_DMA_ENABLE(hsd); + + /* Enable the DMA Channel */ + if(HAL_DMA_Start_IT(hsd->hdmatx, (uint32_t)pData, (uint32_t)&hsd->Instance->FIFO, (uint32_t)(BLOCKSIZE * NumberOfBlocks)/4U) != HAL_OK) +@@ -1403,6 +1424,11 @@ HAL_StatusTypeDef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, + config.TransferDir = SDIO_TRANSFER_DIR_TO_CARD; + config.TransferMode = SDIO_TRANSFER_MODE_BLOCK; + config.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_DMA_ENABLE(); ++ + (void)SDIO_ConfigData(hsd->Instance, &config); + + return HAL_OK; +diff --git a/STM32CubeMX/revF/Src/sdio.c b/STM32CubeMX/revF/Src/sdio.c +index f2a0b7c..a00c6a8 100644 +--- a/STM32CubeMX/revF/Src/sdio.c ++++ b/STM32CubeMX/revF/Src/sdio.c +@@ -40,6 +40,8 @@ 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; ++ ++ /* + if (HAL_SD_Init(&hsd) != HAL_OK) + { + Error_Handler(); +@@ -47,8 +49,7 @@ void MX_SDIO_SD_Init(void) + if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK) + { + Error_Handler(); +- } +- ++ }*/ + } + + void HAL_SD_MspInit(SD_HandleTypeDef* sdHandle) +diff --git a/STM32CubeMX/revF/Src/spi.c b/STM32CubeMX/revF/Src/spi.c +index 8a452c4..8e4082b 100644 +--- a/STM32CubeMX/revF/Src/spi.c ++++ b/STM32CubeMX/revF/Src/spi.c +@@ -37,6 +37,8 @@ void MX_SPI1_Init(void) + hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; + hspi1.Init.CLKPhase = SPI_PHASE_2EDGE; + hspi1.Init.NSS = SPI_NSS_SOFT; ++ ++ // 13.5Mbaud FPGA device allows up to 25MHz write + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; +diff --git a/STM32CubeMX/revF/Src/usbd_conf.c b/STM32CubeMX/revF/Src/usbd_conf.c +index 65f6102..8e03767 100644 +--- a/STM32CubeMX/revF/Src/usbd_conf.c ++++ b/STM32CubeMX/revF/Src/usbd_conf.c +@@ -357,9 +357,11 @@ USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) + HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_OTG_FS, PCD_ISOOUTIncompleteCallback); + HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_OTG_FS, PCD_ISOINIncompleteCallback); + #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ ++ // Combined RX + TX fifo of 0x140 4-byte words (1280 bytes) + HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_FS, 0x80); + HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 0x40); +- HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x80); ++ HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x40); ++ HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 2, 0x40); + } + return USBD_OK; + } +diff --git a/STM32CubeMX/revF/Src/fsmc.c b/STM32CubeMX/revF/Src/fsmc.c +index 03a1b12..1b01446 100644 +--- a/STM32CubeMX/revF/Src/fsmc.c ++++ b/STM32CubeMX/revF/Src/fsmc.c +@@ -50,12 +50,28 @@ void MX_FSMC_Init(void) + hsram1.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE; + hsram1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE; + /* Timing */ ++ ++ // 1 clock to read the address, + 1 for synchroniser skew + Timing.AddressSetupTime = 2; + Timing.AddressHoldTime = 1; ++ ++ // Writes to device: ++ // 1 for synchroniser skew (dbx also delayed) ++ // 1 to skip hold time ++ // 1 to write data. ++ ++ // Reads from device: ++ // 3 for syncroniser ++ // 1 to write back to fsmc bus. + Timing.DataSetupTime = 4; ++ ++ // Allow a clock for us to release signals ++ // Need to avoid both devices acting as outputs ++ // on the multiplexed lines at the same time. + Timing.BusTurnAroundDuration = 1; +- Timing.CLKDivision = 16; +- Timing.DataLatency = 17; ++ ++ Timing.CLKDivision = 16; // Ignored for async ++ Timing.DataLatency = 17; // Ignored for async + Timing.AccessMode = FSMC_ACCESS_MODE_A; + /* ExtTiming */ + +@@ -105,6 +121,10 @@ static void HAL_FSMC_MspInit(void){ + PE0 ------> FSMC_NBL0 + PE1 ------> FSMC_NBL1 + */ ++ ++ // MM: GPIO_SPEED_FREQ_MEDIUM is rated up to 50MHz, which is fine as all the ++ // fsmc timings are > 1 (ie. so clock speed / 2 is around 50MHz). ++ + /* GPIO_InitStruct */ + GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 + |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 + diff --git a/STM32CubeMX/revF/Src/fsmc.c b/STM32CubeMX/revF/Src/fsmc.c index 1f2554d3..1b01446f 100644 --- a/STM32CubeMX/revF/Src/fsmc.c +++ b/STM32CubeMX/revF/Src/fsmc.c @@ -39,7 +39,7 @@ void MX_FSMC_Init(void) hsram1.Init.NSBank = FSMC_NORSRAM_BANK1; hsram1.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_ENABLE; hsram1.Init.MemoryType = FSMC_MEMORY_TYPE_PSRAM; - hsram1.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_8; + hsram1.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16; hsram1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE; hsram1.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW; hsram1.Init.WrapMode = FSMC_WRAP_MODE_DISABLE; @@ -50,12 +50,28 @@ void MX_FSMC_Init(void) hsram1.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE; hsram1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE; /* Timing */ + + // 1 clock to read the address, + 1 for synchroniser skew Timing.AddressSetupTime = 2; Timing.AddressHoldTime = 1; + + // Writes to device: + // 1 for synchroniser skew (dbx also delayed) + // 1 to skip hold time + // 1 to write data. + + // Reads from device: + // 3 for syncroniser + // 1 to write back to fsmc bus. Timing.DataSetupTime = 4; + + // Allow a clock for us to release signals + // Need to avoid both devices acting as outputs + // on the multiplexed lines at the same time. Timing.BusTurnAroundDuration = 1; - Timing.CLKDivision = 16; - Timing.DataLatency = 17; + + Timing.CLKDivision = 16; // Ignored for async + Timing.DataLatency = 17; // Ignored for async Timing.AccessMode = FSMC_ACCESS_MODE_A; /* ExtTiming */ @@ -86,6 +102,14 @@ static void HAL_FSMC_MspInit(void){ PE8 ------> FSMC_DA5 PE9 ------> FSMC_DA6 PE10 ------> FSMC_DA7 + PE11 ------> FSMC_DA8 + PE12 ------> FSMC_DA9 + PE13 ------> FSMC_DA10 + PE14 ------> FSMC_DA11 + PE15 ------> FSMC_DA12 + PD8 ------> FSMC_DA13 + PD9 ------> FSMC_DA14 + PD10 ------> FSMC_DA15 PD14 ------> FSMC_DA0 PD15 ------> FSMC_DA1 PD0 ------> FSMC_DA2 @@ -94,9 +118,17 @@ static void HAL_FSMC_MspInit(void){ PD5 ------> FSMC_NWE PD7 ------> FSMC_NE1 PB7 ------> FSMC_NL + PE0 ------> FSMC_NBL0 + PE1 ------> FSMC_NBL1 */ + + // MM: GPIO_SPEED_FREQ_MEDIUM is rated up to 50MHz, which is fine as all the + // fsmc timings are > 1 (ie. so clock speed / 2 is around 50MHz). + /* GPIO_InitStruct */ - GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10; + GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 + |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 + |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; @@ -105,8 +137,9 @@ static void HAL_FSMC_MspInit(void){ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /* GPIO_InitStruct */ - GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1 - |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_7; + GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_14 + |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4 + |GPIO_PIN_5|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; @@ -156,6 +189,14 @@ static void HAL_FSMC_MspDeInit(void){ PE8 ------> FSMC_DA5 PE9 ------> FSMC_DA6 PE10 ------> FSMC_DA7 + PE11 ------> FSMC_DA8 + PE12 ------> FSMC_DA9 + PE13 ------> FSMC_DA10 + PE14 ------> FSMC_DA11 + PE15 ------> FSMC_DA12 + PD8 ------> FSMC_DA13 + PD9 ------> FSMC_DA14 + PD10 ------> FSMC_DA15 PD14 ------> FSMC_DA0 PD15 ------> FSMC_DA1 PD0 ------> FSMC_DA2 @@ -164,12 +205,17 @@ static void HAL_FSMC_MspDeInit(void){ PD5 ------> FSMC_NWE PD7 ------> FSMC_NE1 PB7 ------> FSMC_NL + PE0 ------> FSMC_NBL0 + PE1 ------> FSMC_NBL1 */ - HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10); + HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 + |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 + |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1); - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1 - |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_7); + HAL_GPIO_DeInit(GPIOD, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_14 + |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4 + |GPIO_PIN_5|GPIO_PIN_7); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_7); diff --git a/STM32CubeMX/revF/Src/gpio.c b/STM32CubeMX/revF/Src/gpio.c index c3b55254..aa6ccff0 100644 --- a/STM32CubeMX/revF/Src/gpio.c +++ b/STM32CubeMX/revF/Src/gpio.c @@ -117,14 +117,6 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - /*Configure GPIO pins : PE11 PE12 PE13 PE14 - PE15 PE0 PE1 */ - GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 - |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1; - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - /*Configure GPIO pins : PBPin PBPin */ GPIO_InitStruct.Pin = UNUSED_PB12_Pin|UNUSED_PB13_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; @@ -137,12 +129,6 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - /*Configure GPIO pins : PD8 PD9 PD10 PD6 */ - GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_6; - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - GPIO_InitStruct.Pull = GPIO_NOPULL; - 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; @@ -178,6 +164,12 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_NOPULL; 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 pins : PBPin PBPin */ GPIO_InitStruct.Pin = nSD_WP_Pin|nSD_CD_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; diff --git a/STM32CubeMX/revF/revF.ioc b/STM32CubeMX/revF/revF.ioc index cc617ae2..0758f95b 100644 --- a/STM32CubeMX/revF/revF.ioc +++ b/STM32CubeMX/revF/revF.ioc @@ -104,47 +104,57 @@ Mcu.Pin28=PE8 Mcu.Pin29=PE9 Mcu.Pin3=PE5 Mcu.Pin30=PE10 -Mcu.Pin31=PB10 -Mcu.Pin32=PB11 -Mcu.Pin33=PB12 -Mcu.Pin34=PB13 -Mcu.Pin35=PD11 -Mcu.Pin36=PD12 -Mcu.Pin37=PD13 -Mcu.Pin38=PD14 -Mcu.Pin39=PD15 +Mcu.Pin31=PE11 +Mcu.Pin32=PE12 +Mcu.Pin33=PE13 +Mcu.Pin34=PE14 +Mcu.Pin35=PE15 +Mcu.Pin36=PB10 +Mcu.Pin37=PB11 +Mcu.Pin38=PB12 +Mcu.Pin39=PB13 Mcu.Pin4=PE6 -Mcu.Pin40=PC6 -Mcu.Pin41=PC7 -Mcu.Pin42=PC8 -Mcu.Pin43=PC9 -Mcu.Pin44=PA8 -Mcu.Pin45=PA11 -Mcu.Pin46=PA12 -Mcu.Pin47=PC10 -Mcu.Pin48=PC11 -Mcu.Pin49=PC12 +Mcu.Pin40=PD8 +Mcu.Pin41=PD9 +Mcu.Pin42=PD10 +Mcu.Pin43=PD11 +Mcu.Pin44=PD12 +Mcu.Pin45=PD13 +Mcu.Pin46=PD14 +Mcu.Pin47=PD15 +Mcu.Pin48=PC6 +Mcu.Pin49=PC7 Mcu.Pin5=PC13 -Mcu.Pin50=PD0 -Mcu.Pin51=PD1 -Mcu.Pin52=PD2 -Mcu.Pin53=PD3 -Mcu.Pin54=PD4 -Mcu.Pin55=PD5 -Mcu.Pin56=PD7 -Mcu.Pin57=PB5 -Mcu.Pin58=PB6 -Mcu.Pin59=PB7 +Mcu.Pin50=PC8 +Mcu.Pin51=PC9 +Mcu.Pin52=PA8 +Mcu.Pin53=PA11 +Mcu.Pin54=PA12 +Mcu.Pin55=PC10 +Mcu.Pin56=PC11 +Mcu.Pin57=PC12 +Mcu.Pin58=PD0 +Mcu.Pin59=PD1 Mcu.Pin6=PC14-OSC32_IN -Mcu.Pin60=PB8 -Mcu.Pin61=PB9 -Mcu.Pin62=VP_SYS_VS_Systick -Mcu.Pin63=VP_TIM4_VS_ControllerModeClock -Mcu.Pin64=VP_USB_DEVICE_VS_USB_DEVICE_MSC_FS +Mcu.Pin60=PD2 +Mcu.Pin61=PD3 +Mcu.Pin62=PD4 +Mcu.Pin63=PD5 +Mcu.Pin64=PD7 +Mcu.Pin65=PB5 +Mcu.Pin66=PB6 +Mcu.Pin67=PB7 +Mcu.Pin68=PB8 +Mcu.Pin69=PB9 Mcu.Pin7=PC15-OSC32_OUT +Mcu.Pin70=PE0 +Mcu.Pin71=PE1 +Mcu.Pin72=VP_SYS_VS_Systick +Mcu.Pin73=VP_TIM4_VS_ControllerModeClock +Mcu.Pin74=VP_USB_DEVICE_VS_USB_DEVICE_MSC_FS Mcu.Pin8=PH0-OSC_IN Mcu.Pin9=PH1-OSC_OUT -Mcu.PinsNb=65 +Mcu.PinsNb=75 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F205VCTx @@ -356,12 +366,16 @@ PCC.Temperature=25 PCC.Vdd=3.3 PD0.GPIOParameters=GPIO_Speed_High_Default PD0.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM -PD0.Mode=8b-da1 +PD0.Mode=16b-da1 PD0.Signal=FSMC_DA2 PD1.GPIOParameters=GPIO_Speed_High_Default PD1.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM -PD1.Mode=8b-da1 +PD1.Mode=16b-da1 PD1.Signal=FSMC_DA3 +PD10.GPIOParameters=GPIO_Speed_High_Default +PD10.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM +PD10.Mode=16b-da1 +PD10.Signal=FSMC_DA15 PD11.GPIOParameters=GPIO_PuPd,GPIO_Label PD11.GPIO_Label=UNUSED_PD11 PD11.GPIO_PuPd=GPIO_PULLDOWN @@ -376,11 +390,11 @@ PD13.Locked=true PD13.Signal=GPIO_Output PD14.GPIOParameters=GPIO_Speed_High_Default PD14.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM -PD14.Mode=8b-da1 +PD14.Mode=16b-da1 PD14.Signal=FSMC_DA0 PD15.GPIOParameters=GPIO_Speed_High_Default PD15.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM -PD15.Mode=8b-da1 +PD15.Mode=16b-da1 PD15.Signal=FSMC_DA1 PD2.GPIOParameters=GPIO_PuPd PD2.GPIO_PuPd=GPIO_PULLUP @@ -403,10 +417,46 @@ PD7.GPIOParameters=GPIO_Speed_High_Default 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_FREQ_MEDIUM +PD8.Mode=16b-da1 +PD8.Signal=FSMC_DA13 +PD9.GPIOParameters=GPIO_Speed_High_Default +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_FREQ_MEDIUM +PE0.Mode=2ByteEnable1 +PE0.Signal=FSMC_NBL0 +PE1.GPIOParameters=GPIO_Speed_High_Default +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_FREQ_MEDIUM -PE10.Mode=8b-da1 +PE10.Mode=16b-da1 PE10.Signal=FSMC_DA7 +PE11.GPIOParameters=GPIO_Speed_High_Default +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_FREQ_MEDIUM +PE12.Mode=16b-da1 +PE12.Signal=FSMC_DA9 +PE13.GPIOParameters=GPIO_Speed_High_Default +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_FREQ_MEDIUM +PE14.Mode=16b-da1 +PE14.Signal=FSMC_DA11 +PE15.GPIOParameters=GPIO_Speed_High_Default +PE15.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM +PE15.Mode=16b-da1 +PE15.Signal=FSMC_DA12 PE2.GPIOParameters=GPIO_PuPd,GPIO_Label PE2.GPIO_Label=FPGA_GPIO2 PE2.GPIO_PuPd=GPIO_PULLDOWN @@ -431,15 +481,15 @@ PE6.Locked=true PE6.Signal=GPIO_Input PE7.GPIOParameters=GPIO_Speed_High_Default PE7.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM -PE7.Mode=8b-da1 +PE7.Mode=16b-da1 PE7.Signal=FSMC_DA4 PE8.GPIOParameters=GPIO_Speed_High_Default PE8.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM -PE8.Mode=8b-da1 +PE8.Mode=16b-da1 PE8.Signal=FSMC_DA5 PE9.GPIOParameters=GPIO_Speed_High_Default PE9.GPIO_Speed_High_Default=GPIO_SPEED_FREQ_MEDIUM -PE9.Mode=8b-da1 +PE9.Mode=16b-da1 PE9.Signal=FSMC_DA6 PH0-OSC_IN.Mode=HSE-External-Oscillator PH0-OSC_IN.Signal=RCC_OSC_IN -- 2.38.5