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

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

?? mcp2515.c

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


	//Enable clock output
   //MCP2515_Write(CLKCTRL, MODE_LOOPBACK | CLK2);//回環模式
	
	MCP2515_Write(CLKCTRL,MODE_NORMAL|CLK1);             //配置為標準工作模式,單觸發使能!!!

	// Clear, deactivate the three transmit buffers     ,包括設置發送緩沖器ID----全部置0
	a = TXB0CTRL;
	for (i = 0; i < 3; i++) 
	{
		for (j = 0; j < 14; j++) 
			{
				MCP2515_Write(a, 0);
				a++;
	        }
	        
       	a += 2; // We did not clear CANSTAT or CANCTRL
	}
	
	// and the two receive buffers.(not buffer actually)
	MCP2515_Write(RXB0CTRL, 0);     //接收模式--接收所有報文,使能滾存
	MCP2515_Write(RXB1CTRL, 0);
	
	//Open Interrupt
//	MCP2515_Write(CANINTE, RX0IE|RX1IE);
	
}



/*********************************************************************************/
/*函數名稱:canPoll                                                             */
/*函數功能:	查詢是否收到數據                                 */
/*入口參數: 無                                                                   */
/*返回值  : 如果沒有收到數據,則返回-1,                                         */
/*			否則,返回收到數據的緩沖區號                                         */
/*	        Note: 如果兩個緩沖區都收到數據,則返回第一個緩沖區                   */
/*********************************************************************************/
int canPoll(void)
{
//	if (MCP2515_Read(EFLG)&0x40)   //如果緩存區0溢出,則說明緩存區1已經存在數據
//		return 1;
	
	if(MCP2515_ReadStatus() & RX0INT)        //CANINTF & 0x01
		return 0;
	
	if(MCP2515_ReadStatus() & RX1INT)
		return 1;

	return -1;
}


/*********************************************************************************/
/*函數名稱:canRead                                                             */
/*函數功能:	查詢是否收到CAN數據:                                                */
/*入口參數: 無                                                                   */
/*返回值  : 0:沒有收到                                                          */
/*          1:緩沖區0收到數據                                                   */
/*          2:緩沖區1收到數據                                                   */
/*          3:兩個緩沖區都收到數據                                              */
/*********************************************************************************/
unsigned char MPC2515_CanPoll(void)
{
	unsigned char polldata;
	
	polldata = MCP2515_ReadStatus() & 0x03;    //CANINTF & 0x03
	
	return polldata;	
}



/*********************************************************************************/
/*函數名稱:canRead                                                             */
/*函數功能:	查詢是否收到數據                                 */
/*入口參數: 1: n       : 表示是哪個接收緩沖區接收到數據                          */
/*          2: *id     : 存放數據 ID 地址                                        */
/*          3: *pdata  : 存放數據地址                                            */
/*          4: *dlc    : 數據長度地址                                            */
/*          5: *rxRTR  : 幀類型 擴展幀 非擴展幀                                 */
/*          6: *isExt  : 總線類型 擴展總線                                      */
/*返回值  : 0 : 讀取接收緩沖器 0 (RXB0)成功                                      */
/*          1 : 讀取接收緩沖器 1 (RXB0)成功                                      */
/*          0xFF :讀取數據失敗                                                   */
/*********************************************************************************/
U8 canRead(int n, U32 *id, U8 *pdata,  U8 *dlc, U8 *rxRTR, U8 *isExt)    //n表示是哪個接收緩沖區接收到數據
{
	U8 CAN_byte;
	CAN_byte = MCP2515_Read(CANINTF);

	if (n==0)
	{
		if (CAN_byte & RX0INT)                                             //接收緩沖器 0 中有數據
		{
			*isExt = MCP2515_Read_Can(n+3, rxRTR, id, pdata, dlc);         //讀取各數據
			MCP2515_WriteBits(CANINTF, ~RX0INT, RX0INT);                   //清除 RXB0 滿中斷標志
			MCP2515_WriteBits(EFLG, 0, EFLG_RX0OVR);                       //清除溢出標志
		}
		return 0;                                                          //讀取 RXB0 成功,返回 0  
	}
	else if (n ==1 )
	{
		if (CAN_byte & RX1INT)                                             //接收緩沖器 1 中有數據
		{
			*isExt=MCP2515_Read_Can(n+4, rxRTR, id, pdata, dlc);
			MCP2515_WriteBits(CANINTF, ~RX1INT, RX1INT);                   // 清除 RXB1 滿中斷標志
			MCP2515_WriteBits(EFLG, 0, EFLG_RX0OVR);                       //清除溢出標志
		}
		return 1;                                                          //讀取 RXB1 成功,返回 1
	}	
	return 0xff;                                                           //讀取數據失敗
}



