atmelusbci.c

来自「这个是一个完整的MP3项目」· C语言 代码 · 共 70 行

C
70
字号
/*
* Copyright (c) 2004,北京博创兴业科技有限公司
* All rights reserved.
* 
* 文件名称:atmelusbci.c
* 文件标识:atmelusbci
* 摘    要:USB操作相应函数定义
* 
* 当前版本:2.0
* 作    者:Kent
* 完成日期:2004年5月20日
*
* 取代版本:1.1 
* 原作者  :Frank
* 完成日期:2003年8月10日
*/

#include "REGSND1.H"
#include "atmelusbci.h"

#define OSCclk 	20

int AtmelUSBInit(unsigned char NDIV, unsigned int RDIV, unsigned char USBCD)
{
	int i;
	//set PLL CLK
	
//	PLLclk=(OSCclk*(RDIV+1))/(int)(NDIV+1);
//	USBclk=PLLclk/(int)(USBCD+1);
	
	CKCON |= X2;//Set to select 6 clock periods per machine cycle
	PLLNDIV	=	0x7f&NDIV;//set NDIV
	PLLCON	|=	(0x3&RDIV) << 6;//set RDIV
	PLLRDIV	=	(0x3ff&RDIV) >> 2;

	USBCLK = USBCD&0x03;

	PLLCON &= (~PLLRES);//Enable PLL
	PLLCON |= PLLEN;


	//USBCON Register
	USBCON &= (~USBE);
	for (i=0; i<3000; i++)
	USBCON |= USBE;
	return (0);
}

void EpEnable(void)
{

	UEPNUM = 0x00;//Ep0 as control Endpoint
	UEPCONX = 0x80;

	UEPNUM = 0x01;//Ep1 as Bulk-in Endpoint
	UEPCONX = 0x86;

	UEPNUM = 0x02;//Ep2 as Bulk-out Endpoint
	UEPCONX = 0x82;

	UEPRST = 0x07;//rest FIFO 
	UEPRST = 0x00;

	UEPIEN = 0x07;//Endpoint Interrupt Enable

	USBIEN |= EEOFINT;
	USBADDR = FEN;//Function Enable
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?