From 194bd7fdb9c0ffd66f7c574c2854f396c2a8ab93 Mon Sep 17 00:00:00 2001 From: jaseg Date: Sat, 17 Nov 2018 11:35:25 +0900 Subject: Initial schematic commit --- usbh_conf.c | 434 ------------------------------------------------------------ 1 file changed, 434 deletions(-) delete mode 100644 usbh_conf.c (limited to 'usbh_conf.c') diff --git a/usbh_conf.c b/usbh_conf.c deleted file mode 100644 index 851c4ff..0000000 --- a/usbh_conf.c +++ /dev/null @@ -1,434 +0,0 @@ -/** - ****************************************************************************** - * @file USB_Host/HID_Standalone/Src/usbh_conf.c - * @author MCD Application Team - * @version V1.1.0 - * @date 17-February-2017 - * @brief USB Host configuration file. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2017 STMicroelectronics International N.V. - * All rights reserved.

- * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted, provided that the following conditions are met: - * - * 1. Redistribution 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 other - * contributors to this software may be used to endorse or promote products - * derived from this software without specific written permission. - * 4. This software, including modifications and/or derivative works of this - * software, must execute solely and exclusively on microcontroller or - * microprocessor devices manufactured by or for STMicroelectronics. - * 5. Redistribution and use of this software other than as permitted under - * this license is void and will automatically terminate your rights under - * this license. - * - * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY - * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT - * SHALL STMICROELECTRONICS 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 "stm32f4xx_hal.h" -#include "usbh_core.h" - -HCD_HandleTypeDef hhcd; - -/******************************************************************************* - HCD BSP Routines -*******************************************************************************/ -/** - * @brief Initializes the HCD MSP. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_MspInit(HCD_HandleTypeDef* hhcd) -{ - GPIO_InitTypeDef GPIO_InitStruct; - - /* Configure USB FS GPIOs */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - - GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12); - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = GPIO_PIN_10; - GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* Configure POWER_SWITCH IO pin */ - __HAL_RCC_GPIOB_CLK_ENABLE(); - GPIO_InitStruct.Pin = GPIO_PIN_2; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - /* Enable USB FS Clocks */ - __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); - - /* Set USBFS Interrupt priority */ - HAL_NVIC_SetPriority(OTG_FS_IRQn, 6, 0); - - /* Enable USBFS Interrupt */ - HAL_NVIC_EnableIRQ(OTG_FS_IRQn); -} - -/** - * @brief DeInitializes the HCD MSP. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_MspDeInit(HCD_HandleTypeDef* hhcd) -{ - /* Disable USB FS Clocks */ - __HAL_RCC_USB_OTG_FS_CLK_DISABLE(); -} - -/******************************************************************************* - LL Driver Callbacks (HCD -> USB Host Library) -*******************************************************************************/ - -/** - * @brief SOF callback. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_SOF_Callback(HCD_HandleTypeDef* hhcd) -{ - USBH_LL_IncTimer(hhcd->pData); -} - -/** - * @brief Connect callback. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_Connect_Callback(HCD_HandleTypeDef* hhcd) -{ - USBH_LL_Connect(hhcd->pData); -} - -/** - * @brief Disconnect callback. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef* hhcd) -{ - USBH_LL_Disconnect(hhcd->pData); -} - -/** - * @brief Notify URB state change callback. - * @param hhcd: HCD handle - * @param chnum: Channel number - * @param urb_state: URB State - * @retval None - */ -void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef* hhcd, uint8_t chnum, - HCD_URBStateTypeDef urb_state) -{ - /* To be used with OS to sync URB state with the global state machine */ -} - -/******************************************************************************* - LL Driver Interface (USB Host Library --> HCD) -*******************************************************************************/ -/** - * @brief USBH_LL_Init - * Initialize the Low Level portion of the Host driver. - * @param phost: Host handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_Init(USBH_HandleTypeDef* phost) -{ - /* Set the LL Driver parameters */ - hhcd.Instance = USB_OTG_FS; - hhcd.Init.Host_channels = 11; - hhcd.Init.dma_enable = 0; - hhcd.Init.low_power_enable = 0; - hhcd.Init.phy_itface = HCD_PHY_EMBEDDED; - hhcd.Init.Sof_enable = 0; - hhcd.Init.speed = HCD_SPEED_FULL; - hhcd.Init.vbus_sensing_enable = 0; - hhcd.Init.lpm_enable = 0; - - /* Link the driver to the stack */ - hhcd.pData = phost; - phost->pData = &hhcd; - - /* Initialize the LL Driver */ - HAL_HCD_Init(&hhcd); - - USBH_LL_SetTimer(phost, HAL_HCD_GetCurrentFrame(&hhcd)); - - return USBH_OK; -} - -/** - * @brief De-Initializes the Low Level portion of the Host driver. - * @param phost: Host handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_DeInit(USBH_HandleTypeDef* phost) -{ - HAL_HCD_DeInit(phost->pData); - return USBH_OK; -} - -/** - * @brief Starts the Low Level portion of the Host driver. - * @param phost: Host handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_Start(USBH_HandleTypeDef* phost) -{ - HAL_HCD_Start(phost->pData); - return USBH_OK; -} - -/** - * @brief Stops the Low Level portion of the Host driver. - * @param phost: Host handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_Stop(USBH_HandleTypeDef* phost) -{ - HAL_HCD_Stop(phost->pData); - return USBH_OK; -} - -/** - * @brief Returns the USB Host Speed from the Low Level Driver. - * @param phost: Host handle - * @retval USBH Speeds - */ -USBH_SpeedTypeDef USBH_LL_GetSpeed(USBH_HandleTypeDef* phost) -{ - USBH_SpeedTypeDef speed = USBH_SPEED_FULL; - - switch (HAL_HCD_GetCurrentSpeed(phost->pData)) { - case 0: - speed = USBH_SPEED_HIGH; - break; - - case 1: - speed = USBH_SPEED_FULL; - break; - - case 2: - speed = USBH_SPEED_LOW; - break; - - default: - speed = USBH_SPEED_FULL; - break; - } - return speed; -} - -/** - * @brief Resets the Host Port of the Low Level Driver. - * @param phost: Host handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_ResetPort(USBH_HandleTypeDef* phost) -{ - HAL_HCD_ResetPort(phost->pData); - return USBH_OK; -} - -/** - * @brief Returns the last transferred packet size. - * @param phost: Host handle - * @param pipe: Pipe index - * @retval Packet Size - */ -uint32_t USBH_LL_GetLastXferSize(USBH_HandleTypeDef* phost, uint8_t pipe) -{ - return HAL_HCD_HC_GetXferCount(phost->pData, pipe); -} - -/** - * @brief Opens a pipe of the Low Level Driver. - * @param phost: Host handle - * @param pipe: Pipe index - * @param epnum: Endpoint Number - * @param dev_address: Device USB address - * @param speed: Device Speed - * @param ep_type: Endpoint Type - * @param mps: Endpoint Max Packet Size - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_OpenPipe(USBH_HandleTypeDef* phost, uint8_t pipe, - uint8_t epnum, uint8_t dev_address, - uint8_t speed, uint8_t ep_type, - uint16_t mps) -{ - HAL_HCD_HC_Init(phost->pData, pipe, epnum, dev_address, speed, ep_type, mps); - return USBH_OK; -} - -/** - * @brief Closes a pipe of the Low Level Driver. - * @param phost: Host handle - * @param pipe: Pipe index - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_ClosePipe(USBH_HandleTypeDef* phost, uint8_t pipe) -{ - HAL_HCD_HC_Halt(phost->pData, pipe); - return USBH_OK; -} - -/** - * @brief Submits a new URB to the low level driver. - * @param phost: Host handle - * @param pipe: Pipe index - * This parameter can be a value from 1 to 15 - * @param direction: Channel number - * This parameter can be one of these values: - * 0: Output - * 1: Input - * @param ep_type: Endpoint Type - * This parameter can be one of these values: - * @arg EP_TYPE_CTRL: Control type - * @arg EP_TYPE_ISOC: Isochronous type - * @arg EP_TYPE_BULK: Bulk type - * @arg EP_TYPE_INTR: Interrupt type - * @param token: Endpoint Type - * This parameter can be one of these values: - * @arg 0: PID_SETUP - * @arg 1: PID_DATA - * @param pbuff: pointer to URB data - * @param length: length of URB data - * @param do_ping: activate do ping protocol (for high speed only) - * This parameter can be one of these values: - * 0: do ping inactive - * 1: do ping active - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_SubmitURB(USBH_HandleTypeDef* phost, uint8_t pipe, - uint8_t direction, uint8_t ep_type, - uint8_t token, uint8_t* pbuff, - uint16_t length, uint8_t do_ping) -{ - HAL_HCD_HC_SubmitRequest(phost->pData, pipe, direction, ep_type, token, pbuff, - length, do_ping); - return USBH_OK; -} - -/** - * @brief Gets a URB state from the low level driver. - * @param phost: Host handle - * @param pipe: Pipe index - * This parameter can be a value from 1 to 15 - * @retval URB state - * This parameter can be one of these values: - * @arg URB_IDLE - * @arg URB_DONE - * @arg URB_NOTREADY - * @arg URB_NYET - * @arg URB_ERROR - * @arg URB_STALL - */ -USBH_URBStateTypeDef USBH_LL_GetURBState(USBH_HandleTypeDef* phost, - uint8_t pipe) -{ - return (USBH_URBStateTypeDef)HAL_HCD_HC_GetURBState(phost->pData, pipe); -} - -/** - * @brief Drives VBUS. - * @param phost: Host handle - * @param state: VBUS state - * This parameter can be one of these values: - * 0: VBUS Active - * 1: VBUS Inactive - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_DriverVBUS(USBH_HandleTypeDef* phost, - uint8_t state) -{ - if (state == 0) { - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); - } else { - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); - } - HAL_Delay(200); - return USBH_OK; -} - -/** - * @brief Sets toggle for a pipe. - * @param phost: Host handle - * @param pipe: Pipe index - * @param toggle: toggle (0/1) - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_SetToggle(USBH_HandleTypeDef* phost, uint8_t pipe, - uint8_t toggle) -{ - if (hhcd.hc[pipe].ep_is_in) { - hhcd.hc[pipe].toggle_in = toggle; - } else { - hhcd.hc[pipe].toggle_out = toggle; - } - return USBH_OK; -} - -/** - * @brief Returns the current toggle of a pipe. - * @param phost: Host handle - * @param pipe: Pipe index - * @retval toggle (0/1) - */ -uint8_t USBH_LL_GetToggle(USBH_HandleTypeDef* phost, uint8_t pipe) -{ - uint8_t toggle = 0; - - if (hhcd.hc[pipe].ep_is_in) { - toggle = hhcd.hc[pipe].toggle_in; - } else { - toggle = hhcd.hc[pipe].toggle_out; - } - return toggle; -} - -/** - * @brief Delay routine for the USB Host Library - * @param Delay: Delay in ms - * @retval None - */ -void USBH_Delay(uint32_t Delay) -{ -#if (USBH_USE_OS == 1) - osDelay(Delay); -#else - HAL_Delay(Delay); -#endif -} - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ -- cgit