⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can.lst

📁 Tried to make CAN logger on AT91sam7X-ek, but have no idea how to implement FATFs... -( I m just a
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000034   000090E5           LDR      R0,[R0, #+0]
   \   00000038   041080E5           STR      R1,[R0, #+4]
    352                  pCAN0Transfer->acceptance_mask_reg = 0;
   \   0000003C   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000040   000090E5           LDR      R0,[R0, #+0]
   \   00000044   081080E5           STR      R1,[R0, #+8]
    353                  pCAN0Transfer->identifier = 0;
   \   00000048   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   0000004C   000090E5           LDR      R0,[R0, #+0]
   \   00000050   0C1080E5           STR      R1,[R0, #+12]
    354                  pCAN0Transfer->data_low_reg = 0x00000000;
   \   00000054   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000058   000090E5           LDR      R0,[R0, #+0]
   \   0000005C   101080E5           STR      R1,[R0, #+16]
    355                  pCAN0Transfer->data_high_reg = 0x00000000;
   \   00000060   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000064   000090E5           LDR      R0,[R0, #+0]
   \   00000068   141080E5           STR      R1,[R0, #+20]
    356                  pCAN0Transfer->control_reg = 0x00000000;
   \   0000006C   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000070   000090E5           LDR      R0,[R0, #+0]
   \   00000074   181080E5           STR      R1,[R0, #+24]
    357                  CAN_InitMailboxRegisters( pCAN0Transfer );
   \   00000078   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   0000007C   000090E5           LDR      R0,[R0, #+0]
   \   00000080   ........           BL       CAN_InitMailboxRegisters
    358              }
   \   00000084   014084E2           ADD      R4,R4,#+1
   \   00000088   FF0004E2           AND      R0,R4,#0xFF
   \   0000008C   080050E3           CMP      R0,#+8
   \   00000090   DFFFFF3A           BCC      ??CAN_ResetAllMailbox_0
    359          #endif
    360          #if defined (AT91C_BASE_CAN0_MB8)
    361              for( i=0; i<8; i++ ) {
    362                  pCAN0Transfer->can_number = 0;
    363                  pCAN0Transfer->mailbox_number = i+8;
    364                  pCAN0Transfer->mode_reg = AT91C_CAN_MOT_DIS;
    365                  pCAN0Transfer->acceptance_mask_reg = 0;
    366                  pCAN0Transfer->identifier = 0;
    367                  pCAN0Transfer->data_low_reg = 0x00000000;
    368                  pCAN0Transfer->data_high_reg = 0x00000000;
    369                  pCAN0Transfer->control_reg = 0x00000000;
    370                  CAN_InitMailboxRegisters( pCAN0Transfer );
    371              }
    372          #endif
    373          
    374          #if defined (AT91C_BASE_CAN1_MB0)
    375              if( pCAN1Transfer != NULL ) {
    376                  CAN_ResetTransfer( pCAN1Transfer );
    377                  for( i=0; i<8; i++ ) {
    378                      pCAN1Transfer->can_number = 1;
    379                      pCAN1Transfer->mailbox_number = i;
    380                      pCAN1Transfer->mode_reg = AT91C_CAN_MOT_DIS;
    381                      pCAN1Transfer->acceptance_mask_reg = 0;
    382                      pCAN1Transfer->identifier = 0;
    383                      pCAN1Transfer->data_low_reg = 0x00000000;
    384                      pCAN1Transfer->data_high_reg = 0x00000000;
    385                      pCAN1Transfer->control_reg = 0x00000000;
    386                      CAN_InitMailboxRegisters( pCAN1Transfer );
    387                  }
    388              }
    389          #endif
    390          #if defined (AT91C_BASE_CAN1_MB8)
    391              if( pCAN1Transfer != NULL ) {
    392                  for( i=0; i<8; i++ ) {
    393                      pCAN1Transfer->can_number = 1;
    394                      pCAN1Transfer->mailbox_number = i+8;
    395                      pCAN1Transfer->mode_reg = AT91C_CAN_MOT_DIS;
    396                      pCAN1Transfer->acceptance_mask_reg = 0;
    397                      pCAN1Transfer->identifier = 0;
    398                      pCAN1Transfer->data_low_reg = 0x00000000;
    399                      pCAN1Transfer->data_high_reg = 0x00000000;
    400                      pCAN1Transfer->control_reg = 0x00000000;
    401                      CAN_InitMailboxRegisters( pCAN1Transfer );
    402                  }
    403              }
    404          #endif
    405          
    406          }
   \   00000094   1040BDE8           POP      {R4,LR}
   \   00000098   1EFF2FE1           BX       LR               ;; return
    407          
    408          //------------------------------------------------------------------------------
    409          /// CAN reset Transfer descriptor
    410          /// \param pTransfer can transfer structure
    411          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    412          void CAN_ResetTransfer( CanTransfer *pTransfer )
    413          {
    414              pTransfer->state = CAN_IDLE;
   \                     CAN_ResetTransfer:
   \   00000000   0210A0E3           MOV      R1,#+2
   \   00000004   0010C0E5           STRB     R1,[R0, #+0]
    415              pTransfer->can_number = 0;
   \   00000008   0010A0E3           MOV      R1,#+0
   \   0000000C   0110C0E5           STRB     R1,[R0, #+1]
    416              pTransfer->mailbox_number = 0;
   \   00000010   0210C0E5           STRB     R1,[R0, #+2]
    417              pTransfer->test_can = 0;
   \   00000014   0310C0E5           STRB     R1,[R0, #+3]
    418              pTransfer->mode_reg = 0;
   \   00000018   041080E5           STR      R1,[R0, #+4]
    419              pTransfer->acceptance_mask_reg = 0;
   \   0000001C   081080E5           STR      R1,[R0, #+8]
    420              pTransfer->identifier = 0;
   \   00000020   0C1080E5           STR      R1,[R0, #+12]
    421              pTransfer->data_low_reg = 0;
   \   00000024   101080E5           STR      R1,[R0, #+16]
    422              pTransfer->data_high_reg = 0;
   \   00000028   141080E5           STR      R1,[R0, #+20]
    423              pTransfer->control_reg = 0;
   \   0000002C   181080E5           STR      R1,[R0, #+24]
    424              pTransfer->mailbox_in_use = 0;
   \   00000030   1C1080E5           STR      R1,[R0, #+28]
    425              pTransfer->size = 0;
   \   00000034   201080E5           STR      R1,[R0, #+32]
    426          }
   \   00000038   1EFF2FE1           BX       LR               ;; return
    427          
    428          //------------------------------------------------------------------------------
    429          /// Wait for CAN synchronisation
    430          /// \return return 1 for good initialisation, otherwise return 0
    431          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    432          static unsigned char CAN_Synchronisation( void )
    433          {
   \                     CAN_Synchronisation:
   \   00000000   10402DE9           PUSH     {R4,LR}
    434              unsigned int tick=0;
   \   00000004   0040A0E3           MOV      R4,#+0
    435          
    436              TRACE_INFO("CAN_Synchronisation\n\r");
   \   00000008   88009FE5           LDR      R0,??CAN_Synchronisation_0  ;; `?<Constant "-I- CAN_Synchronisati...">`
   \   0000000C   ........           BL       printf
    437          
    438              pCAN0Transfer->test_can = AT91C_TEST_NOK;
   \   00000010   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000014   000090E5           LDR      R0,[R0, #+0]
   \   00000018   0010A0E3           MOV      R1,#+0
   \   0000001C   0310C0E5           STRB     R1,[R0, #+3]
    439          #ifdef AT91C_BASE_CAN1
    440              if( pCAN1Transfer != NULL ) {
    441                  pCAN1Transfer->test_can = AT91C_TEST_NOK;
    442              }
    443          #endif
    444              // Enable CAN and Wait for WakeUp Interrupt
    445              AT91C_BASE_CAN0->CAN_IER = AT91C_CAN_WAKEUP;
   \   00000020   ........           LDR      R0,??DataTable27  ;; 0xfffd0004
   \   00000024   8019A0E3           MOV      R1,#+2097152
   \   00000028   001080E5           STR      R1,[R0, #+0]
    446              // CAN Controller Enable
    447              AT91C_BASE_CAN0->CAN_MR = AT91C_CAN_CANEN;
   \   0000002C   0400C0E3           BIC      R0,R0,#0x4
   \   00000030   0110A0E3           MOV      R1,#+1
   \   00000034   001080E5           STR      R1,[R0, #+0]
   \   00000038   000000EA           B        ??CAN_Synchronisation_1
    448              // Enable Autobaud/Listen mode
    449              // dangerous, CAN not answer in this mode
    450          
    451               while( (pCAN0Transfer->test_can != AT91C_TEST_OK)
    452                   && (tick < AT91C_CAN_TIMEOUT) ) {
    453                  tick++;
   \                     ??CAN_Synchronisation_2:
   \   0000003C   014084E2           ADD      R4,R4,#+1
    454              }
   \                     ??CAN_Synchronisation_1:
   \   00000040   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000044   000090E5           LDR      R0,[R0, #+0]
   \   00000048   0300D0E5           LDRB     R0,[R0, #+3]
   \   0000004C   010050E3           CMP      R0,#+1
   \   00000050   0300000A           BEQ      ??CAN_Synchronisation_3
   \   00000054   600BA0E3           MOV      R0,#+98304
   \   00000058   6A0E80E3           ORR      R0,R0,#0x6A0
   \   0000005C   000054E1           CMP      R4,R0
   \   00000060   F5FFFF3A           BCC      ??CAN_Synchronisation_2
    455              if (tick == AT91C_CAN_TIMEOUT) {
   \                     ??CAN_Synchronisation_3:
   \   00000064   600BA0E3           MOV      R0,#+98304
   \   00000068   6A0E80E3           ORR      R0,R0,#0x6A0
   \   0000006C   000054E1           CMP      R4,R0
   \   00000070   0300001A           BNE      ??CAN_Synchronisation_4
    456                  TRACE_ERROR("CAN0 Initialisations FAILED\n\r");
   \   00000074   20009FE5           LDR      R0,??CAN_Synchronisation_0+0x4  ;; `?<Constant "-E- CAN0 Initialisati...">`
   \   00000078   ........           BL       printf
    457                  return 0;
   \   0000007C   0000A0E3           MOV      R0,#+0
   \   00000080   020000EA           B        ??CAN_Synchronisation_5
    458              } else {
    459                  TRACE_INFO("CAN0 Initialisations Completed\n\r");
   \                     ??CAN_Synchronisation_4:
   \   00000084   14009FE5           LDR      R0,??CAN_Synchronisation_0+0x8  ;; `?<Constant "-I- CAN0 Initialisati...">`
   \   00000088   ........           BL       printf
    460              }
    461          
    462          #if defined AT91C_BASE_CAN1
    463              if( pCAN1Transfer != NULL ) {
    464                  AT91C_BASE_CAN1->CAN_IER = AT91C_CAN_WAKEUP;
    465                  // CAN Controller Enable
    466                  AT91C_BASE_CAN1->CAN_MR = AT91C_CAN_CANEN;
    467          
    468                  tick = 0;
    469                  // Wait for WAKEUP flag raising <=> 11-recessive-bit were scanned by the transceiver
    470                  while( ((pCAN1Transfer->test_can != AT91C_TEST_OK)) 
    471                      && (tick < AT91C_CAN_TIMEOUT) ) {
    472                      tick++;
    473                  }
    474          
    475                  if (tick == AT91C_CAN_TIMEOUT) {
    476                      TRACE_ERROR("CAN1 Initialisations FAILED\n\r");
    477                      return 0;
    478                  } else {
    479                      TRACE_INFO("CAN1 Initialisations Completed\n\r");
    480                  }
    481              }
    482          #endif
    483              return 1;
   \   0000008C   0100A0E3           MOV      R0,#+1
   \                     ??CAN_Synchronisation_5:
   \   00000090   1040BDE8           POP      {R4,LR}
   \   00000094   1EFF2FE1           BX       LR               ;; return
   \                     ??CAN_Synchronisation_0:
   \   00000098   ........           DC32     `?<Constant "-I- CAN_Synchronisati...">`
   \   0000009C   ........           DC32     `?<Constant "-E- CAN0 Initialisati...">`

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -