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

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

?? mcp2515.c

?? 一個在三星S3C44B0 ARM 上實現的帶SPI接口的MCP2515 CAN總線控制芯片的 CAN 讀寫程序!
?? C
?? 第 1 頁 / 共 5 頁
字號:

#include "44b.h"
#include "..\INC\MCP2515.h"
#include "..\INC\lcd.h"
#include "44blib.h"
#include "audio.h"

/********************** MCP2515 Pin *********************************/
#define MCP2515_CS				0x4		//EXIO2

/********************** MCP2515 指令 *********************************/
#define MCP2515INSTR_RESET		0xC0    //復位指令
#define MCP2515INSTR_READ		0x03    //讀  指令
#define MCP2515INSTR_WRITE		0x02    //寫  指令
#define MCP2515INSTR_RTS		0x80	//發送請求指令
#define MCP2515INSTR_RDSTAT	    0xA0	//讀MCP2515狀態指令
#define MCP2515INSTR_BITMDFY	0x05	//位修改

/*********************SIO管腳************************/
#define SPI_SIOCLK    	0x8000      //GPC15 
#define SPI_SIORxD		0x0800		//GPC11
#define SPI_SIOTxD		0x2000		//GPC13
#define SPI_SIOCLK_non	0x7FFF		//CLK置低
#define SPI_SIOTxD_non	0xF7FF		//TXD管腳置低


unsigned char err_f[50]     = {0};
unsigned char err_count[50] = {0};
int sos[50];

extern unsigned char n_RxBuffer;
unsigned short       RX_B[256]    = {0};
unsigned char        data_len[64] = {0};
extern	U8 				rxRTR; 
extern	U8 				isExt;
extern	unsigned short PLAY_BUF1[8];
extern	unsigned short PLAY_BUF2[8];

//延時>100ns
void Delayns(void)
{
  //	int j;	
  //	j=1;
}


/********************************************************************/
/*                            SIO 讀寫操作                         */
/********************************************************************/


/******************************************/
/*函數名稱:Init_SIO                     */
/*函數功能: ARM SIO初始化                 */
/*          SIOTxD->GBF5                  */
/*          SIORDY->GBF6                  */
/*          SIORxd->GBF7                  */
/*          SIOCLK->GBF8                  */
/*入口參數: 無              */
/*返回值  : 無                            */
/******************************************/
void Init_SIO(void)
{
	rPCONF = (rPCONF & 0x3FF)|(3<<10)|(3<<13)|(3<<16)|(3<<19);
	                                    //011 011 011 011 00 00 00 00 00
	                                    //設置GPF0(IICSCL),GPF1(IICSDA),GPF2(),GPF3(),GPF4() 為輸入模式
	                                    //設置GPF5(SIOTXD) 為SIOTxD ,GPF6(IISDO) 為SIORDY, GPF7(SIORXD) 為SIORxD, GPF8(SIOCLK) 為SIOCLK
	rPUPF  = (rPUPF & 0x1F)|(15<<5);    //0 1010 0000
	                                    //允許GPF8(SIOCLK),GPF6(IISDO),GPF4,GPF3,GPF2,GPF1,GPF0 接上拉
	
	rSIOCON = 0x21;                     //0010 0001
	                                    //內部時鐘,MSB模式,發送\接收模式,時鐘下降沿接收或者發送,移位操作為自動運行模式,使能SIO中斷
	
    //	rINTMSK &= ~(BIT_GLOBAL|BIT_SIO);
	
	rSBRDR  = 15;             //波特率1Mbps   rSBRDR=31   rIVTCNT =15   //波特率分頻器 波特率=MCLK/2/(預分頻值+1)
	rIVTCNT = 7;              //波特率2Mbps   rSBRDR=15   rIVTCNT =7
}


