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

📄 ecp_i2c_hw.lst

📁 TI EVMDM355 开发板的测试程序,包括BOOT,DDR2,NAND,SD,UART,GPIO等芯片外设的测试驱动.
💻 LST
📖 第 1 页 / 共 5 页
字号:
###############################################################################
#                                                                             #
#     IAR Systems MSP430 Assembler V3.42A/W32  29/Jun/2007  14:45:59          #
#     Copyright 1996-2006 IAR Systems. All rights reserved.                   #
#                                                                             #
#           Target option =  MSP430                                           #
#           Source file   =  C:\Data\DM350MSP430\VA3\ECP_I2C_HW.s43           #
#           List file     =  C:\Data\DM350MSP430\VA3\Debug\List\ECP_I2C_HW.lst#
#           Object file   =  C:\Data\DM350MSP430\VA3\Debug\Obj\ECP_I2C_HW.r43 #
#           Command line  =  C:\Data\DM350MSP430\VA3\ECP_I2C_HW.s43           #
#                            -OC:\Data\DM350MSP430\VA3\Debug\Obj\ -s+ -M<>    #
#                            -w+ -LC:\Data\DM350MSP430\VA3\Debug\List\ -t8    #
#                            -r -D__MSP430F155__                              #
#                            -IC:\Program Files\IAR Systems\Embedded Workbench 4.0\430\INC\ #
#                                                                             #
###############################################################################

      1    00FFF0              #include  <msp430x15x.h>
      2    00FFF0              #include "ECP.h"
      3    000000              EXTERN ECPCommand
      4    000000              EXTERN ECPStatus
      5    000000              EXTERN PowerStatus
      6    000000              EXTERN PowerDownEVM
      7    000000              EXTERN DSPSoftReset
      8    000000              EXTERN CheckPower
      9    000000              EXTERN SWDelay100ms
     10    000000              EXTERN SWDelay500ms
     11    00FFF0              
     12    000000              EXTERN RESET
     13    000000              EXTERN WARMENTRY
     14    000000              EXTERN Volts1V3    
     15    000000              EXTERN Volts1V8  
     16    000000              EXTERN Volts3V3  
     17    000000              EXTERN VoltsECP 
     18    000000              EXTERN InitIR
     19    00FFF0              
     20    000000              EXTERN IRBuffer
     21    000000              EXTERN IRReadIndex
     22    000000              EXTERN IRWriteIndex
     23    00FFF0              
     24    00FFF0                                ORG   0FFF0h                 
  ; I2C interrupt vector
     25    00FFF0 ....                           DW    I2C_ISR
     26    00FFF2                                
     27    000000                                RSEG  I2CCOMM
     28    000000              RXED_OFFSET       DS    0x01      
     29    000001              I2COFFSET         DS    0x01
     30    000002              I2CDATA           DS    0x01
     31    000003              DUMMY             DS    0x01        
     32    000004              
     33    000000                                RSEG I2CHW_CODE
     34    000000              ; **********************************************
                               ******************************
     35    000000              ; Function: I2CBugFix
     36    000000              ;
     37    000000              ; Purpose:  This function pulses the I2C clock
                                line line for one clock to 
     38    000000              ;           get around an I2C initial lock up
                                bug that appears to be caused
     39    000000              ;           by the THS7353
     40    000000              ;
     41    000000              ; Inputs:   None
     42    000000              ;
     43    000000              ; Returns:  None
     44    000000              ; **********************************************
                               ******************************
     45    000000 F2D00A001900 I2CBugFix   bis.b   #HW_SDA+HW_SCL,&P3OUT       
       ; Set to drive SCL
     46    000006                                                              
                                     ; and SDA high
     47    000006 F2C00A001B00             bic.b   #HW_SDA+HW_SCL,&P3SEL       
       ; GPIO
     48    00000C F2D00A001A00             bis.b   #HW_SDA+HW_SCL,&P3DIR       
       ; Outputs
     49    000012 B012....                 call    #SWDelay100ms               
       ; Wait 100ms
     50    000016 F2C21900                 bic.b   #HW_SCL,&P3OUT              
       ; SCL = 0
     51    00001A B012....                 call    #SWDelay100ms               
       ; Wait 100ms
     52    00001E F2D21900                 bis.b   #HW_SCL,&P3OUT              
       ; SCL = 1
     53    000022 F2C00A001A00             bic.b   #HW_SDA+HW_SCL,&P3DIR       
       ; Make inputs
     54    000028 3041                     ret
     55    00002A                                
     56    00002A              ; **********************************************
                               ******************************
     57    00002A              ; Function: I2CInit
     58    00002A              ;
     59    00002A              ; Purpose:  Initializes MSP430 HW I2C Interface
     60    00002A              ;
     61    00002A              ; Inputs:   None
     62    00002A              ;
     63    00002A              ; Returns:  None
     64    00002A              ; **********************************************
                               ******************************
     65    00002A              
     66    000000              PUBLIC I2CInit
     67    00002A B012....     I2CInit           call  #I2CBugFix              
       ; Toggle SCL
     68    00002E C043....                       mov.b #0x00,RXED_OFFSET       
       ; Clear RCV Offset fl
     69    000032 F2D00A001B00                   bis.b #HW_SDA+HW_SCL,&P3SEL   
       ; Config HW I2C Pins
     70    000038 F2D024007000                   bis.b #I2C+SYNC,&U0CTL        
       ; Recommended
     71    00003E D2C37000                       bic.b #I2CEN,&U0CTL           
       ; init procedure
     72    000042 F2D020007100                   bis.b #I2CSSEL1,&I2CTCTL      
       ; SMCLK
     73    000048 B24025001801                   mov   #ECP_I2CADDR,&I2COA     
       ; I2C Address
     74    00004E E2D25000                       bis.b #OAIE,&I2CIE            
       ; Enable START Int
     75    000052 F2D010005000                   bis.b #RXRDYIE,&I2CIE         
       ; Enable RXRDYIFG Int
     76    000058 F2D020005000                   bis.b #TXRDYIE,&I2CIE         
       ; Enable TXRDYIFG Int
     77    00005E D2D37000                       bis.b #I2CEN,&U0CTL           
       ; Enable I2C
     78    000062 3041                           ret
     79    000064                                                  
     80    000064              
     81    000064              ;-----------------------------------------------
                               -------------------------------
     82    000064              I2C_ISR;    Common ISR for I2C Module
     83    000064              ;-----------------------------------------------
                               -------------------------------
     84    000064 10521C01                       add   &I2CIV,PC               
                                                                    ; I2C
                                                               offset
                                                               vector
     85    000068 0013                           reti                          
       ; No Interrupt
     86    00006A 0013                           reti                          
       ; Arbitration lost
     87    00006C 0013                           reti                          
       ; No Acknowledge
     88    00006E 053C                           jmp   INDICATE_ECP_ADDR       
       ; ECP Addressed
     89    000070 0013                           reti                          
       ; Register Acc Ready
     90    000072 043C                           jmp   RXRDY_ISR               
       ; Receive Ready
     91    000074 203C                           jmp   TXRDY_ISR               
       ; Transmit Ready
     92    000076 0013                           reti                          
       ; General Call
     93    000078 0013                           reti
     94    00007A              
     95    00007A 0013         INDICATE_ECP_ADDR reti
     96    00007C              
     97    00007C              ; **********************************************
                               ******************************
     98    00007C              ; RX Primary I2C ISR
     99    00007C              ; **********************************************
                               ******************************
    100    00007C              RXRDY_ISR
    101    00007C C093....                       cmp.b #0x00,RXED_OFFSET       
       ; RX'ed the offset?
    102    000080 0620                           jne   RX_DATA                 
       ; Yes, this is data
    103    000082 D0427600....                   mov.b &I2CDRB,I2COFFSET       
                                                                     ; Save the
                                                                offset
    104    000088 D043....                       mov.b #0x01, RXED_OFFSET      
       ; Indicate RX offset
    105    00008C 0013                           reti                          
   
    106    00008E              RX_DATA           
    107    00008E 0412                           PUSH  R4
    108    000090 0512                           PUSH  R5
    109    000092 0E12                           PUSH  R14
    110    000094 0F12                           PUSH  R15
    111    000096 D0427600....                   mov.b &I2CDRB,I2CDATA         
                                                                     ; Save the
                                                                data
    112    00009C 5440....                       mov.b I2COFFSET,R4            
                                                                       ; Offset
                                                                  in R4
    113    0000A0 5540....                       mov.b I2CDATA,R5              
                                                                     ; Written
                                                                data in
                                                                R5
    114    0000A4 B012....                       call  #ProcessI2CWrite        
       ; Process the data
    115    0000A8 C043....                       mov.b #0x00, RXED_OFFSET      
       ; Clear RX offset flag
    116    0000AC 3F41                           POP   R15
    117    0000AE 3E41                           POP   R14
    118    0000B0 3541                           POP   R5
    119    0000B2 3441                           POP   R4
    120    0000B4 0013                           reti                          
           ; That's it
    121    0000B6              
    122    0000B6              ; **********************************************
                               ******************************
    123    0000B6              ; TX Primary I2C ISR
    124    0000B6              ; **********************************************
                               ******************************
    125    0000B6              TXRDY_ISR
    126    0000B6 C093....                       cmp.b #0x00,RXED_OFFSET       
       ; RX'ed the offset?
    127    0000BA 0520                           jne   TX_DATA                 
       ; Yes, transmit data
    128    0000BC B012....                       call  #IndicateI2CError       
       ; Master tried to read

⌨️ 快捷键说明

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