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

📄 ecp_i2c_hw.lst

📁 TI EVMDM355 开发板的测试程序,包括BOOT,DDR2,NAND,SD,UART,GPIO等芯片外设的测试驱动.
💻 LST
📖 第 1 页 / 共 5 页
字号:
    129    0000C0                                                              
                                     ; w/o offset
    130    0000C0 C2437600                       mov.b #0x00, &I2CDRB          
       ; Return NULL
    131    0000C4 0013                           reti
    132    0000C6              TX_DATA
    133    0000C6 0412                           PUSH  R4
    134    0000C8 0512                           PUSH  R5
    135    0000CA 0E12                           PUSH  R14
    136    0000CC 0F12                           PUSH  R15
    137    0000CE 5440....                       mov.b I2COFFSET,R4            
                                                                       ; Offset
                                                                  in R4
    138    0000D2 B012....                       call  #ProcessI2CRead         
       ; Process the read
    139    0000D6                                                              
                                     ; (R14 contains read
    140    0000D6                                                              
                                     ; data)
    141    0000D6 C24E7600                       mov.b R14,&I2CDRB             
                                                                 ; Load the
                                                            I2CDRB
    142    0000DA C043....                       mov.b #0x00, RXED_OFFSET      
       ; Clr RX'ed offset fl
    143    0000DE 3F41                           POP   R15
    144    0000E0 3E41                           POP   R14
    145    0000E2 3541                           POP   R5
    146    0000E4 3441                           POP   R4
    147    0000E6 0013                           reti                          
       ; That's it
    148    0000E8              
    149    0000E8              ; **********************************************
                               ******************************
    150    0000E8              ; Function: ValidateECPOffset
    151    0000E8              ;
    152    0000E8              ; Purpose:  Thus function ensures that the
                                offset recieved from I2C is valid
    153    0000E8              ;
    154    0000E8              ; Inputs:   R4 - Contains the offset to be
                                tested
    155    0000E8              ;
    156    0000E8              ; Returns:  R15 - Zero if no error
    157    0000E8              ; **********************************************
                               ******************************
    158    0000E8 0493         ValidateECPOffset cmp   #0x00,R4                
       ; Test offset
    159    0000EA 0538                           jl    InvalidOffset           
       ; Offset < 0?
    160    0000EC 34901900                       cmp   #0x19,R4                
       ; Test offset
    161    0000F0 0234                           jge   InvalidOffset           
       ; Offset > 0x019?
    162    0000F2 0F43                           clr   R15                     
       ; Offset is valid
    163    0000F4              ;                  bic.b #ECP_BAD_OFFSET,
                                ECPStatus    ; Clear Error Flag
    164    0000F4 3041                           ret                           
       ; Return
    165    0000F6 D0D3....     InvalidOffset     bis.b #ECP_BAD_OFFSET,
  ECPStatus          ; Set Error Flag
    166    0000FA 3041                           ret
    167    0000FC                                
    168    0000FC              ; **********************************************
                               ******************************
    169    0000FC              ; Function: ValidateECPCMD
    170    0000FC              ;
    171    0000FC              ; Purpose:  This function ensures that the
                                COMMAND received from I2C is valid
    172    0000FC              ;           for the command register
    173    0000FC              ;
    174    0000FC              ; Inputs:   R5 - Contains the offset to be
                                tested
    175    0000FC              ;
    176    0000FC              ; Returns:  R15 - Zero if no error
    177    0000FC              ; **********************************************
                               ******************************
    178    0000FC 0593         ValidateECPCMD    cmp   #0x00,R5                
       ; Test offset
    179    0000FE 0538                           jl    InvalidOffset2          
       ; Offset < 0?
    180    000100 35900600                       cmp   #0x06,R5                
       ; Test offset
    181    000104 0234                           jge   InvalidOffset2          
       ; Offset > 0x05?
    182    000106 0F43                           clr   R15                     
       ; Offset is valid
    183    000108 3041                           ret                           
       ; Return
    184    00010A E0D3....     InvalidOffset2    bis.b #ECP_BAD_COMMAND,
  ECPStatus   ; Set Error Flag
    185    00010E 1F43                           mov   #0x0001,R15             
       ; Indicate Error
    186    000110 3041                           ret
    187    000112                                
    188    000112              ; **********************************************
                               ******************************
    189    000112              ; Function: ProcessI2CRead
    190    000112              ;
    191    000112              ; Purpose:  Carries out the I2C read command
                                recieved from the master
    192    000112              ;
    193    000112              ; Inputs:   R4 - Contains the offset to the
                                register to read
    194    000112              ;
    195    000112              ; Returns:  R14 - Read data
    196    000112              ;           R15 - Nonzero if offset is
                                bad
    197    000112              ; **********************************************
                               ******************************
    198    000000              PUBLIC ProcessI2CRead
    199    000112 B012....     ProcessI2CRead    call  #ValidateECPOffset      
       ; Make sure offset is good
    200    000116 0F93                           cmp   #0x0000,R15             
       ; R15 = 0 good offset
    201    000118 0224                           jeq   ReadOffsetValid         
       ; Offset is okay
    202    00011A 0E43                           clr   R14                     
       ; Offset is bad,
    203    00011C 3041                           ret                           
       ; abort
    204    00011E 0412         ReadOffsetValid   push  R4                      
       ; Save R4
    205    000120 0612                           push  R6                      
       ; Save R6
    206    000122 0454                           add   R4,R4                   
                                                                ; Multiply
                                                           offset by 2  
                                                           
    207    000124 0054                           add   R4,PC                   
                                                                ; Jump to
                                                           routine
    208    000126 183C                           jmp   ReadOffset0x00
    209    000128 1A3C                           jmp   ReadOffset0x01
    210    00012A 1C3C                           jmp   ReadOffset0x02
    211    00012C 3C3C                           jmp   ReadOffset0x03
    212    00012E 3E3C                           jmp   ReadOffset0x04
    213    000130 403C                           jmp   ReadOffset0x05
    214    000132 443C                           jmp   ReadOffset0x06
    215    000134 4B3C                           jmp   ReadOffset0x07
    216    000136 4D3C                           jmp   ReadOffset0x08
    217    000138 513C                           jmp   ReadOffset0x09
    218    00013A 653C                           jmp   ReadOffset0x0A
    219    00013C 693C                           jmp   ReadOffset0x0B
    220    00013E 6B3C                           jmp   ReadOffset0x0C
    221    000140 6F3C                           jmp   ReadOffset0x0D
    222    000142 713C                           jmp   ReadOffset0x0E
    223    000144 753C                           jmp   ReadOffset0x0F
    224    000146 773C                           jmp   ReadOffset0x10
    225    000148 7B3C                           jmp   ReadOffset0x11
    226    00014A 883C                           jmp   ReadOffset0x12
    227    00014C 8B3C                           jmp   ReadOffset0x13
    228    00014E 8C3C                           jmp   ReadOffset0x14
    229    000150 8F3C                           jmp   ReadOffset0x15
    230    000152 9A3C                           jmp   ReadOffset0x16
    231    000154 A33C                           jmp   ReadOffset0x17
    232    000156 BA3C                           jmp   ReadOffset0x18
    233    000158                                
    234    000158              ; Offset 0x00 - ECP Command Register
    235    000158 5E40....     ReadOffset0x00    mov.b   ECPCommand, R14
    236    00015C D93C                           jmp     I2CReadProcessed      
       ; We are done
    237    00015E              ; Offset 0x01 - ECP Status Register
    238    00015E 5E40....     ReadOffset0x01    mov.b ECPStatus, R14
    239    000162 D63C                           jmp   I2CReadProcessed        
       ; We are done
    240    000164              ; Offset 0x02 - Reset Output Register
    241    000164 0E43         ReadOffset0x02    clr   R14                     
       ; Clear return
    242    000166 54422000                       mov.b &P1IN,R4                
                                                                   ; Read Port
                                                              1
    243    00016A 74F03000                       and.b #ETHERNET_RSTz+SYSTEM_RS
 Tz,R4 ; Mask resets
    244    00016E 4ED4                           bis.b R4,R14                  
                                                                ; Save Port 1
                                                           result
    245    000170 54422800                       mov.b &P2IN,R4                
                                                                   ; Read Port
                                                              2
    246    000174 74F08000                       and.b #AIC33_RSTz, R4         
       ; Mask Port 2 resets
    247    000178 4ED4                           bis.b R4,R14                  
                                                                ; Save Port 2
                                                           result
    248    00017A 76400500                       mov.b #DC5_RSTz+TV_RSTz,R6    
       ; Create mask bits
    249    00017E 76D04000                       bis.b #CPLD_RSTz,R6           
       ; Add mask bits
    250    000182 54421800                       mov.b &P3IN,R4                
                                                                   ; Read port
                                                              3
    251    000186 44F6                           and.b R6,R4                   
                                                                ; Mask port 3
                                                           non-shifted
    252    000188                                                              
                                     ; resets
    253    000188 4ED4                           bis.b R4,R14                  
                                                                ; Save port 3
                                                           non-shifted
    254    00018A                                                              
                                     ; results
    255    00018A 54421800                       mov.b &P3IN,R4                
                                                                   ; Re-read
                                                              port 3
    256    00018E 4411                           rra.b R4                      
       ; 3 right shifts
    257    000190 4411                           rra.b R4
    258    000192 4411                           rra.b R4

⌨️ 快捷键说明

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