/******************************************/
/*函數名稱:SendSIOData                  */
/*函數功能: 向 SIOTxD 發送數據            */
/*入口參數: sio_data : 要發送的數據    */
/*返回值  : 無                            */
/******************************************/
void SendSIOData(unsigned char sio_data)
{
	rI_ISPC |= BIT_SIO;              //BIT_SIO = 0x01<<4 = 0x10; 清空掛起的 ISO 中斷

	rSIODAT  = sio_data;
	rSIOCON |= 0x08;                 //選用外部時鐘做為 SIO 移位時鐘

	while(!(rINTPND & BIT_SIO));     //等待數據發送完成,查詢方式
	rI_ISPC |= BIT_SIO;              //清空掛起的 ISO 中斷
}



/******************************************/
/*函數名稱:ReadSIOData                  */
/*函數功能: 從 SIORxD 讀取數據            */
/*入口參數: 無                         */
/*返回值  : 從 SIO 讀取的數據             */
/******************************************/
unsigned char ReadSIOData()
{
	 //while(rSIOCON&SIO_START);    //等待發送
	return rSIODAT;
}


/*****************************************/
/*                                       */
/*     sio管腳作為普通IO模擬SPI通信      */
/*                                       */
/*****************************************/

/******************************************/
/*函數名稱:Init_SIO                     */
/*函數功能: SIO初始化                     */
/*入口參數: 無              */
/*返回值  : 無                            */
/******************************************/
/*
void Init_SIO(void)
{
	rPDATC = 0x8000;                                 //10000 0000 0000 0000
	                                                 //置位GPC15
	rPCONC = (rPCONC & 0x333FFFFF)|(1<<30)|(1<<26);  //設置GPC15,GPC13 為輸出模式
	
	rPUPC &= 0x57FF;                                 //允許GPC15,GPC13,GPC12 上拉
}
*/


/******************************************/
/*函數名稱:SendSIOData                  */
/*函數功能: 從SIO發送數據                 */
/*入口參數: sio_data : 要發送的數據    */
/*返回值  : 無                            */
/******************************************/
/*I/O模擬SPI
void SendSIOData(unsigned char sio_data)
{
	int i;	
//	int rPDATC_bak;
//	int rPDATC_bak_non;
	
	unsigned char SIOSEND_TEMP;
	SIOSEND_TEMP=sio_data;
		
	for (i=7;i>=0;i--)
	{
		rPDATC &= ~SPI_SIOCLK;              //SIOCLK->0  SPI_SIOCLK = 0x8000
		if (SIOSEND_TEMP&(1<<i))
		{
			rPDATC |= SPI_SIOTxD;           //SPI_SIOTxD = 0x2000  置 SIOTxD 為1;
		//	Delayns();
		}                                   //延時大于180ns
		else                                
		{
			rPDATC &= ~SPI_SIOTxD;          //置 SIOTxD 為0
		//	Delayns();
		}
			
		rPDATC |= SPI_SIOCLK;     //SIOCLK->1
		
	    //	Delayns();
	}	
    //	Delay60ns(1);	
}
*/

/******************************************/
/*函數名稱:ReadSIOData                  */
/*函數功能: 從 SIO 讀取數據               */
/*入口參數: 無                         */
/*返回值  : 從 SIO 讀取的數據             */
/******************************************/
/*I/O模擬SPI
unsigned char ReadSIOData()
{	
	int j;
	unsigned char SPI_RxDATA;
	SPI_RxDATA = 0;	
	
	for (j=7;j>=0;j--)
	{
		rPDATC &= ~SPI_SIOCLK;    //SIOCLK->0		
	//	Delayns();
	
		if (rPDATC & SPI_SIORxD)
			SPI_RxDATA |= (1<<j);
			
		rPDATC |= SPI_SIOCLK;     //SIOCLK->1
		
	//	Delayns();
	
	}
	return SPI_RxDATA;
}
*/


/********************************************************************/
/*                   MCP2515 操作                                   */
/********************************************************************/