/*********************************************************************************/
/*函數名稱:CAN_RD                                                              */
/*函數功能:	讀取從CAN總線上收到的數據                            */
/*入口參數:1. *ppdata    :接收到的數據的存放地址;                              */	
/*          2. *datalenth : 接收到的數據字節長度的存放地址	                     */
/*          3. n_rxbuff   :收到數據的緩沖區個數                                 */
/*          如果兩個緩沖器都接收到數據,則一次性全部接收                         */
/*返回值  : 無                                                                   */
/*********************************************************************************/
void CAN_RD (unsigned char *ppdata, unsigned char *datalenth, unsigned char n_rxbuff)
{
	unsigned char 	CAN_RD_datalenth;
	int i;
	
	switch (n_rxbuff)
	{	
		case 0x0:                                                 //沒有收到數據
			break;		
			
		case 0x01:                                                //接收緩沖器 0 收到數據
			*datalenth = (MCP2515_Read(0x65) & DLC_MASK);         //讀取數據長度
			
			MCP2515_Enable();
			
			MCP2515_READ_RXBUFF(0);
			for (i = *datalenth; i>0; i--)                        //讀取數據
			{
				SendSIOData(0);
				*ppdata = ReadSIOData();
				ppdata++;
			}
			MCP2515_Disable();
			
			MCP2515_WriteBits(CANINTF, ~RX0INT, RX0INT);          //清空 RXB0 中斷滿標志
			
			break;
			
		case 0x02:                                                //接收緩沖器 1 收到數據
			*datalenth = (MCP2515_Read(0x75) & DLC_MASK);         //讀取數據長度
			
			MCP2515_Enable();
			MCP2515_READ_RXBUFF(1);
			for (i=*datalenth; i>0; i--)                          //讀取數據
			{
				SendSIOData(0);
				*ppdata=ReadSIOData();
				ppdata++;
			}
			MCP2515_Disable();
			
			MCP2515_WriteBits(CANINTF, ~RX1INT, RX1INT);          //清空 RXB1 中斷滿標志
			break;
				
			
		case 0x03:                                                //兩個接收緩沖器 都收到數據
			*datalenth = (MCP2515_Read(0x65) & DLC_MASK);         //讀取數據長度
			
			MCP2515_Enable();
			MCP2515_READ_RXBUFF(0);                               //先讀 接收緩沖器 0  中的數據
			for (i=*datalenth; i>0; i--)
			{
				SendSIOData(0);
				*ppdata=ReadSIOData();
				ppdata++;
			}
			MCP2515_Disable();
			MCP2515_WriteBits(CANINTF, ~RX0INT, RX0INT);          //清空 RXB0 中斷滿標志
			
			CAN_RD_datalenth = (MCP2515_Read(0x75) & DLC_MASK);   //?
			
			MCP2515_Enable();
			MCP2515_READ_RXBUFF(1);                               //再讀 接收緩沖器 1  中的數據
			for (i=CAN_RD_datalenth; i>0; i--)
			{
				SendSIOData(0);
				*ppdata = ReadSIOData();
				ppdata++;
			}
			MCP2515_Disable();
			
			MCP2515_WriteBits(CANINTF, ~RX1INT, RX1INT);           //清空 RXB1 中斷滿標
			
			*datalenth = *datalenth + CAN_RD_datalenth;
			break;
			
		default :
          	break;			
		}
}


