查看: 3328|回复: 1

[其他] DZ32的MSCAN

[复制链接]

该用户从未签到

9

主题

18

帖子

0

新手上路

Rank: 1

积分
70
最后登录
1970-1-1
发表于 2010-10-4 23:26:17 | 显示全部楼层 |阅读模式
不能修改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
我知道答案 目前已有0人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-10-5 20:36:45 | 显示全部楼层

    RE:DZ32的MSCAN

    发送状态寄存器,表示你使用的是buffer7来发送的。这个需要你连接一个CAN接收器,当数据被接收以后,该位会清零。
    该会员没有填写今日想说内容.
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 00:10 , Processed in 0.084877 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表