Committer:
Sergunb
Date:
Mon Sep 04 12:03:42 2017 +0000
Revision:
0:f1834a63f7c1
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sergunb 0:f1834a63f7c1 1 /******************** (C) COPYRIGHT 2010 STMicroelectronics ********************
Sergunb 0:f1834a63f7c1 2 * File Name : usb_mem.c
Sergunb 0:f1834a63f7c1 3 * Author : MCD Application Team
Sergunb 0:f1834a63f7c1 4 * Version : V3.2.1
Sergunb 0:f1834a63f7c1 5 * Date : 07/05/2010
Sergunb 0:f1834a63f7c1 6 * Description : Utility functions for memory transfers to/from PMA
Sergunb 0:f1834a63f7c1 7 ********************************************************************************
Sergunb 0:f1834a63f7c1 8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
Sergunb 0:f1834a63f7c1 9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
Sergunb 0:f1834a63f7c1 10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
Sergunb 0:f1834a63f7c1 11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
Sergunb 0:f1834a63f7c1 12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
Sergunb 0:f1834a63f7c1 13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
Sergunb 0:f1834a63f7c1 14 *******************************************************************************/
Sergunb 0:f1834a63f7c1 15 #ifndef STM32F10X_CL
Sergunb 0:f1834a63f7c1 16
Sergunb 0:f1834a63f7c1 17 /* Includes ------------------------------------------------------------------*/
Sergunb 0:f1834a63f7c1 18 #include "usb_lib.h"
Sergunb 0:f1834a63f7c1 19
Sergunb 0:f1834a63f7c1 20 /* Private typedef -----------------------------------------------------------*/
Sergunb 0:f1834a63f7c1 21 /* Private define ------------------------------------------------------------*/
Sergunb 0:f1834a63f7c1 22 /* Private macro -------------------------------------------------------------*/
Sergunb 0:f1834a63f7c1 23 /* Private variables ---------------------------------------------------------*/
Sergunb 0:f1834a63f7c1 24 /* Extern variables ----------------------------------------------------------*/
Sergunb 0:f1834a63f7c1 25 /* Private function prototypes -----------------------------------------------*/
Sergunb 0:f1834a63f7c1 26 /* Private functions ---------------------------------------------------------*/
Sergunb 0:f1834a63f7c1 27 /*******************************************************************************
Sergunb 0:f1834a63f7c1 28 * Function Name : UserToPMABufferCopy
Sergunb 0:f1834a63f7c1 29 * Description : Copy a buffer from user memory area to packet memory area (PMA)
Sergunb 0:f1834a63f7c1 30 * Input : - pbUsrBuf: pointer to user memory area.
Sergunb 0:f1834a63f7c1 31 * - wPMABufAddr: address into PMA.
Sergunb 0:f1834a63f7c1 32 * - wNBytes: no. of bytes to be copied.
Sergunb 0:f1834a63f7c1 33 * Output : None.
Sergunb 0:f1834a63f7c1 34 * Return : None .
Sergunb 0:f1834a63f7c1 35 *******************************************************************************/
Sergunb 0:f1834a63f7c1 36 void UserToPMABufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes)
Sergunb 0:f1834a63f7c1 37 {
Sergunb 0:f1834a63f7c1 38 uint32_t n = (wNBytes + 1) >> 1; /* n = (wNBytes + 1) / 2 */
Sergunb 0:f1834a63f7c1 39 uint32_t i, temp1;
Sergunb 0:f1834a63f7c1 40 uint16_t *pdwVal;
Sergunb 0:f1834a63f7c1 41 pdwVal = (uint16_t *)(wPMABufAddr * 2 + PMAAddr);
Sergunb 0:f1834a63f7c1 42 for (i = n; i != 0; i--)
Sergunb 0:f1834a63f7c1 43 {
Sergunb 0:f1834a63f7c1 44 temp1 = (uint16_t) * pbUsrBuf;
Sergunb 0:f1834a63f7c1 45 pbUsrBuf++;
Sergunb 0:f1834a63f7c1 46 *pdwVal++ = temp1 | (uint16_t) * pbUsrBuf << 8;
Sergunb 0:f1834a63f7c1 47 pdwVal++;
Sergunb 0:f1834a63f7c1 48 pbUsrBuf++;
Sergunb 0:f1834a63f7c1 49 }
Sergunb 0:f1834a63f7c1 50 }
Sergunb 0:f1834a63f7c1 51 /*******************************************************************************
Sergunb 0:f1834a63f7c1 52 * Function Name : PMAToUserBufferCopy
Sergunb 0:f1834a63f7c1 53 * Description : Copy a buffer from user memory area to packet memory area (PMA)
Sergunb 0:f1834a63f7c1 54 * Input : - pbUsrBuf = pointer to user memory area.
Sergunb 0:f1834a63f7c1 55 * - wPMABufAddr = address into PMA.
Sergunb 0:f1834a63f7c1 56 * - wNBytes = no. of bytes to be copied.
Sergunb 0:f1834a63f7c1 57 * Output : None.
Sergunb 0:f1834a63f7c1 58 * Return : None.
Sergunb 0:f1834a63f7c1 59 *******************************************************************************/
Sergunb 0:f1834a63f7c1 60 void PMAToUserBufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes)
Sergunb 0:f1834a63f7c1 61 {
Sergunb 0:f1834a63f7c1 62 uint32_t n = (wNBytes + 1) >> 1;/* /2*/
Sergunb 0:f1834a63f7c1 63 uint32_t i;
Sergunb 0:f1834a63f7c1 64 uint32_t *pdwVal;
Sergunb 0:f1834a63f7c1 65 pdwVal = (uint32_t *)(wPMABufAddr * 2 + PMAAddr);
Sergunb 0:f1834a63f7c1 66 for (i = n; i != 0; i--)
Sergunb 0:f1834a63f7c1 67 {
Sergunb 0:f1834a63f7c1 68 *(uint16_t*)pbUsrBuf++ = *pdwVal++;
Sergunb 0:f1834a63f7c1 69 pbUsrBuf++;
Sergunb 0:f1834a63f7c1 70 }
Sergunb 0:f1834a63f7c1 71 }
Sergunb 0:f1834a63f7c1 72
Sergunb 0:f1834a63f7c1 73 #endif /* STM32F10X_CL */
Sergunb 0:f1834a63f7c1 74 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/