/**************************************************************************//**
|
* @file usb.c
|
* @version V1.00
|
* $Revision: 2 $
|
* $Date: 20/08/04 14:25 $
|
* @brief Panchip series usb driver source file
|
*
|
* @note
|
* Copyright (C) 2020 Panchip Technology Corp. All rights reserved.
|
*****************************************************************************/
|
|
#include "PanSeries.h"
|
#include "usb.h"
|
|
/**
|
* @brief This function read usb fifo
|
* @param[in] u32EPn: endpoint number
|
* @param[in] u32Size: data size
|
* @param[in] pDst: data destination
|
* @return None
|
*/
|
void USB_Read(uint32_t u32EPn, uint32_t u32Size, void * pDst)
|
{
|
uint8_t *tmp = (uint8_t *)pDst;
|
uint8_t *nAddr;
|
|
nAddr = &((uint8_t *)&USB->FIFO_EP0)[u32EPn<<2];
|
|
if(u32Size){
|
while (u32Size) {
|
*tmp++ = *nAddr;
|
u32Size--;
|
}
|
}
|
}
|
|
|
/**
|
* @brief This function write usb fifo
|
* @param[in] nEP: endpoint number
|
* @param[in] nBytes: data size
|
* @param[in] pSrc: data source
|
* @return None
|
*/
|
void USB_Write(uint32_t u32EPn, uint32_t u32Size, void * pSrc)
|
{
|
uint8_t *nAddr;
|
uint8_t *tmp = (uint8_t *)pSrc;
|
|
nAddr = &((uint8_t *)&USB->FIFO_EP0)[u32EPn<<2];
|
|
if(u32Size){
|
while (u32Size) {
|
*nAddr = *tmp++;
|
u32Size--;
|
}
|
}
|
}
|