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

📄 mcp2515.lst

📁 IAR5.2下 AT91SAM9260 ARM 对 MCP2515 控制源化码
💻 LST
📖 第 1 页 / 共 5 页
字号:
    315                  case BandRate_100kbps:
    316                      MCP2515_Write(CNF1, SJW1|0x4);	                //Synchronization Jump Width Length =1 TQ
   \                     ??MCP2515_SetBandRate_6:
   \   000000F8   0410A0E3           MOV      R1,#+4
   \   000000FC   2A00A0E3           MOV      R0,#+42
   \   00000100   ........           BL       MCP2515_Write
    317                      MCP2515_Write(CNF2, BTLMODE_CNF3|(SEG4<<3)|SEG7);   // Phase Seg 1 = 4, Prop Seg = 7
   \   00000104   9E10A0E3           MOV      R1,#+158
   \   00000108   2900A0E3           MOV      R0,#+41
   \   0000010C   ........           BL       MCP2515_Write
    318                      MCP2515_Write(CNF3, SEG4);                          // Phase Seg 2 = 4
   \   00000110   0310A0E3           MOV      R1,#+3
   \   00000114   2800A0E3           MOV      R0,#+40
   \   00000118   ........           BL       MCP2515_Write
   \   0000011C   440000EA           B        ??MCP2515_SetBandRate_1
    319                      break;	
    320          		
    321                  case BandRate_125kbps:
    322                      MCP2515_Write(CNF1, SJW1|BRP4);	                //Synchronization Jump Width Length =1 TQ
   \                     ??MCP2515_SetBandRate_7:
   \   00000120   0310A0E3           MOV      R1,#+3
   \   00000124   2A00A0E3           MOV      R0,#+42
   \   00000128   ........           BL       MCP2515_Write
    323                      MCP2515_Write(CNF2, BTLMODE_CNF3|(SEG4<<3)|SEG7);   // Phase Seg 1 = 4, Prop Seg = 7
   \   0000012C   9E10A0E3           MOV      R1,#+158
   \   00000130   2900A0E3           MOV      R0,#+41
   \   00000134   ........           BL       MCP2515_Write
    324                      MCP2515_Write(CNF3, SEG4);                          // Phase Seg 2 = 4
   \   00000138   0310A0E3           MOV      R1,#+3
   \   0000013C   2800A0E3           MOV      R0,#+40
   \   00000140   ........           BL       MCP2515_Write
   \   00000144   3A0000EA           B        ??MCP2515_SetBandRate_1
    325                      break;
    326          		
    327                  case BandRate_142kbps:
    328                      MCP2515_Write(CNF1, SJW1|0x6);	                //Synchronization Jump Width Length =1 TQ
   \                     ??MCP2515_SetBandRate_8:
   \   00000148   0610A0E3           MOV      R1,#+6
   \   0000014C   2A00A0E3           MOV      R0,#+42
   \   00000150   ........           BL       MCP2515_Write
    329                      MCP2515_Write(CNF2, BTLMODE_CNF3|(SEG3<<3)|SEG2);   // Phase Seg 1 = 4, Prop Seg = 7
   \   00000154   9110A0E3           MOV      R1,#+145
   \   00000158   2900A0E3           MOV      R0,#+41
   \   0000015C   ........           BL       MCP2515_Write
    330                      MCP2515_Write(CNF3, SEG2);                          // Phase Seg 2 = 4
   \   00000160   0110A0E3           MOV      R1,#+1
   \   00000164   2800A0E3           MOV      R0,#+40
   \   00000168   ........           BL       MCP2515_Write
   \   0000016C   300000EA           B        ??MCP2515_SetBandRate_1
    331                      break;	
    332          		
    333                  case BandRate_167kbps:
    334                      MCP2515_Write(CNF1, SJW1|0x2);	                //Synchronization Jump Width Length =1 TQ
   \                     ??MCP2515_SetBandRate_9:
   \   00000170   0210A0E3           MOV      R1,#+2
   \   00000174   2A00A0E3           MOV      R0,#+42
   \   00000178   ........           BL       MCP2515_Write
    335                      MCP2515_Write(CNF2, BTLMODE_CNF3|(SEG4<<3)|SEG7);   // Phase Seg 1 = 4, Prop Seg = 7
   \   0000017C   9E10A0E3           MOV      R1,#+158
   \   00000180   2900A0E3           MOV      R0,#+41
   \   00000184   ........           BL       MCP2515_Write
    336                      MCP2515_Write(CNF3, SEG4);                          // Phase Seg 2 = 4
   \   00000188   0310A0E3           MOV      R1,#+3
   \   0000018C   2800A0E3           MOV      R0,#+40
   \   00000190   ........           BL       MCP2515_Write
   \   00000194   260000EA           B        ??MCP2515_SetBandRate_1
    337                      break;	
    338          		
    339                  case BandRate_200kbps:
    340                      MCP2515_Write(CNF1, SJW1|BRP5);	                //Synchronization Jump Width Length =1 TQ
   \                     ??MCP2515_SetBandRate_10:
   \   00000198   0410A0E3           MOV      R1,#+4
   \   0000019C   2A00A0E3           MOV      R0,#+42
   \   000001A0   ........           BL       MCP2515_Write
    341                      MCP2515_Write(CNF2, BTLMODE_CNF3|(SEG3<<3)|SEG2);   // Phase Seg 1 = 4, Prop Seg = 7
   \   000001A4   9110A0E3           MOV      R1,#+145
   \   000001A8   2900A0E3           MOV      R0,#+41
   \   000001AC   ........           BL       MCP2515_Write
    342                      MCP2515_Write(CNF3, SEG2);                          // Phase Seg 2 = 4
   \   000001B0   0110A0E3           MOV      R1,#+1
   \   000001B4   2800A0E3           MOV      R0,#+40
   \   000001B8   ........           BL       MCP2515_Write
   \   000001BC   1C0000EA           B        ??MCP2515_SetBandRate_1
    343                      break;
    344          		
    345                  case BandRate_250kbps:
    346                      MCP2515_Write(CNF1, SJW1|BRP2);	                //Synchronization Jump Width Length =1 TQ
   \                     ??MCP2515_SetBandRate_11:
   \   000001C0   0110A0E3           MOV      R1,#+1
   \   000001C4   2A00A0E3           MOV      R0,#+42
   \   000001C8   ........           BL       MCP2515_Write
    347                      MCP2515_Write(CNF2, BTLMODE_CNF3|(SEG4<<3)|SEG7);   // Phase Seg 1 = 4, Prop Seg = 7
   \   000001CC   9E10A0E3           MOV      R1,#+158
   \   000001D0   2900A0E3           MOV      R0,#+41
   \   000001D4   ........           BL       MCP2515_Write
    348                      MCP2515_Write(CNF3, SEG4);                          // Phase Seg 2 = 4
   \   000001D8   0310A0E3           MOV      R1,#+3
   \   000001DC   2800A0E3           MOV      R0,#+40
   \   000001E0   ........           BL       MCP2515_Write
   \   000001E4   120000EA           B        ??MCP2515_SetBandRate_1
    349                      break;
    350          		
    351                  case BandRate_500kbps:
    352                      MCP2515_Write(CNF1, SJW1|BRP1);	                //Synchronization Jump Width Length =1 TQ
   \                     ??MCP2515_SetBandRate_12:
   \   000001E8   0010A0E3           MOV      R1,#+0
   \   000001EC   2A00A0E3           MOV      R0,#+42
   \   000001F0   ........           BL       MCP2515_Write
    353                      MCP2515_Write(CNF2, BTLMODE_CNF3|(SEG4<<3)|SEG7);   // Phase Seg 1 = 4, Prop Seg = 7
   \   000001F4   9E10A0E3           MOV      R1,#+158
   \   000001F8   2900A0E3           MOV      R0,#+41
   \   000001FC   ........           BL       MCP2515_Write
    354                      MCP2515_Write(CNF3, SEG4);                          // Phase Seg 2 = 4
   \   00000200   0310A0E3           MOV      R1,#+3
   \   00000204   2800A0E3           MOV      R0,#+40
   \   00000208   ........           BL       MCP2515_Write
   \   0000020C   080000EA           B        ??MCP2515_SetBandRate_1
    355                      break;
    356          		
    357                  case BandRate_1Mbps:                                    //
    358                      MCP2515_Write(CNF1, SJW1|BRP1);	                //Synchronization Jump Width Length =1 TQ
   \                     ??MCP2515_SetBandRate_13:
   \   00000210   0010A0E3           MOV      R1,#+0
   \   00000214   2A00A0E3           MOV      R0,#+42
   \   00000218   ........           BL       MCP2515_Write
    359                      MCP2515_Write(CNF2, BTLMODE_CNF3|(SEG3<<3)|SEG2);   // Phase Seg 1 = 2, Prop Seg = 3
   \   0000021C   9110A0E3           MOV      R1,#+145
   \   00000220   2900A0E3           MOV      R0,#+41
   \   00000224   ........           BL       MCP2515_Write
    360                      MCP2515_Write(CNF3, SEG2);                          // Phase Seg 2 = 1
   \   00000228   0110A0E3           MOV      R1,#+1
   \   0000022C   2800A0E3           MOV      R0,#+40
   \   00000230   ........           BL       MCP2515_Write
    361                      break;
    362                     
    363                  default :
    364                      break;
    365              }
    366              
    367              if(IsBackNormal)
   \                     ??MCP2515_SetBandRate_1:
   \   00000234   FF5015E2           ANDS     R5,R5,#0xFF      ;; Zero extend
   \   00000238   000055E3           CMP      R5,#+0
   \   0000023C   0200000A           BEQ      ??MCP2515_SetBandRate_14
    368              {
    369                  //Enable clock output
    370                  MCP2515_Write(CLKCTRL, MODE_NORMAL | CLKEN | CLK1); 	//使用外部时钟
   \   00000240   0410A0E3           MOV      R1,#+4
   \   00000244   0F00A0E3           MOV      R0,#+15
   \   00000248   ........           BL       MCP2515_Write
    371              }
    372          	
    373              MCP2515_Read(CNF3,tmp);	
   \                     ??MCP2515_SetBandRate_14:
   \   0000024C   0610B0E1           MOVS     R1,R6
   \   00000250   FF1011E2           ANDS     R1,R1,#0xFF      ;; Zero extend
   \   00000254   2800A0E3           MOV      R0,#+40
   \   00000258   ........           BL       MCP2515_Read
    374          }
   \   0000025C   7080BDE8           POP      {R4-R6,PC}       ;; return
    375          
    376          
    377          //*****************************************************************************
    378          //* 函数名称:mcp_write_can_id
    379          //* 函数功能:写 CAN ID
    380          //* 入口参数:mcp_addr	: MCP2515 寄存器地址 
    381          //*	      ext	: 帧类型(0:标准帧	1:扩展帧)
    382          //*	      *can_id	: CAN ID 地址
    383          //* 返回值 :无
    384          //*****************************************************************************

   \                                 In section .text, align 4, keep-with-next
    385          void mcp_write_can_id( unsigned char mcp_addr, unsigned char ext, unsigned int can_id)
    386          {
   \                     mcp_write_can_id:
   \   00000000   F8402DE9           PUSH     {R3-R7,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
   \   00000008   0150B0E1           MOVS     R5,R1
   \   0000000C   0260B0E1           MOVS     R6,R2
    387              unsigned int canid;
    388              unsigned char tbufdata[4];
    389              canid = (unsigned int)(can_id & 0x1FFFFFFF);
   \   00000010   8601B0E1           LSLS     R0,R6,#+3
   \   00000014   A001B0E1           LSRS     R0,R0,#+3
   \   00000018   0070B0E1           MOVS     R7,R0
    390              if (ext) 		// 扩展帧
   \   0000001C   FF5015E2           ANDS     R5,R5,#0xFF      ;; Zero extend
   \   00000020   000055E3           CMP      R5,#+0
   \   00000024   1200000A           BEQ      ??mcp_write_can_id_0
    391              {
    392                  tbufdata[EID0] = (unsigned char) (canid & 0xFF);			// 取 canid  0~ 7位 EID 0~EID 7
   \   00000028   0370CDE5           STRB     R7,[SP, #+3]
    393                  tbufdata[EID8] = (unsigned char) (canid / 0x100);			// 取 canid  8~16位 EID 8~EID15
   \   0000002C   2704B0E1           LSRS     R0,R7,#+8
   \   00000030   0200CDE5           STRB     R0,[SP, #+2]
    394                  canid = (unsigned int)( can_id / 0x10000L );		// 取 canid 16~32位
   \   00000034   2608B0E1           LSRS     R0,R6,#+16
   \   00000038   0070B0E1           MOVS     R7,R0
    395                  tbufdata[SIDL] = (unsigned char) (canid & 0x03);			// 取 canid 16~17位 EID16~EID17
   \   0000003C   0700B0E1           MOVS     R0,R7
   \   00000040   030010E2           ANDS     R0,R0,#0x3
   \   00000044   0100CDE5           STRB     R0,[SP, #+1]
    396                  tbufdata[SIDL] += (unsigned char) ((canid & 0x1C)<<3);		// 取 canid 18~20位 SID 0~SID 2
   \   00000048   0100DDE5           LDRB     R0,[SP, #+1]
   \   0000004C   0710B0E1           MOVS     R1,R7
   \   00000050   1C1011E2           ANDS     R1,R1,#0x1C
   \   00000054   810190E0           ADDS     R0,R0,R1, LSL #+3
   \   00000058   0100CDE5           STRB     R0,[SP, #+1]
    397                  tbufdata[SIDL] |= TXB_EXIDE_M;						//
   \   0000005C   0100DDE5           LDRB     R0,[SP, #+1]
   \   00000060   080090E3           ORRS     R0,R0,#0x8
   \   00000064   0100CDE5           STRB     R0,[SP, #+1]
    398                  tbufdata[SIDH] = (unsigned char) (canid / 32 );				// 取 canid 21~29位 SID 3~SID10
   \   00000068   A702B0E1           LSRS     R0,R7,#+5
   \   0000006C   0000CDE5           STRB     R0,[SP, #+0]
   \   00000070   080000EA           B        ??mcp_write_can_id_1
    399              }
    400              else 			// 标准帧
    401              {
    402                  tbufdata[SIDH] = (unsigned char) (canid / 8 );
   \                     ??mcp_write_can_id_0:
   \   00000074   A701B0E1           LSRS     R0,R7,#+3
   \   00000078   0000CDE5           STRB     R0,[SP, #+0]
    403                  tbufdata[SIDL] = (unsigned char) ((canid & 0x07 )<<5);  //*32
   \   0000007C   0700B0E1           MOVS     R0,R7
   \   00000080   8002B0E1           LSLS     R0,R0,#+5
   \   00000084   0100CDE5           STRB     R0,[SP, #+1]
    404                  tbufdata[EID0] = 0;
   \   00000088   0010A0E3           MOV      R1,#+0
   \   0000008C   0310CDE5           STRB     R1,[SP, #+3]
    405                  tbufdata[EID8] = 0;
   \   00000090   0010A0E3           MOV      R1,#+0
   \   00000094   0210CDE5           STRB     R1,[SP, #+2]

⌨️ 快捷键说明

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