Committer:
Sergunb
Date:
Mon Sep 04 12:04:13 2017 +0000
Revision:
0:8f0d870509fe
Initial commit

Who changed what in which revision?

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