/*********************************************************************************/
/*函數名稱:CAN_RD_PLAY                                                         */
/*函數功能:	讀取從CAN總線上收到的數據,并直接給CODEC芯片(一次傳輸8*16bits)     */
/*入口參數:n_rxbuff : 接收緩沖器數                                              */
/*          NOTE : 1.如果收到的數據不足8個字節(只發生在通話結束),用0填充。    */
/*                 2.如果兩個緩沖器都接收到數據,則一次性全部接收                */
/*返回值  : 無                                                                   */
/*********************************************************************************/
void CAN_RD_PLAY (unsigned char n_rxbuff)
{
	unsigned char	*Play_databyte;
	static unsigned short 	Play_data[8] = {0};
	
	static int n_databuff = 0;
	int i;
	int j;
	
	Play_databyte = (unsigned char *)Play_data + n_databuff;

	switch (n_rxbuff)
	{
		
		case 0x0:                                            //沒有收到數據
			break;	
			
		case 0x1:
			
			MCP2515_Enable();
			MCP2515_READ_RXBUFF(0);
			for (i=8; i>0; i--)
			{
				SendSIOData(0);
				*(Play_databyte++) = ReadSIOData();
			}
			
			MCP2515_Disable();
			
			n_databuff += 8;
			
		    //判斷是否夠一個IISFIF的數據
		    
			if (n_databuff == 16)
			{
	   //		SIO_Send (0x0a16); //0x0a16		//DAC mute
				
				while (rIISCON & 0x80);         //當發送FIFO非空時,等待
				for(j=0; j<8; j++)
				{
					*IISFIF = Play_data[j];
				}	
				
				n_databuff = 0;
			}
			
	   //		SIO_Send (0x0a1e);		//DAC POWERDOWN
			
			break;
		
		case 0x2:
			
			MCP2515_Enable();
			MCP2515_READ_RXBUFF(1);
			
			for (i=8; i>0; i--)
			{
				SendSIOData(0);
				*(Play_databyte++)=ReadSIOData();
				
			}
				
			MCP2515_Disable();
			
			n_databuff +=8;
			
			if (n_databuff==16)
			{
	            // SIO_Send (0x0a16);		//DAC POWERUP
				
				while (rIISCON & 0x80);     //當發送FIFO非空時,等待
				for(j=0; j<8; j++)
				{
					*IISFIF =Play_data[j];
				}

				n_databuff = 0;
			}
			
	        // SIO_Send (0x0a1e);
			
			break;

		case 0x3:
			
			MCP2515_Enable();
			MCP2515_READ_RXBUFF(0);
			
			for (i=8; i>0; i--)
			{
				SendSIOData(0);
				*(Play_databyte++) = ReadSIOData();	
			}
				
			MCP2515_Disable();
			
			n_databuff += 8;
			
			if (n_databuff==16)
			{
	            // SIO_Send (0x0a16);		//DAC POWERUP
			
				while (rIISCON & 0x80);    //當發送FIFO非空時,等待
				for(j=0; j<8; j++)
				{
					*IISFIF = Play_data[j];
				}
				
				n_databuff = 0;
			}
			
	        // SIO_Send (0x0a1e);
			
			
			Play_databyte = (unsigned char *)Play_data + n_databuff;
			MCP2515_Enable();
			MCP2515_READ_RXBUFF(1);
			
			for (i=8; i>0; i--)
			{
				SendSIOData(0);
				*(Play_databyte++)=ReadSIOData();
			}
			
			MCP2515_Disable();
			
			n_databuff +=8;
			
			if (n_databuff==16)
			{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情校园春色| 久久一留热品黄| 色激情天天射综合网| 懂色中文一区二区在线播放| 国产精品亚洲视频| 国产ts人妖一区二区| 国产黄色精品视频| 国产精品99久久久久久有的能看 | 亚洲美女偷拍久久| 亚洲人成7777| 一区二区成人在线视频 | 精品午夜一区二区三区在线观看 | 色婷婷av一区二区三区gif | 中文天堂在线一区| 中文字幕一区二区三区精华液| 国产日韩欧美亚洲| 中文字幕五月欧美| 亚洲免费观看高清完整版在线观看| 亚洲欧洲精品天堂一级 | 国产在线精品国自产拍免费| 国产美女视频91| 成人av电影免费在线播放| k8久久久一区二区三区| 欧美综合在线视频| 欧美一卡二卡在线| 国产三级三级三级精品8ⅰ区| 国产欧美日韩亚州综合 | 一区二区三区日韩欧美精品| 亚洲国产综合人成综合网站| 免费观看91视频大全| 高清shemale亚洲人妖| 色综合久久久久综合体| 欧美精品一二三四| 精品国产91久久久久久久妲己 | 国产福利电影一区二区三区| www.欧美日韩国产在线| 欧美综合在线视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日韩二区三区四区| 粉嫩aⅴ一区二区三区四区| 91国产精品成人| 久久综合久久鬼色| 亚洲欧美精品午睡沙发| 免费观看成人av| 91啪九色porn原创视频在线观看| 3d成人h动漫网站入口| 欧美激情中文字幕一区二区| 亚洲一区二区三区四区在线免费观看 | 成人免费精品视频| 欧美乱熟臀69xxxxxx| 久久久久国产成人精品亚洲午夜| 亚洲色图.com| 久久se这里有精品| 欧洲国产伦久久久久久久| 久久综合九色综合欧美亚洲| 夜夜揉揉日日人人青青一国产精品| 久久99热这里只有精品| 色视频欧美一区二区三区| 久久久夜色精品亚洲| 亚洲国产日韩综合久久精品| 国产大陆a不卡| 7777女厕盗摄久久久| 国产精品情趣视频| 麻豆精品一区二区av白丝在线| 99久久精品国产观看| 精品91自产拍在线观看一区| 亚洲福利视频一区二区| 不卡av在线免费观看| 精品国产伦理网| 亚洲一本大道在线| 成人福利在线看| 久久人人爽人人爽| 日本vs亚洲vs韩国一区三区二区 | 中文字幕一区二区三区四区不卡| 蜜臀精品久久久久久蜜臀| 99国产麻豆精品| 久久久久久久精| 秋霞电影网一区二区| 在线观看亚洲专区| 国产精品美女久久久久aⅴ | 欧美一区二区私人影院日本| 亚洲日本护士毛茸茸| 国产成人精品免费网站| 日韩欧美国产系列| 日本在线不卡一区| 欧美在线视频不卡| 亚洲精品一二三四区| 99国产麻豆精品| 最新不卡av在线| 97se狠狠狠综合亚洲狠狠| 国产精品每日更新在线播放网址| 国产另类ts人妖一区二区| 久久综合网色—综合色88| 狠狠久久亚洲欧美| 欧美电影免费观看高清完整版在线观看 | 中文字幕一区视频| 成人黄色a**站在线观看| 欧美激情中文字幕| 成人的网站免费观看| 亚洲国产日韩a在线播放性色| 99re亚洲国产精品| 亚洲欧美一区二区久久 | 久久久久88色偷偷免费| 国产麻豆精品在线| 久久精品一区八戒影视| 国产在线不卡一区| 国产日韩视频一区二区三区| 国产高清一区日本| 国产精品另类一区| av在线不卡免费看| 亚洲精品国产第一综合99久久| 91色九色蝌蚪| 午夜精品久久久久久久久久| 欧美老年两性高潮| 蜜臀av性久久久久av蜜臀妖精| 2020日本不卡一区二区视频| 国产成人在线影院| 亚洲欧洲av另类| 欧美色男人天堂| 蜜臀精品一区二区三区在线观看| 欧美精品一区视频| 粉嫩aⅴ一区二区三区四区| 亚洲色图视频免费播放| 欧美色偷偷大香| 日本91福利区| 日本一区免费视频| av一区二区三区四区| 一区二区三区欧美久久| 欧美日韩dvd在线观看| 九色|91porny| 国产精品热久久久久夜色精品三区| 95精品视频在线| 日韩中文字幕一区二区三区| 精品国产免费人成电影在线观看四季| 成人免费视频免费观看| 夜夜嗨av一区二区三区| 日韩一级完整毛片| 成人avav影音| 午夜伊人狠狠久久| 久久久久久免费| 91国内精品野花午夜精品 | 91极品美女在线| 日韩成人免费看| 中文字幕欧美日韩一区| 91精品福利视频| 国产在线精品一区在线观看麻豆| 国产精品成人一区二区三区夜夜夜| 欧美日韩在线电影| 国产乱码精品一区二区三区五月婷 | 久久精品一区二区三区四区| 欧美自拍偷拍一区| 国产精品99久久不卡二区| 一区二区三区四区在线| 久久亚洲捆绑美女| 欧美熟乱第一页| 国产成人午夜高潮毛片| 午夜av一区二区三区| 国产婷婷色一区二区三区| 欧美日韩一级黄| 国产不卡视频在线播放| 日本成人超碰在线观看| 国产精品高潮呻吟久久| 精品国产一区二区三区不卡| 在线视频欧美精品| 懂色av中文一区二区三区| 麻豆国产精品视频| 日韩成人一级片| 亚洲色图19p| 国产偷国产偷亚洲高清人白洁| 欧美美女网站色| 一本高清dvd不卡在线观看| 国产盗摄精品一区二区三区在线| 丝袜诱惑制服诱惑色一区在线观看| 国产精品欧美一区二区三区| 精品国产一区二区三区久久影院 | 91麻豆蜜桃一区二区三区| 狠狠色丁香久久婷婷综合_中 | jiyouzz国产精品久久| 蜜臀va亚洲va欧美va天堂| 亚洲一区二区三区在线看| 国产精品美女久久久久aⅴ| 久久综合色婷婷| 6080yy午夜一二三区久久| 日本高清不卡aⅴ免费网站| 成人高清视频免费观看| 激情综合网最新| 麻豆91精品91久久久的内涵| 视频在线观看一区| 亚洲综合在线第一页| 日韩欧美一级特黄在线播放| av成人免费在线| 国产91在线看| 国产综合久久久久久鬼色 | 欧美日韩日日骚| 色av成人天堂桃色av| jlzzjlzz亚洲日本少妇| 懂色av一区二区三区蜜臀 | 久久综合九色综合欧美亚洲| 日韩色在线观看| 日韩一区二区三区在线|