| 
在线时间0 小时
UID209373
注册时间2009-9-17
NXP金币0 
 该用户从未签到 新手上路 
 
 
	积分57 
最后登录1970-1-1 | 
 
| 我用的是MC9S12P32单片机,程序初始化不成功,老是在 while(!(CANCTL0_SYNCH));  /* Wait for Synchronization */这里等待,以下是我的初始化代码,希望能得到高人的指点,已经调了有几天了. void CANInit(void) {
 CANCTL0 |= CANCTL0_INITRQ_MASK;          /* Enter Initialization Mode
 *
 *  0b00000001
 *    ||||||||__ Enter Initialization Mode
 *    |||||||___ Sleep Mode Request bit
 *    ||||||____ Wake-Up disabled
 *    |||||_____ Time stamping disabled
 *    ||||______ Synchronized Status
 *    |||_______ CAN not affected by Wait
 *    ||________ Receiver Active Status bit
 *    |_________ Received Frame Flag bit
 */
 
 while (!(CANCTL1&0x01)){}; /* Wait for Initialization Mode acknowledge
 * INITRQ bit = 1
 */
 CANCTL1 |= CANCTL1_CANE_MASK|CANCTL1_CLKSRC_MASK;
 CANCTL1_LOOPB = 0;          /* Set to 1 for LoopBack Mode, 0 otherwise */
 CANCTL1_LISTEN = 0;         /* Not listen only mode 0ÊÇÕý³£Ä£Ê½*/
 
 
 CANBTR0_BRP = 1;
 CANBTR0_SJW =1;
 CANBTR1_SAMP = 0;      /* One sample per bit */
 
 
 CANBTR1_TSEG_10 = 4;
 
 CANBTR1_TSEG_20 = 1;
 
 
 CANIDAC_IDAM = 0x01;               /* Four 16-bit acceptance filters */
 
 
 
 
 /* Acceptance Filters */
 CANIDAR0 = ACC_CODE_ID100_HIGH;    //|\    16 bit Filter 0
 CANIDMR0 =0xff; //MASK_CODE_ST_ID_HIGH;   //| \__ Accepts Standard Data Frame Msg
 CANIDAR1 = ACC_CODE_ID100_LOW;     //| /   with ID 0x100
 CANIDMR1 = 0xff;//MASK_CODE_ST_ID_LOW;    //|/
 
 
 CANIDAR2 = 0x00;                   //|\    16 bit Filter 1
 CANIDMR2 =0xff;// MASK_CODE_ST_ID_HIGH;   //| \__ Accepts Standard Data Frame Msg
 CANIDAR3 = 0x00;                   //| /   with ID 0x000
 CANIDMR3 = 0xff;//MASK_CODE_ST_ID_LOW;    //|/
 
 CANIDAR4 = 0x00;                   //|\    16 bit Filter 2
 CANIDMR4 = 0xff;//MASK_CODE_ST_ID_HIGH;   //| \__ Accepts Standard Data Frame Msg
 CANIDAR5 = 0x00;                   //| /   with ID 0x000
 CANIDMR5 = 0xff;//MASK_CODE_ST_ID_LOW;    //|/
 
 CANIDAR6 = 0x00;                   //|\    16 bit Filter 3
 CANIDMR6 = 0xff;//MASK_CODE_ST_ID_HIGH;   //| \__ Accepts Standard Data Frame Msg
 CANIDAR7 = 0x00;                   //| /   with ID 0x000
 CANIDMR7 = 0xff;//MASK_CODE_ST_ID_LOW;    //|/
 
 CANCTL0_INITRQ = 0;            /* Exit initialization mode request */
 while (CANCTL1_INITAK); /* Wait for Normal Mode */
 while(!(CANCTL0_SYNCH));  /* Wait for Synchronization */
 CANRFLG_RXF = 1;       /* Clear receiver flags */
 CANRIER_RXFIE = 0;     /* Enable Full Receive Buffer interrupt */
 
 }
 | 
 |