亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 另一個在mpc8272上產生usb sof幀的demo
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "const_d.h" //   GENERAL CONSTANTS AND DEFINITIONS
#include "mpc8260.h"       /* IMM definitions and declarations */
#include "8270usb.h"       /* USB definitions and declarations */
#include "spr.h"

//#define BASE_ADDR     0x04700000 
#define BASE_ADDR   0x0F000000 // BCSR.cfg

#define BRGCLK 24000000

typedef struct bcsr 
{
	UWORD  bcsr0; /* Board Control and Status Register */
	UWORD  bcsr1;
	UWORD  bcsr2;
	UWORD  bcsr3;

}t_BCSR;
t_BCSR *csr;			  /* Board Control & Status Reg pointer */

typedef struct buffers_descriptor
{
	UHWORD status;
	UHWORD length;
	UWORD  pointer;
}bd ;

#define BASE_EVT 0x0  // Base Address of Exception Vector Table 
#define DEC_INT_VECTOR ((BASE_EVT) + 0x900)  // Base address of decrementer 
#define EXT_INT_VECTOR ((BASE_EVT) + 0x500)  // Base address of external 

#define VECTOR_BLOCK_LEN 0x100

extern UWORD Ex500[];
extern UWORD Ex900[];
t_PQ2IMM  *immr;           /* Internal Memory Map base pointer */

//-------------------------USB
/* USB tokens */
#define IN_TOKEN 0x96
#define OUT_TOKEN 0x87
#define SETUP_TOKEN 0xB4

#define USB_ADR_BD 0x0 //0x0  // offset for address of usb BDs

#define BASE_USB_REGS 0x11B60
#define BASE_USB 0x8B00
#define BASE_USB_ENDPOINTS_PRAM 0x500

t_usb_pram *pram_usb;
usb_regs *reg_usb;
t_usb_endpoint *endp[4];

bd *ep0_txbd[4];
bd *ep0_rxbd[4];  // control

bd *f_txbd[4]; // function
bd *f_rxbd[4];

#define BUF_LEN 0x40
UBYTE ep0_in[4][BUF_LEN];
UBYTE ep0_out[4][BUF_LEN];

UBYTE fep_in[4][BUF_LEN];
UBYTE fep_out[4][BUF_LEN];

UHWORD sl_frame_n;
UBYTE fl_txb, fl_rxb, fl_sof; 
UHWORD max_sof_del;

