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

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

?? spi.c

?? SPI驅動源碼
?? C
字號:
//======================================================================
// Name   : SPI.c
// Date   : 2007/03/12
// Author : Xu
// Comment: Driving MCP41010 
//          SPIMOSI0(GPE12) working is in master mode
//          SPICLK0(GPE13) is the master outpuc clock
//          GPG3 is master CS pin
// Version:
// History: 2007/03/12 Create
//======================================================================

#include <windows.h>
#include <types.h>
#include <tchar.h>
#include <cardserv.h>
#include <cardapi.h>
#include <tuple.h>
#include <devload.h>
#include <diskio.h>
#include <nkintr.h>
#include <oalintr.h>
#include <windev.h>
#include "s2410.h"

#define PUBLIC


volatile IOPreg * v_pIOPregs;
volatile SSPreg *v_pSSPregs;

BOOL SPI_InitAddrIO(VOID);
BOOL SPI_InitAddrSPI(void);


//======================================================================
// Name      : InitSPI
// Date      : 2007/03/12
// Author    : XuHaibo
// Parameters:
// Return    : 
// Comment   : 
// Version   :
// History   : 2007/03/12 Create
//======================================================================
void InitSPI(void) //init uart2
{
		unsigned int pclk = S2410PCLK;  // s2410.h define
		                                // #define S2410FCLK       	(203 * 1000 * 1000)		// 203MHz (FCLK).
                                    // #define PCLKDIV         	4						// P-clock (PCLK) divisor.
                                    // #define S2410PCLK       	(S2410FCLK / PCLKDIV)	// PCLK.

		
		// Set I/O is SPI interface
		// Config GPE12,13 is SPIMOSI0,SPICLK0
	  v_pIOPregs->rGPECON &= ~(0x0F << 24); 
	  v_pIOPregs->rGPECON |= (0x0A << 24);	
	  // Config GPG3 is Master SPI CS                                     
	  v_pIOPregs->rGPGCON &= ~(0x3 << 6);                          
	  v_pIOPregs->rGPGCON |= (0x1 << 6);
	  v_pIOPregs->rGPGUP &= ~(0x1 << 3);	
	  // Initialize CS is high      
	  v_pIOPregs->rGPGDAT |= (0x1 << 3);                             
	
    // Baudrate = PCLK/2/(Prescaler value + 1)
    // PCLK = 203000000/4 = 50750000 Hz
    // Prescaler value = 0x18 = 24
    // Baudrate = 50750000/2/(24 + 1) = 1015000 = 1.015MHz
    // MCP41010 max clock frequency is 10MHz
    v_pSSPregs->rSPPRE0 = 0x18;
    
    // Set SPCON0 to configure properly the SPI module.	
    // Master  
    // SCK enable
    // polling mode
    v_pSSPregs->rSPCON0 = 0x18;
    // 0 Tx Auto Garbage Data mode enable (TAGD):Decide whether the receiving data only needs or not.
    //                                           0 = normal mode, 1 = Tx auto garbage data mode
    //                                           NOTE: In normal mode, if you only want to receive data,
    //                                           you should transmit dummy 0xFF data.
    // 1,2 It is possible to operate the devices in SPI modes 0,0and 1,1. (MCP41010 datasheet)
    //     Set SPI mode is 0,0.
    // 3 Set S3C2410 is Master.
    // 4 SCK Enable (ENSCK)
    // 5,6 Determine how and by what SPTDAT is read/written.
    //     00 = polling mode, 01 = interrupt mode
    //     10 = DMA mode, 11 = reserved
    //     Set polling mode
}


//======================================================================
// Name      : InitSPI
// Date      : 2007/03/12
// Author    : XuHaibo
// Parameters:
// Return    : 
// Comment   : 
// Version   :
// History   : 2007/03/12 Create
//======================================================================
BOOL
SPI_InitAddrIO(VOID)
{
		BOOL	RetValue = TRUE;
		
		v_pIOPregs = (volatile IOPreg *)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);

		if (v_pIOPregs == NULL) 
		{
				
//			ERRORMSG(1,(TEXT("For SPI_IOPregs : VirtualAlloc failed!\r\n")));
			RetValue = FALSE;
		}
		else 
		{
			if (!VirtualCopy((PVOID)v_pIOPregs, (PVOID)(IOP_BASE), sizeof(IOPreg), PAGE_READWRITE | PAGE_NOCACHE)) 
			{
//				ERRORMSG(1,(TEXT("For SPI_IOPregs: VirtualCopy failed!\r\n")));
				RetValue = FALSE;
			}
		}
	
		if (!RetValue) 
		{
//			RETAILMSG (1, (TEXT("::: SPI_InitializeAddresses - Fail!!\r\n") ));
			if (v_pIOPregs) 
			{
				VirtualFree((PVOID) v_pIOPregs, 0, MEM_RELEASE);
			}
			v_pIOPregs = NULL;
		}
		else 
		{
			;
//			RETAILMSG (1, (TEXT("::: SPI_InitializeAddresses - Success\r\n") ));
		}

		return(RetValue);
}




