2015-06-17 12:34 AM
Hi,
I have an STM3240G-EVAL board and I try to configure the USB-HS with the SD-Card. I have seleccted: - USB-OTG-HS: External Phy - Device_Only - SDIO: Mode - SD 1 bit - USB_DEVICE: Class For HS IP: Mass Storage Class And I have only generated the code. I have not change anything. In the code I change it:/**
******************************************************************************
* @file : usbd_storage_if.c
* @brief : Memory management layer
******************************************************************************
* COPYRIGHT(c) 2015 STMicroelectronics
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include ''usbd_storage_if.h''
#include ''stm32f4xx_hal_sd.h''
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* USB handler declaration */
/* Handle for USB High Speed IP */
USBD_HandleTypeDef *hUsbDevice_1;
extern
USBD_HandleTypeDef hUsbDeviceHS;
extern
SD_HandleTypeDef hsd;
extern
HAL_SD_CardInfoTypedef SDCardInfo;
/* Private function prototypes -----------------------------------------------*/
/* Extern function prototypes ------------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
#define STORAGE_LUN_NBR 1
#define STORAGE_BLK_NBR 0x10000
#define STORAGE_BLK_SIZ 0x200
static
int8_t STORAGE_Init_HS (uint8_t lun);
static
int8_t STORAGE_GetCapacity_HS (uint8_t lun,
uint32_t *block_num,
uint16_t *block_size);
static
int8_t STORAGE_IsReady_HS (uint8_t lun);
static
int8_t STORAGE_IsWriteProtected_HS (uint8_t lun);
static
int8_t STORAGE_Read_HS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len);
static
int8_t STORAGE_Write_HS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len);
static
int8_t STORAGE_GetMaxLun_HS (
void
);
/* USER CODE BEGIN 1 */
/* USB Mass storage Standard Inquiry Data */
const
int8_t STORAGE_Inquirydata_HS[] = {
//36
/* LUN 0 */
0x00,
0x80,
0x02,
0x02,
(STANDARD_INQUIRY_DATA_LEN - 5),
0x00,
0x00,
0x00,
'S'
,
'T'
,
'M'
,
' '
,
' '
,
' '
,
' '
,
' '
,
/* Manufacturer : 8 bytes */
'P'
,
'r'
,
'o'
,
'd'
,
'u'
,
'c'
,
't'
,
' '
,
/* Product : 16 Bytes */
' '
,
' '
,
' '
,
' '
,
' '
,
' '
,
' '
,
' '
,
'0'
,
'.'
,
'0'
,
'1'
,
/* Version : 4 Bytes */
};
/* USER CODE END 1 */
USBD_StorageTypeDef USBD_Storage_Interface_fops_HS =
{
STORAGE_Init_HS,
STORAGE_GetCapacity_HS,
STORAGE_IsReady_HS,
STORAGE_IsWriteProtected_HS,
STORAGE_Read_HS,
STORAGE_Write_HS,
STORAGE_GetMaxLun_HS,
(int8_t *)STORAGE_Inquirydata_HS,
};
/*******************************************************************************
* Function Name : STORAGE_Init_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_Init_HS (uint8_t lun)
{
/* USER CODE BEGIN 9 */
return
(USBD_OK);
/* USER CODE END 9 */
}
/*******************************************************************************
* Function Name : STORAGE_GetCapacity_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_GetCapacity_HS (uint8_t lun, uint32_t *block_num, uint16_t *block_size)
{
/* USER CODE BEGIN 10 */
HAL_SD_Get_CardInfo (&hsd, &SDCardInfo);
* block_num = SDCardInfo.CardCapacity / SDCardInfo.CardBlockSize;
* block_size = SDCardInfo.CardBlockSize;
return
(USBD_OK);
/* USER CODE END 10 */
}
/*******************************************************************************
* Function Name : STORAGE_IsReady_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_IsReady_HS (uint8_t lun)
{
/* USER CODE BEGIN 11 */
return
(USBD_OK);
/* USER CODE END 11 */
}
/*******************************************************************************
* Function Name : STORAGE_IsWriteProtected_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_IsWriteProtected_HS (uint8_t lun)
{
/* USER CODE BEGIN 12 */
return
(USBD_OK);
/* USER CODE END 12 */
}
/*******************************************************************************
* Function Name : STORAGE_Read_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_Read_HS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len)
{
HAL_SD_Get_CardInfo (&hsd, &SDCardInfo);
HAL_SD_ReadBlocks(&hsd, (uint32_t*)buf, (uint64_t)(blk_addr * SDCardInfo.CardBlockSize), SDCardInfo.CardBlockSize, blk_len);
return
(USBD_OK);
/* USER CODE END 13 */
}
/*******************************************************************************
* Function Name : STORAGE_Write_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_Write_HS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len)
{
HAL_SD_Get_CardInfo (&hsd, &SDCardInfo);
HAL_SD_WriteBlocks(&hsd, (uint32_t*)buf, (uint64_t)(blk_addr * SDCardInfo.CardBlockSize), SDCardInfo.CardBlockSize, blk_len);
return
(USBD_OK);
/* USER CODE END 14 */
}
/*******************************************************************************
* Function Name : STORAGE_GetMaxLun_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_GetMaxLun_HS (
void
)
{
/* USER CODE BEGIN 15 */
return
(STORAGE_LUN_NBR - 1);
/* USER CODE END 15 */
}
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
And when I conect the USB i have the error Code 10 in windows.
What's wrong??
Thanks
2015-06-22 06:16 AM
2015-12-06 05:01 AM
Hi!
file startup_stm32f4??xe.s must be increased Heap_SizeHeap_Size EQU 0x00000400After solving this problem. I have a problem: the connection I see the message that is not formatted flash cards2015-12-06 06:09 AM
I have a problem: the connection I see the message that is not formatted flash cards
I'd probably pay more attention to the 64-bit casting