12
返回列表 发新帖
楼主: quewuhongchen

[其他] CAN同步问题!

[复制链接]

该用户从未签到

10

主题

42

帖子

0

新手上路

Rank: 1

积分
115
最后登录
1970-1-1
 楼主| 发表于 2010-11-17 09:52:07 | 显示全部楼层

RE:CAN同步问题!

main:
_Startup:
Entry:
     LDS   #__SEG_END_SSTACK     ; initialize the stack pointer
     LDAA  #$01                 ;进入初始化
     STAA  CAN0CTL0
LOOP1:
     BRCLR CAN0CTL1,#$01,LOOP1   ;看是否真正进入初始化
      LDAA  #$80;C0               
     STAA  CAN0CTL1             ;使能,系统时钟  NO LOOP
     LDAA  #$C1;01  ;0F
     STAA  CAN0BTR0
     LDAA  #$67   ;1C
     STAA  CAN0BTR1    ;波特率设置
;**************   
     LDAA  #$10
     STAA  CAN0IDAC
     LDAA  #$20
     STAA  CAN0IDAR0
     LDAA  #$00
     STAA  CAN0IDMR0
     LDAA  #$00
     STAA  CAN0IDAR1
     LDAA  #$07
     STAA  CAN0IDMR1
         
     LDAA  #$00
     STAA  CAN0IDAR2
     LDAA  #$00
     STAA  CAN0IDMR2
     
     LDAA  #$00
     STAA  CAN0IDAR3
     LDAA  #$07
     STAA  CAN0IDMR3

     LDAA  #$00
     STAA  CAN0IDAR4
     LDAA  #$00
     STAA  CAN0IDMR4
     LDAA  #$00
     STAA  CAN0IDAR5
     LDAA  #$07
     STAA  CAN0IDMR5
     LDAA  #$00
     STAA  CAN0IDAR6
     LDAA  #$00
     STAA  CAN0IDMR6
     
     LDAA  #$00
     STAA  CAN0IDAR7
     LDAA  #$07
     STAA  CAN0IDMR7
     
  ;**************
   
   ;  LDAA  #$00                ;完成初始化
   ;  STAA  CAN0CTL0
     BCLR  CAN0CTL0,#$01
LOOP2:
     BRSET CAN0CTL1,#$01,LOOP2   ;初始化是否已经完成
LOOP3:
;    BRCLR CAN0CTL0,#$10,LOOP3   ;同步否  暂时去掉同步判断
     NOP
LOOP4:
     TST   CAN0TFLG
     BEQ   LOOP4        ;相同或不相同
               
     MOVB  CAN0TFLG,CAN0TBSEL    ;CAN0TBSEL=CAN0TFLG
     MOVB  CAN0TBSEL,abcd       ; abcd=CAN0TBSEL

     LDAA  #$20            ;id
     STAA  CAN0TXIDR0
     LDAA  #$00
     STAA  CAN0TXIDR1
     LDAA  #$00
     STAA  CAN0TXIDR2
     LDAA  #$00        
     STAA  CAN0TXIDR3   
      
                             
     LDAA  #$08            ;8位字节长
     STAA  CAN0TXDLR
     
     LDAA  #$00
     STAA  CAN0TXTBPR     ;配置优先级
     
     
     LDAA  #$F8
     STAA  CAN0TXDSR0      ;data
     LDAA  #$8F
     STAA  CAN0TXDSR1      ;data
      
     MOVB  abcd,CAN0TFLG  ;清除TxE位,发送  CAN0TFLG=abcd   
LOOP5:     
    ;  TST  CAN0TFLG           ;发送成功了没?
    ; BEQ  LOOP5
     LDAA  abcd
     ANDA  CAN0TFLG
     TSTA  
     BEQ   LOOP5
   ;   while(!(CANTFLG & txbuffer));
LOOP6:
     NOP
        LDX    #$3996  ;延时
