在线时间0 小时
UID180333
注册时间2010-4-7
NXP金币0
该用户从未签到
新手上路

- 积分
- 70
- 最后登录
- 1970-1-1
|
不能修改CANTFLG中的值,最后读出来的值始终是0x07,这是为什么?
/*----------------------------------------------------------------mscan初始化------------------------------------------------------------*/
void MSCAN_Init ( void ) {
INT8U sjw, brp;
INT8U tseg1,tseg2;
if( !CANCTL0_INITRQ ) CANCTL0_INITRQ = 1; //激活CAN初始化模式
while( !CANCTL1_INITAK ); //等待进入初始化模式
时间冲量设置
滤波器设置
CANCTL1_CANE = 1; //MSCAN模块使能
CANCTL1_LISTEN = 0;
CANCTL1_LOOPB = 1; //LOOP模式
CANCTL1_CLKSRC = 1;
CANCTL0_INITRQ = 0; //切换到普通模式
while( CANCTL1_INITAK ); //等待切换到普通模式
while( !CANCTL0_SYNCH ); //等待MSCAN与总线同步
CANRIER_RXFIE = 1; //使能接收缓冲器满中断
CANRFLG_RXF = 1;
}
/*----------------------------------------------------------------发送------------------------------------------------------------*/
INT8U MSCAN_SendMsg( CanMsg msg )
{
INT8U txbuf_num, i;
if( msg.len > MAX_LEN ) return ( FALSE ); /*检查消息数据长度是否小于8*/
if( !CANCTL0_SYNCH ) return ( FALSE ); /*检查是否与CAN总线同步*/
txbuf_num = 0;
do{ /*查询一个空的发送缓冲器*/
CANTBSEL = CANTFLG;
txbuf_num = CANTBSEL;
}while( !txbuf_num );
CANTIDR0 = ( INT8U )( msg.id >> 3 ); /*写标识符*/
CANTIDR1 = ( INT8U )( msg.id
|
|