#define USSFT_OFFSET 0x11B78
UHWORD *ussft;
//=========
UWORD sl1;
//--------------------------------------------------------------------------------
void init_addr(void)
{
    immr = (t_PQ2IMM *)(BASE_ADDR);  /* pointer to MPC8260 internal memory map. */
	reg_usb = (usb_regs *)(BASE_ADDR+BASE_USB_REGS);
	ussft=(UHWORD *)(BASE_ADDR+USSFT_OFFSET);

    csr = (t_BCSR *)(immr->memc_regs[1].br & 0xFFFF8000);
}
//-----------------------end init_addr----------------------------------------------
UWORD calc_brg(UWORD BRG_CLK, UWORD CLK)
{
UWORD clock_div, div16, res;
    div16=0;
    clock_div=(BRG_CLK/CLK)-1;
    if (clock_div>4095) 
    {
       div16=1;
       clock_div=(BRG_CLK/CLK/16)-1;
    }
    clock_div <<= 1;
    res=W15+clock_div+div16;
    return(res);
} 
//--------------------------------end calc_brg--------------------------------
#define PortA 0
#define PortB 1
#define PortC 2
#define PortD 3
void usb_pin_assignment_8272(void)
{
	immr->io_regs[PortD].ppar |= W25;
	immr->io_regs[PortD].psor &=~W25;
	immr->io_regs[PortD].pdir &=~W25;  // USBRXD to PD25; P1_A7
	immr->io_regs[PortD].podr &=~W25;  

	immr->io_regs[PortC].ppar |= W11;
	immr->io_regs[PortC].psor &=~W11;
	immr->io_regs[PortC].pdir &=~W11;  // USBRxP to PC11; P1_D21
	immr->io_regs[PortC].podr &=~W11;

	immr->io_regs[PortC].ppar |= W10;
	immr->io_regs[PortC].psor &=~W10;
	immr->io_regs[PortC].pdir &=~W10;  // USBRxN to PC10; P1_D24
	immr->io_regs[PortC].podr &=~W10;

	immr->io_regs[PortD].ppar |= W23;
	immr->io_regs[PortD].psor &=~W23;
	immr->io_regs[PortD].pdir |= W23;  // USBTxP to PD23; P1_A9
	immr->io_regs[PortD].podr &=~W23;  

	immr->io_regs[PortD].ppar |= W24;
	immr->io_regs[PortD].psor &=~W24;
	immr->io_regs[PortD].pdir |= W24;  // USBTxN to PD24; P1_A8
	immr->io_regs[PortD].podr &=~W24;  

	immr->io_regs[PortC].ppar |= W20;
	immr->io_regs[PortC].psor &=~W20;
	immr->io_regs[PortC].pdir |= W20;  // USBOE to PC20; P1_D12
	immr->io_regs[PortC].podr &=~W20;
}
//-----------------------------end usb_pin_assignment_8272----------------------------------------------------
void usb_clk_assignment_8272(void)
{
/*
immr->brgs_brgc1 =calc_brg(BRGCLK, 6000000);  // enabled CLK
immr->cpm_mux_cmxscr &=~(W21 | W22 | W23); // BRG1 to TX SCC4 (USB clock)
*/
	immr->io_regs[PortC].ppar |= W24;
	immr->io_regs[PortC].psor &=~W24;
	immr->io_regs[PortC].pdir &=~W24;  // CLK8/TIN4 to PC24; P1_D8

	immr->cpm_mux_cmxscr |= (W21 | W22 | W23); // SCC3 transmit/USB clock is clk8

}
//------------------------end usb_clk_assignment_8272-------------------
#define USB_STOP_TX 0x2E60000A // to register CPCR
#define USB_RESTART_TX 0x2E60000B // to register CPCR
void cpm_reset(void)
{
	immr->cpm_cpcr=(UWORD)(W0+W15); 
	while(immr->cpm_cpcr & W15) {}           // wait
}
//------------------------end cpm_reset-------------------
void usb_stop(UBYTE n_ep)
{
	immr->cpm_cpcr=(UWORD)(USB_STOP_TX+(n_ep << 4)+W15); 
	while(immr->cpm_cpcr & W15) {}           // wait
}
//------------------------end usb_stop-------------------
void usb_restart(UBYTE n_ep)
{
	immr->cpm_cpcr=(UWORD)(USB_RESTART_TX+(n_ep << 4)+W15); 
	while(immr->cpm_cpcr & W15) {}           // wait
}
//------------------------end usb_stop-------------------
void flush_restart_ep(UBYTE n_ep)
{
	immr->cpm_cpcr=(UWORD)(USB_STOP_TX+(n_ep << 4)+W15); // stop
	while(immr->cpm_cpcr & W15) {}           // wait
	reg_usb->uscom=(UBYTE)(n_ep | 0x40);
	immr->cpm_cpcr=(UWORD)(USB_RESTART_TX+(n_ep << 4)+W15); // restart
	while(immr->cpm_cpcr & W15) {}           // wait
}
//-------------------end flush_restart_ep-----------------------
void init_usb_host(void)
{
UWORD j,l;
	usb_pin_assignment_8272();
	usb_clk_assignment_8272();

	pram_usb = (t_usb_pram *)(BASE_ADDR +BASE_USB);
	j = BASE_ADDR + USB_ADR_BD;
// control point
	for (l=0; l<4; l++) { ep0_rxbd[l]=(bd *)j; j +=8; }         // 8 is SIZE of BD 
	for (l=0; l<4; l++) { ep0_txbd[l]=(bd *)j; j +=8; }         // 8 is SIZE of BD 
// other point
	for (l=0; l<4; l++) { f_rxbd[l]=(bd *)j; j +=8; }         // 8 is SIZE of BD 
	for (l=0; l<4; l++) { f_txbd[l]=(bd *)j; j +=8; }			// 8 is SIZE of BD 

	j = BASE_ADDR + BASE_USB_ENDPOINTS_PRAM;
	for (l=0; l<4; l++) { endp[l]=(t_usb_endpoint *)j; j +=0x20; }			// 0x20 is SIZE of Endpoint Parameter Block
	for (l=0; l<4; l++) pram_usb->ep_ptr[l]=(UHWORD)endp[l];
	pram_usb->rstate=0;
	pram_usb->frame_n=0;
// control
		endp[0]->rbase=(UHWORD)&(ep0_rxbd[0]->status);
		endp[0]->tbase=(UHWORD)&(ep0_txbd[0]->status);
		endp[0]->rfcr=0x18;
		endp[0]->tfcr=0x18;
		endp[0]->mrblr=0x80;
		endp[0]->rbptr=(UHWORD)&(ep0_rxbd[0]->status);
		endp[0]->tbptr=(UHWORD)&(ep0_txbd[0]->status);
		endp[0]->tstate=0;
		endp[0]->himmmr=BASE_ADDR >> 16;
// Other points	
	for (l=1; l<4; l++)
	{
		endp[l]->rbase=(UHWORD)&(f_rxbd[l]->status);
		endp[l]->tbase=(UHWORD)&(f_txbd[l]->status);
		endp[l]->rfcr=0x18;
		endp[l]->tfcr=0x18;
		endp[l]->mrblr=0x80;
		endp[l]->rbptr=(UHWORD)&(f_rxbd[l]->status);
		endp[l]->tbptr=(UHWORD)&(f_txbd[l]->status);
		endp[l]->tstate=0;
		endp[l]->himmmr=BASE_ADDR >> 16;
	}

	reg_usb->usep[0]=0x0020;  // RTE is cleared
	reg_usb->usep[1]=0x1200;  // EP1
//reg_usb->usep[1]=0x1000;  // EP1
	reg_usb->usmod=6;  // 
//reg_usb->usmod=2;  // 

	reg_usb->usadr=5;

	for (l=0; l<4; l++) 
	{ 
		ep0_txbd[l]->pointer=(UWORD )&ep0_out[l][0];
		ep0_txbd[l]->length=10; 
		ep0_txbd[l]->status=HW2; 
		
		ep0_rxbd[l]->pointer=(UWORD )&ep0_in[l][0];
		ep0_rxbd[l]->length=0; 
		ep0_rxbd[l]->status=HW2; 
	}
	for (l=1; l<4; l++) 
	{ 
		f_txbd[l]->pointer=(UWORD )&fep_out[l][0];
		f_txbd[l]->length=10; 
		f_txbd[l]->status=HW2; 
		
		f_rxbd[l]->pointer=(UWORD )&fep_in[l][0];
		f_rxbd[l]->length=0; 
		f_rxbd[l]->status=HW2; 
	}

	reg_usb->usber = 0xffff;
	reg_usb->usmod |=1;
}
//---------------------end init_usb_host---------------------------------------------------------
void enable_sof_generation(void)
{
	reg_usb->usmod &=~1; // disable USB
	reg_usb->usmod |=8; // enable SOF generation
	immr->cpm_rccr 		 |= 0x00080000;
	reg_usb->usmod |=1;
}
//----------end enable_sof_generation--------------------------
// len-bit I/O -- input byte:  MSB..LSB;   return byte: LSB..MSB
// 8 >= len >= 0
UBYTE reverse8(UBYTE input, UBYTE len)
{
int i;
UBYTE the_reverse = 0;
UBYTE the_bit;
    for(i=0;i<len;i++)
    {
        the_bit = ((input & (1<<i)) != 0);
        the_reverse |= the_bit << ((len-1) - i);
    }
    return the_reverse;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久精品一区二区三区| 久久久久久久久久久久电影| 精品国产91亚洲一区二区三区婷婷| 欧美变态tickle挠乳网站| 中文字幕亚洲区| 国内精品免费**视频| 欧美视频你懂的| 中文字幕一区二区三区av | 欧美精品一区二区不卡| 亚洲免费av高清| 国产sm精品调教视频网站| 欧美精品一二三区| 亚洲一区二区精品久久av| 99久久精品免费精品国产| 久久先锋影音av鲁色资源网| 日本一道高清亚洲日美韩| 日本黄色一区二区| 亚洲图片你懂的| 国产成人亚洲综合a∨婷婷图片| 91精品国产综合久久婷婷香蕉| 亚洲男人的天堂网| 91麻豆精品在线观看| 国产精品国产三级国产普通话三级| 久久 天天综合| 精品日韩一区二区三区 | 欧美另类变人与禽xxxxx| 亚洲视频你懂的| av不卡一区二区三区| 国产精品久久久一区麻豆最新章节| 国产成人精品午夜视频免费| 久久久亚洲精品一区二区三区| 精品无人码麻豆乱码1区2区| 日韩欧美激情一区| 久久激情综合网| 久久这里只有精品视频网| 国产一区二区中文字幕| 久久久.com| 色综合亚洲欧洲| 亚洲欧美日韩一区二区 | 国产成人亚洲综合a∨猫咪| 精品欧美一区二区久久| 国产精品538一区二区在线| 欧美国产综合色视频| 99riav一区二区三区| 亚洲高清中文字幕| 5566中文字幕一区二区电影| 久久精品国产成人一区二区三区| 欧美高清一级片在线| 另类小说色综合网站| 久久精品亚洲乱码伦伦中文| 成人一级黄色片| 亚洲精品午夜久久久| 欧美精品精品一区| 国产成人av一区二区| 成人免费一区二区三区在线观看| 91在线观看一区二区| 亚洲影院理伦片| 精品国产乱码久久久久久蜜臀 | eeuss影院一区二区三区| 亚洲精品视频观看| 日韩欧美久久久| 99久久精品国产导航| 日本成人超碰在线观看| 久久精品视频免费观看| 日本久久一区二区三区| 美女久久久精品| 日韩美女啊v在线免费观看| 91精品国产综合久久香蕉麻豆| 国产成人自拍在线| 亚洲国产乱码最新视频| 久久免费国产精品| 欧美老女人在线| eeuss国产一区二区三区| 日韩av一区二区在线影视| 中文字幕免费不卡| 日韩欧美的一区二区| 色综合咪咪久久| 国产美女视频91| 午夜欧美视频在线观看| 国产精品私房写真福利视频| 欧美一区二区在线免费播放| 99久久久久免费精品国产| 美女视频黄 久久| 亚洲一区二区不卡免费| 亚洲国产精品二十页| 欧美一级xxx| 欧美色手机在线观看| 波多野结衣在线一区| 国产麻豆一精品一av一免费| 日韩福利电影在线观看| 夜夜嗨av一区二区三区网页| 欧美韩日一区二区三区| 精品国内片67194| 91麻豆精品国产综合久久久久久| 91麻豆精品在线观看| 99久久伊人精品| 处破女av一区二区| 国产成人av网站| 国产成人免费视频一区| 国产一区二区电影| 国产九色sp调教91| 国产尤物一区二区| 精品一区二区久久| 麻豆精品在线看| 麻豆成人久久精品二区三区红| 五月天亚洲精品| 亚洲一区二区三区四区的| 亚洲欧美色综合| 亚洲精品中文字幕乱码三区| 亚洲免费观看在线观看| 亚洲激情男女视频| 亚洲国产精品自拍| 亚洲国产成人91porn| 午夜精品在线视频一区| 五月天激情综合| 久久精品国产亚洲a| 久久99国产精品麻豆| 国内欧美视频一区二区| 国产高清不卡二三区| 成人综合婷婷国产精品久久| www.综合网.com| 91日韩精品一区| 欧美丝袜自拍制服另类| 欧美电影一区二区三区| 日韩一级精品视频在线观看| 欧美不卡一区二区三区四区| 精品国产1区2区3区| 久久久一区二区三区| 国产精品免费丝袜| 亚洲激情成人在线| 日本麻豆一区二区三区视频| 美国三级日本三级久久99| 国产精品69久久久久水密桃| 成人h动漫精品一区二区| 一本色道久久加勒比精品| 欧美精品一卡二卡| 欧美成人欧美edvon| 中文天堂在线一区| 亚洲高清免费在线| 国产一区999| 欧美在线免费观看亚洲| 日韩一区二区三区免费看| 亚洲国产精品成人久久综合一区| 伊人一区二区三区| 激情六月婷婷久久| 99天天综合性| 日韩一级片网站| 亚洲色图视频免费播放| 日本色综合中文字幕| 成人午夜激情视频| 69av一区二区三区| 亚洲欧洲在线观看av| 日韩中文字幕不卡| 成人网页在线观看| 91精品国产手机| 日韩美女视频一区二区| 麻豆精品在线播放| 在线中文字幕不卡| 国产午夜亚洲精品羞羞网站| 亚洲午夜av在线| 成人成人成人在线视频| 日韩一级黄色片| 亚洲一区二区三区视频在线| 国产综合久久久久久鬼色| 欧美三级一区二区| 国产精品免费看片| 国产一区二区在线影院| 欧美久久久久中文字幕| 亚洲欧美日韩一区| 成人免费毛片高清视频| 欧美r级电影在线观看| 天天做天天摸天天爽国产一区| 成人app网站| 国产欧美精品一区二区色综合| 午夜精品福利一区二区三区蜜桃| 成人免费看视频| 国产日本亚洲高清| 国产在线精品一区在线观看麻豆| 欧美日韩国产a| 亚洲精品乱码久久久久久黑人| 国产成人亚洲精品狼色在线| 日韩精品一区二区三区视频在线观看| 一区二区三区不卡视频| 99re成人精品视频| 国产欧美日韩久久| 国产乱码精品一区二区三| 精品久久久久一区| 日韩中文字幕91| 欧美精品三级在线观看| 一区二区三区四区乱视频| 99久久久精品| 亚洲欧洲美洲综合色网| 成人av午夜影院| 国产精品午夜在线观看| 成人免费三级在线| 国产精品网站在线| 暴力调教一区二区三区| 亚洲三级在线免费| 色拍拍在线精品视频8848| 亚洲精品v日韩精品|