SPIReset();//MCP2515复位,进入配置模式 
         
//        delay_ms(1); 
/*--------初始化接收过滤器,接收屏蔽器-----*/ 
        SPIByteWrite(RXM0SIDH,0x00); 
SPIByteWrite(RXM0SIDL,0x00);        //屏蔽器 
 
SPIByteWrite(RXF0SIDH,0x00);//过滤器 
SPIByteWrite(RXF0SIDL,0x00); 
/*-------------*/ 
//设置波特率为125Kbps        ,共16个tq 
//setCNF1,SJW=00,长度为1TQ,BRP=1,TQ=[2*(BRP+1)]/Fsoc=2*2/8M=0.5us 
//number=SPIByteRead(CNF2); 
SPIByteWrite(CNF1,0x01); 
//number=SPIByteRead(CNF1); 
//setCNF2,SAM=0,在采样点对总线进行一次采样,PHSEG1=(6+1)TQ=7TQ,PRSEG=(1+1)TQ=2TQ 
SPIByteWrite(CNF2,0xB1); 
         
//setCNF3,PHSEG2=(5+1)TQ=6TQ,同时当CANCTRL.CLKEN=1时设定CLKOUT引脚为时间输出使能位 
SPIByteWrite(CNF3,0x05); 
//number=SPIByteRead(CNF3); 
/////////////////////////////////////////////////////////////// 
 
//setTXB0,设置发送缓冲器0的标识符和发送的数据,以及发送的数据长度 
SPIByteWrite(TXB0SIDH,0x00);//设置发送缓冲器0的标准标识符,待修改*** 
SPIByteWrite(TXB0SIDL,0x00);//用到标准标识符 
 
//SPIByteWrite(TXB0D0,0x1E);//有待修改及确定是否使用 
//SPIByteWrite(TXB0D1,0x10);//有待修改及确定是否使用 
 
/*setTXB1 
SPIByteWrite(TXB1SIDH,0x50);//SetTXB0SIDH 
SPIByteWrite(TXB1SIDL,0x00);//SetTXB0SIDL 
SPIByteWrite(TXB1DLC,0x40|DLC_8);//SetDLC=3bytesandRTRbit*/ 
 
//设置接收缓冲器0的标识符和初始化数据 
SPIByteWrite(RXB0SIDH,0x00);//设置接收缓冲器0的标准标识符,待修改*** 
SPIByteWrite(RXB0SIDL,0x60);//用到标准标识符 
SPIByteWrite(RXB0CTRL,0x60);//仅仅接收标准标识符的有效信息,FIILHIT0=0表示RXB0,采用FILHIT0 
SPIByteWrite(RXB0DLC,DLC_8);//设置接收数据的长度为8个字节 
 
SPIByteWrite(RXF0SIDH,0x00);//初始化接收滤波器0,待修改*** 
SPIByteWrite(RXF0SIDL,0x00); 
SPIByteWrite(RXM0SIDH,0xFF);//初始化接收屏蔽器0,待修改*** 
 
SPIByteWrite(CANCTRL,REQOP_NORMAL|CLKOUT_ENABLED);//设置正常模式 
dummy=SPIByteRead(CANSTAT);//如果还处于配置模式,就进入工作模式配置 
if(OPMODE_NORMAL!=(dummy&&0xE0)) 
{ 
SPIByteWrite(CANCTRL,REQOP_NORMAL|CLKOUT_ENABLED);//判断进入正常工作模式 
dummy=SPIByteRead(CANSTAT); 
} 
以上是我的初始化代码;下面是我的发送代码 
unsignedchartempdata,j; 
tempdata=SPIByteRead(CAN_RD_STATUS); 
SPIByteWrite(TXB0DLC,length1);//设置发送的数据长度码 
for(j=0;j<length1;j++) 
{ 
SPIByteWrite(TXB0D0+j,CAN_TX_Buf[j]); 
} 
 
if(tempdata&0x04)//判断TXREQ标志位 
{ 
delay1ms(1); 
SPIByteWrite(TXB0CTRL,0);//清除TXREQ标志位 
while(SPIByteRead(CAN_RD_STATUS)&0x04);//等待TXREQ清零 
} 
CS=0; 
WriteSPI(CAN_RTS_TXB0);//发送缓冲器0请求发送 
CS=1; 
就是发送不了,求助下,谢谢大家
 |