/******************************************/
/*函數名稱:MCP2515_Enable                */
/*函數功能: 使能MCP2515,讓其開始工作      */
/*          MCP2515_nCS->GPB5             */
/*入口參數: 無              */
/*返回值  : 無                            */
/******************************************/
void MCP2515_Enable(void)
{
	rPDATB = rPDATB & 0xFDF;         //1111 1101 1111  
	                                 //置GPB5 = nCS2510 = 0: 選中MCP2515
	Delayns();                       //延時>100ns
}


/******************************************/
/*函數名稱:MCP2515_Disable               */
/*函數功能: 禁止MCP2515,讓其停止工作      */
/*          MCP2515_nCS->GPB5             */
/*入口參數: 無              */
/*返回值  : 無                            */
/******************************************/
void MCP2515_Disable(void)
{
//	rPDATC &= ~SPI_SIOCLK;           //SIOCLK->0    遵循0,0模式時序
	rPDATB |= 0x20;                  //0010 0000    置GPB5 = nCS2510 = 1: 禁止MCP2515   
	Delayns();
//	rPDATC |= SPI_SIOCLK;            //SIOCLK->1
///	Delayns();			             //延時>100ns
//	rPDATC &= ~SPI_SIOCLK;           //SIOCLK->0    遵循0,0模式時序
	
}


/*************************************************/
/*函數名稱:MCP2515_Reset                       */
/*函數功能: MCP2515復位                          */
/*入口參數: 無                                 */
/*返回值  : 無                                   */
/*************************************************/
void MCP2515_Reset()
{
	MCP2515_Enable();                  //MCP2515 Enable
	
	SendSIOData(MCP2515INSTR_RESET);   //發送復位指令

	MCP2515_Disable();                 //MCP2515 Disable
}


/****************************************************************/
/*函數名稱:MCP2515_ReadStatus                                 */
/*函數功能: 讀取MCP2515狀態                                     */
/*入口參數: 無                                                  */
/*返回值  : 返回CANINTF 寄存器的值(包含各種中斷源的中斷標志位)  */
/*          即MCP2515 有關發送和接收功能的狀態           */
/****************************************************************/
unsigned char MCP2515_ReadStatus(void)
{
	unsigned char result;

	MCP2515_Enable();                      //MCP2515 Enable

	SendSIOData(MCP2515INSTR_RDSTAT);      //發送讀MCP2515狀態指令

	SendSIOData(0);                        //
	result = ReadSIOData();                //返回CANINTF 寄存器的值

	MCP2515_Disable();                     //MCP2515 Disable

	return result;
}


/*******************************************************************/
/*函數名稱:MCP2515_Write                                         */
/*函數功能: 發送數據到 MCP2515 的發送寄存器,等待發送               */
/*入口參數: 1.address : 發送寄存器地址                             */
/*          2.value   : 待發送的數據                             */
/*          MCP2515 有三個發送寄存器 地址分別是: 0x30,0x40,0x50    */
/*返回值  : 無                                                     */
/*******************************************************************/
void MCP2515_Write (unsigned char address, unsigned char value)
{
	MCP2515_Enable();                  //MCP2515 Enable

	SendSIOData(MCP2515INSTR_WRITE);   //發送寫指令
	SendSIOData(address);              //寫 發送寄存器地址
	SendSIOData(value);                //寫 要裝入寄存器中的數據

	MCP2515_Disable();                 //MCP2515 disenable
}


/***********************************************************/
/*函數名稱:MCP2515_Read                                  */
/*函數功能: 讀取MCP2515 接收寄存器的數據                   */
/*入口參數: address : 接收寄存器的地址                     */
/*          MCP2515 有兩個接收寄存器 地址分別是:0x60,0x70  */
/*返回值  : 從MCP2515 接收寄存器中讀取的數據               */
/***********************************************************/
unsigned char MCP2515_Read(unsigned char address)
{
	unsigned char result;

	MCP2515_Enable();                     //MCP2515 Enable

	SendSIOData(MCP2515INSTR_READ);       //發送讀指令
	SendSIOData(address);                 //發送要讀取的接收寄存器的地址

	SendSIOData(0);                       //移位時鐘
	result = ReadSIOData();               //讀取接收寄存器中的數據

	MCP2515_Disable();                    //MCP2515 Disable

	return result;
}