//======================================================================
// Name      : InitSPI
// Date      : 2007/03/12
// Author    : XuHaibo
// Parameters:
// Return    : 
// Comment   : 
// Version   :
// History   : 2007/03/12 Create
//======================================================================
BOOL
SPI_InitAddrSPI(void)
{
		BOOL	RetValue = TRUE;

//		RETAILMSG (1, (TEXT("SPI_InitializeAddresses \r\n") ));

		v_pSSPregs = (volatile SSPreg *)VirtualAlloc(0, sizeof(UART2reg), MEM_RESERVE, PAGE_NOACCESS);
		if (v_pSSPregs == NULL) 
		{
//			ERRORMSG(1,(TEXT("For SPI_UART2regs : VirtualAlloc failed!\r\n")));
			RetValue = FALSE;
		}
		else 
		{
			if (!VirtualCopy((PVOID)v_pSSPregs, (PVOID)(UART2_BASE), sizeof(UART2reg), PAGE_READWRITE | PAGE_NOCACHE)) 
			{
//				ERRORMSG(1,(TEXT("For SPI_UART2regs: VirtualCopy failed!\r\n")));
				RetValue = FALSE;
			}
		}
	
		if (!RetValue) 
		{
//			RETAILMSG (1, (TEXT("::: SPI_InitializeAddresses - Fail!!\r\n") ));
			if (v_pSSPregs) 
			{
				VirtualFree((PVOID) v_pSSPregs, 0, MEM_RELEASE);
			}
			v_pSSPregs = NULL;
		}
		else 
		{
			;
//			RETAILMSG (1, (TEXT("SPI_InitializeAddresses - Success\r\n") ));
		}
		return(RetValue);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频中文字幕| 亚洲成人第一页| 国产酒店精品激情| 国产亚洲欧美在线| 大美女一区二区三区| 中文一区一区三区高中清不卡| 国产精品亚洲视频| 一区视频在线播放| 在线免费精品视频| 亚州成人在线电影| 精品久久久久一区| 91精品国产综合久久精品图片| 天堂蜜桃一区二区三区| 日韩美女视频一区二区在线观看| 久久99精品久久只有精品| 久久久久国产免费免费| www.欧美精品一二区| 亚洲一区二区欧美日韩| 欧美一区二区三区在线视频| 国产精品自拍av| 亚洲激情一二三区| 欧美草草影院在线视频| av亚洲精华国产精华精| 亚洲成人福利片| 欧美sm美女调教| 91影视在线播放| 人禽交欧美网站| 国产精品丝袜一区| 欧美欧美欧美欧美首页| 国产麻豆欧美日韩一区| 一区二区三区四区不卡视频| 日韩一区二区在线播放| 99精品在线观看视频| 天天色图综合网| 国产精品嫩草久久久久| 欧美精品三级在线观看| 丰满亚洲少妇av| 日本欧美肥老太交大片| 日韩一区欧美小说| 日韩免费看网站| 91精品福利视频| 国产盗摄视频一区二区三区| 亚洲午夜久久久久中文字幕久| 国产日韩欧美在线一区| 欧美精品电影在线播放| 91视频免费观看| 国产精品综合av一区二区国产馆| 亚洲一区二区三区四区五区中文| 久久精品网站免费观看| 欧美日韩精品一区二区| 北条麻妃一区二区三区| 久久99精品久久久久婷婷| 亚洲综合在线第一页| 中文字幕高清一区| 久久伊99综合婷婷久久伊| 欧美电影一区二区三区| 欧美私模裸体表演在线观看| 成人黄色网址在线观看| 国产一区二区精品久久91| 天天综合色天天| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲精品一区二区三区福利| 一色屋精品亚洲香蕉网站| 日韩免费电影网站| 欧美精品少妇一区二区三区| 色88888久久久久久影院野外 | 亚洲欧美日韩一区| 久久婷婷久久一区二区三区| 91精品国产综合久久精品| 欧美亚洲国产怡红院影院| 91视频com| 99久久国产免费看| 成人黄色在线看| 不卡av电影在线播放| 国产成人精品免费在线| 国产精品一区二区你懂的| 麻豆传媒一区二区三区| 免费成人在线影院| 蜜桃久久精品一区二区| 在线观看三级视频欧美| 91福利在线看| 日本道精品一区二区三区| 91在线观看免费视频| 成人av先锋影音| 播五月开心婷婷综合| 成人永久免费视频| 成人黄动漫网站免费app| 粉嫩嫩av羞羞动漫久久久| 国产成人av一区二区三区在线| 国产精品一品视频| 高清成人在线观看| 91网址在线看| 在线亚洲人成电影网站色www| 欧洲国内综合视频| 91.xcao| 欧美一级爆毛片| 久久免费国产精品 | 欧美韩国日本一区| 国产精品久久久久精k8| 自拍视频在线观看一区二区| 亚洲欧美日韩国产综合| 亚洲成av人片在www色猫咪| 日本欧美在线看| 国模冰冰炮一区二区| 不卡的电视剧免费网站有什么| 99久久99久久免费精品蜜臀| 色婷婷亚洲一区二区三区| 在线观看91av| 国产视频一区不卡| 亚洲天天做日日做天天谢日日欢 | 亚洲三级免费观看| 午夜私人影院久久久久| 国产精选一区二区三区 | 日本精品裸体写真集在线观看| 欧美日韩小视频| 久久久久久久久久看片| 一区二区三区毛片| 久久99精品久久久久| 99久久99久久精品免费观看| 欧美日韩激情一区| 国产日韩精品一区二区三区| 亚洲欧美激情插| 久久成人精品无人区| 91欧美一区二区| 日韩精品中文字幕一区二区三区| 中文子幕无线码一区tr| 天天色天天爱天天射综合| 成人精品亚洲人成在线| 91麻豆精品国产自产在线| 国产精品美女www爽爽爽| 天天综合色天天| 99久久精品一区二区| 精品国产成人在线影院| 亚洲综合一区二区三区| 国产激情偷乱视频一区二区三区| 欧美中文字幕不卡| 中文字幕高清一区| 久久国产夜色精品鲁鲁99| 色视频欧美一区二区三区| 久久久一区二区| 日韩影院精彩在线| 色域天天综合网| 国产精品欧美一级免费| 麻豆成人91精品二区三区| 欧美天堂亚洲电影院在线播放| 国产欧美日韩精品在线| 麻豆精品国产91久久久久久| 欧美影院午夜播放| 成人欧美一区二区三区视频网页| 久久99精品一区二区三区| 欧美日韩亚洲综合在线 | 在线免费av一区| 亚洲国产精品高清| 美日韩一区二区| 在线不卡欧美精品一区二区三区| 亚洲另类春色国产| 成人精品一区二区三区四区 | 久久综合给合久久狠狠狠97色69| 亚洲成va人在线观看| 色av成人天堂桃色av| 亚洲免费在线观看| 丁香网亚洲国际| 国产视频一区在线观看 | 成人精品在线视频观看| 久久综合久久综合久久| 免费成人在线观看视频| 91麻豆精品国产91久久久久久久久 | 一区二区久久久久久| 91麻豆精品视频| 亚洲视频在线一区| 99国内精品久久| 亚洲日本丝袜连裤袜办公室| 99国产欧美久久久精品| 亚洲码国产岛国毛片在线| 91在线云播放| 亚洲激情图片小说视频| 在线免费观看一区| 亚洲午夜久久久| 欧美人狂配大交3d怪物一区| 天堂蜜桃91精品| 欧美xxxxxxxx| 国产精品亚洲午夜一区二区三区 | 亚洲综合999| 欧美日韩日日摸| 日本va欧美va瓶| 精品久久久久久久久久久院品网| 经典三级在线一区| 久久久www成人免费毛片麻豆| 国产激情91久久精品导航| 国产精品乱人伦| 色一情一伦一子一伦一区| 天天操天天色综合| 精品久久久久99| 成人免费视频一区| 一区二区免费在线播放| 欧美一区二区视频在线观看 | 久久久亚洲综合| 99精品视频一区二区| 亚洲高清在线视频| 精品999久久久|