DLOOP: DEX
       BNE   DLOOP
      
       NOP
      NOP
      NOP      
     BRA   LOOP4     ;*************
  ;      
LOOP7:
     BRCLR CAN0RFLG,#$01,LOOP7   ;         
     MOVB  CAN0RXDSR0,acd
     bset  CAN0RFLG,#$01
     bra  LOOP4
        END
大家有空帮我瞧瞧

该用户从未签到

10

主题

42

帖子

0

新手上路

Rank: 1

积分
115
最后登录
1970-1-1
 楼主| 发表于 2010-11-17 09:53:38 | 显示全部楼层

RE:CAN同步问题!

LOOP模式下,能通过
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-11-17 10:51:29 | 显示全部楼层

    RE:CAN同步问题!

    CAN总线必须连接120欧的电阻,CAN的波特率一般250K,如果用示波器测试,时间一定要小。
    该会员没有填写今日想说内容.

    该用户从未签到

    10

    主题

    42

    帖子

    0

    新手上路

    Rank: 1

    积分
    115
    最后登录
    1970-1-1
     楼主| 发表于 2010-11-17 11:55:13 | 显示全部楼层

    回复:CAN同步问题!

    回复第 13 楼 安 于2010-11-17 02:51:29发表:
    CAN总线必须连接120欧的电阻,CAN的波特率一般250K,如果用示波器测试,时间一定要小。 

    不行啊!我接了120欧的电阻,而且使用,示波器的5us
    也无法采集到波形。
    弱弱的问句,假如我没挂CAN节点,就 一直从复发。因为没应答也不会进入CAN-OFF状态。
    应该示波器能采集到连续变化发送波形。
    而且我的程序因为无应答,而无法子将发送成功状态位置位。
    可我现在我采集了下,单片机和CAN收发器之间也无波形,是不是可以证明。此程序有问题?
    我使用的是12D64芯片
     

    该用户从未签到

    10

    主题

    42

    帖子

    0

    新手上路

    Rank: 1

    积分
    115
    最后登录
    1970-1-1
     楼主| 发表于 2010-11-17 12:01:00 | 显示全部楼层

    RE:CAN同步问题!

    而且我发现在MOVB abcd,CAN0TFLG ;清除TxE位时会把数据寄存器里的内容同时清0

    该用户从未签到

    10

    主题

    42

    帖子

    0

    新手上路

    Rank: 1

    积分
    115
    最后登录
    1970-1-1
     楼主| 发表于 2010-11-17 12:02:04 | 显示全部楼层

    RE:CAN同步问题!

    而且我发现在MOVB abcd,CAN0TFLG ;清除TxE位时会把数据寄存器里的内容同时清0。这是对的吗?
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-11-17 14:03:49 | 显示全部楼层

    RE:CAN同步问题!

    那是正常的,如果没有接收器,发送将出现溢出或者其他的错误。
    该会员没有填写今日想说内容.
    回复 支持 1 反对 0

    使用道具 举报

    该用户从未签到

    10

    主题

    42

    帖子

    0

    新手上路

    Rank: 1

    积分
    115
    最后登录
    1970-1-1
     楼主| 发表于 2010-11-17 14:35:52 | 显示全部楼层

    回复:CAN同步问题!

    回复第 17 楼 安 于2010-11-17 06:03:49发表:
    那是正常的,如果没有接收器,发送将出现溢出或者其他的错误。 
     
    麻烦安兄弟,抽个空帮我看看吧
    实在是没折了。用示波器测试不到波形!倒啊我
    帮帮忙

    该用户从未签到

    10

    主题

    42

    帖子

    0

    新手上路

    Rank: 1

    积分
    115
    最后登录
    1970-1-1
     楼主| 发表于 2010-11-17 14:49:56 | 显示全部楼层

    RE:CAN同步问题!

    #include       /* common defines and macros */
    #include "derivative.h"      /* derivative-specific definitions */
    char txbuffer=0;

       void delay()
    {
      long j=60000;
      while(j--);
      j=60000;
      while(j--);
    }

    void main(void) {
    CAN0CTL0 = 0x01;              /*        enter init mode */
       while(!(CAN0CTL1_INITAK));                /* wait for init mode */
       CAN0CTL1 = 0x80; /*C0*0xA0;*/        /* enable CAN module, Loopback Mode, Ext OSC */  
       CAN0BTR0 = 0x01; /*C3*/;        /* sync jump - 4 Tq clocks, prescalar = 3 */
       CAN0BTR1 = 0x67; /*3A*/;        /* Tseg = 3, Tseg1 = 10, 1 sample per bit */
       CAN0IDAC = 0x10;        /* four 16-bit filters */
    //  CAN0IDAR0 = 0x20;        /* Filter 0, ID=0x100 Standard Identifier */
      // CAN0IDMR0 = 0x00;
      // CAN0IDAR1 = 0x00;
      // CAN0IDMR1 = 0x07; /* AM[2:0] = 7 to receive standard identifiers */
    //  CAN0IDAR2 = 0x00; /* Filter 1, ID=0x0000 */
    //  CAN0IDMR2 = 0x00;
    //  CAN0IDAR3 = 0x00;
    //  CAN0IDMR3 = 0x07; /* AM[2:0] = 7 to receive standard identifiers */
    //  CAN0IDAR4 = 0x00;        /* Filter 2, ID=0x0000 */
    //  CAN0IDMR4 = 0x00;
    //  CAN0IDAR5 = 0x00;
    //  CAN0IDMR5 = 0x07; /* AM[2:0] = 7 to receive standard identifiers */
    //  CAN0IDAR6 = 0x00;        /* Filter 3, ID=0x0000 */
    //  CAN0IDMR6 = 0x00;
    //  CAN0IDAR7 = 0x00;
    //  CAN0IDMR7 = 0x07; /* AM[2:0] = 7 to receive standard identifiers */
       CAN0CTL0 = 0x00;        /* exit init mode */
       while(CAN0CTL1_INITAK);                        /* wait until module exits init mode */
         
      // while(!(CAN0CTL0_SYNCH));                /* wait for CAN module to synch */
      
    //         CAN0RFLG = 0xC3;                                        /* reset Rx flags */
                        
       for(;;)
        {
       
         while (!CAN0TFLG);      /* Wait for empty Tx Buffer */
         CAN0TBSEL = CAN0TFLG;         /* Select the empty Tx Buffer */
               txbuffer = CAN0TBSEL;  /* Save the empty buffer */
         CAN0TXIDR0 = 0x20;    /* load message id value to ID regs */
         CAN0TXIDR1 = 0x00;
         CAN0TXIDR2 = 0x00;
         CAN0TXIDR3 = 0x00;
         CAN0TXDSR0 = 0X03;                /* load data to send */

         CAN0TXDLR = 0x01;                        /* set data length */
         CAN0TXTBPR = 0x80;                /* set data buffer priority */
         CAN0TFLG = txbuffer;  /* start transmission */
         while(!(CAN0TFLG & txbuffer));        /* wait for Tx to complete */
         
         delay();
         
            //         if(CAN0RFLG_RXF)    /* has a message been received ? */
    //                  {
    //                    txbuffer1 = CAN0RXDSR0; /* Display transmitted PORTB on LEDs */
    //       CAN0RFLG_RXF =1;    /* Clear RXF */   
    //                  }
                    }   
    }

    该用户从未签到

    10

    主题

    42

    帖子

    0

    新手上路

    Rank: 1

    积分
    115
    最后登录
    1970-1-1
     楼主| 发表于 2010-11-17 14:50:30 | 显示全部楼层

    RE:CAN同步问题!

    C语言写的,也是一样问题
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 14:15 , Processed in 0.100306 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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