/**********************************************************************/
/*函數名稱:MCP2515_READ_RXBUFF                                      */
/*函數功能: 讀取RX緩沖區命令                                          */
/*入口參數:	:read_rxbuff  各位說明如下:                               */
/*           BIT0:buff0還是buff1; BIT1:是否讀取標識符               */
/*返回值  : 無                                                        */
/**********************************************************************/
void MCP2515_READ_RXBUFF (unsigned char read_rxbuff)
{
	switch (read_rxbuff)
	{	
		case 0x00:
            // MCP2515_Enable();
			SendSIOData(0x92);
            // MCP2515_Disable();
			break;
			

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久精品人人澡人人爽| 在线免费不卡电影| 91老师片黄在线观看| 欧美挠脚心视频网站| 国产精品久久免费看| 久久国产精品色| 欧美日韩中字一区| 国产精品国产三级国产aⅴ原创| 免播放器亚洲一区| 欧美日韩一区二区三区不卡| 国产精品久久久久婷婷二区次| 日韩电影一区二区三区| 欧美三级电影在线看| 日韩毛片高清在线播放| 国产在线播放一区| 欧美精品18+| 亚洲一级片在线观看| 99视频国产精品| 国产网红主播福利一区二区| 奇米色777欧美一区二区| 欧美影院一区二区| 国产欧美日韩另类一区| 精品一区二区三区的国产在线播放| 欧美伊人久久久久久久久影院| 亚洲色图制服诱惑| 91麻豆免费视频| 中文字幕一区二区三区av| 国产福利电影一区二区三区| 日韩欧美黄色影院| 青青草成人在线观看| 538在线一区二区精品国产| 亚洲午夜一区二区| 2022国产精品视频| 精品一区二区日韩| 久久品道一品道久久精品| 精品亚洲porn| 26uuu亚洲综合色欧美| 国产露脸91国语对白| 国产亚洲综合性久久久影院| 国产激情一区二区三区四区| 国产清纯白嫩初高生在线观看91 | 亚洲一区二区三区小说| 99r精品视频| 亚洲一区二区在线免费观看视频| 在线精品视频一区二区三四| 一区二区三区在线视频免费 | 欧美性猛交xxxxxxxx| 亚洲午夜免费视频| 91麻豆精品国产自产在线观看一区 | 国产jizzjizz一区二区| 国产精品网站在线播放| aaa亚洲精品一二三区| 亚洲天堂中文字幕| 欧美日韩一区在线| 久久精品国产99久久6| 久久精品日韩一区二区三区| 不卡的电影网站| 亚洲一区二区三区视频在线播放| 欧美日韩视频一区二区| 久久er99热精品一区二区| 337p日本欧洲亚洲大胆色噜噜| 成人动漫精品一区二区| 亚洲一区二区黄色| 9191久久久久久久久久久| 国产在线视视频有精品| 中文子幕无线码一区tr| 精品视频1区2区| 国内偷窥港台综合视频在线播放| 国产精品久久久久久妇女6080| 欧美日韩一级二级| 国产91露脸合集magnet| 亚洲二区视频在线| 国产校园另类小说区| 欧美性三三影院| 国产一区二区三区| 午夜亚洲国产au精品一区二区| 精品少妇一区二区三区 | 懂色一区二区三区免费观看| 亚洲精品国产成人久久av盗摄| 欧美一区二区三级| 91女人视频在线观看| 精品制服美女丁香| 亚洲自拍偷拍图区| 亚洲国产岛国毛片在线| 777xxx欧美| 在线区一区二视频| 成人免费高清视频| 亚洲成年人影院| 处破女av一区二区| 奇米色一区二区三区四区| 国产精品萝li| 精品久久久久久久人人人人传媒| 色婷婷国产精品久久包臀| 韩国毛片一区二区三区| 亚洲国产日韩在线一区模特 | 中文字幕一区二区日韩精品绯色| 欧美一区二区三区小说| 91久久精品一区二区三区| 国产成人一区二区精品非洲| 麻豆久久久久久久| 亚洲成人午夜电影| 亚洲一二三四在线观看| 综合久久综合久久| 国产精品乱码妇女bbbb| 久久色中文字幕| 欧美va在线播放| 91麻豆精品国产自产在线观看一区| 91在线视频18| 99久久精品国产精品久久| 国产精品一区在线| 激情五月婷婷综合| 精品一区二区三区蜜桃| 久久国产精品无码网站| 久久精品国产免费看久久精品| 日本vs亚洲vs韩国一区三区| 亚洲www啪成人一区二区麻豆| 亚洲综合在线五月| 亚洲永久精品大片| 天天色综合成人网| 亚洲成人777| 免费欧美高清视频| 激情丁香综合五月| 国产二区国产一区在线观看| 国产精品自在在线| 成人夜色视频网站在线观看| 成人国产亚洲欧美成人综合网| 成人app软件下载大全免费| 成人午夜视频网站| 一本色道久久综合亚洲精品按摩| 91麻豆6部合集magnet| 在线影视一区二区三区| 欧美高清视频在线高清观看mv色露露十八| 欧美日韩精品一区二区在线播放| 91精品国产一区二区三区蜜臀| 欧美一级久久久| 国产亚洲欧美色| 亚洲日本丝袜连裤袜办公室| 亚洲乱码国产乱码精品精的特点 | 亚洲麻豆国产自偷在线| 亚洲国产视频直播| 麻豆精品久久精品色综合| 国产自产2019最新不卡| 91小视频免费看| 欧美伦理视频网站| 久久综合久久综合九色| 中文字幕一区av| 日本午夜精品视频在线观看| 国产福利一区二区三区| 欧美最猛性xxxxx直播| 日韩一区二区免费视频| 国产精品丝袜在线| 五月天精品一区二区三区| 国产精品一区一区三区| 欧美丝袜自拍制服另类| 久久精品视频免费观看| 亚洲永久免费视频| 91国在线观看| 日韩欧美www| 亚洲免费观看高清完整版在线观看熊| 午夜精品成人在线| 成人国产精品免费网站| 欧美日韩成人一区| 国产精品三级av在线播放| 日韩在线观看一区二区| 成人午夜精品在线| 日韩欧美精品在线| 一区二区高清视频在线观看| 国产91在线看| 日韩一区二区三区在线视频| 一区二区在线观看不卡| 国产一区二区在线电影| 欧美日韩一区二区三区高清| 国产精品乱码人人做人人爱| 蜜桃久久久久久久| 日本韩国精品一区二区在线观看| 久久久不卡网国产精品二区| 丝袜a∨在线一区二区三区不卡| 97精品电影院| 久久久久国色av免费看影院| 日本大胆欧美人术艺术动态| 99久久er热在这里只有精品66| 精品国产乱码久久久久久1区2区| 五月天国产精品| 日本韩国精品在线| 亚洲美女在线一区| 成人av集中营| 久久精品亚洲国产奇米99| 蜜桃一区二区三区在线观看| 欧美三区免费完整视频在线观看| 亚洲欧洲日韩一区二区三区| 国产成a人亚洲| 久久久99久久精品欧美| 久久精品国产亚洲高清剧情介绍| 欧美区视频在线观看| 亚洲第一福利一区| 欧美美女激情18p| 日韩精品三区四区| 欧美一区二区三区啪啪| 日韩综合一区二区| 欧美一区午夜精品|