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

📄 eeinfo.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 3 页
字号:

  00000			 AREA	 |.text| { |WaitTillTransmitFifoEmpty| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |WaitTillTransmitFifoEmpty| PROC

; 455  : {

  00000		 |$L15464|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004		 |$M15462|

; 456  :     ULONGLONG ullStart, ullCurrent, ullMax;
; 457  :     
; 458  :     //
; 459  :     // Clear the transmit fifo.
; 460  :     //
; 461  :     ullStart = GetSystemTimeInUSec();

  00004	eb000000	 bl          GetSystemTimeInUSec

; 462  :     ullMax   = ullStart + SPI_MINTIME;
; 463  :     while( !(*SPI_SR & SPISR_TFE))

  00008	e29050c8	 adds        r5, r0, #0xC8
  0000c	e59f407c	 ldr         r4, [pc, #0x7C]
  00010	e2a16000	 adc         r6, r1, #0
  00014	ea000005	 b           |$L15452|
  00018		 |$L15359|

; 464  :     {
; 465  :         //
; 466  :         // Check to see if we timed out.
; 467  :         //
; 468  :         ullCurrent = GetSystemTimeInUSec();

  00018	eb000000	 bl          GetSystemTimeInUSec

; 469  :         if(ullMax < ullCurrent)

  0001c	e1560001	 cmp         r6, r1
  00020	3a000017	 bcc         |$L15451|
  00024	8a000001	 bhi         |$L15452|
  00028	e1550000	 cmp         r5, r0
  0002c	3a000014	 bcc         |$L15451|
  00030		 |$L15452|

; 462  :     ullMax   = ullStart + SPI_MINTIME;
; 463  :     while( !(*SPI_SR & SPISR_TFE))

  00030	e5943000	 ldr         r3, [r4]
  00034	e3130001	 tst         r3, #1
  00038	0afffff6	 beq         |$L15359|

; 470  :         {
; 471  :             return(0);
; 472  :         }
; 473  :     }
; 474  : 
; 475  :     //
; 476  :     // Make sure that data is not actively going out.
; 477  :     //
; 478  :     ullStart = GetSystemTimeInUSec();

  0003c	eb000000	 bl          GetSystemTimeInUSec

; 479  :     ullMax   = ullStart + SPI_MINTIME;
; 480  :     while( *SPI_SR & SPISR_BUSY)

  00040	e29050c8	 adds        r5, r0, #0xC8
  00044	e2a16000	 adc         r6, r1, #0
  00048	ea000005	 b           |$L15453|
  0004c		 |$L15364|

; 481  :     {
; 482  :         //
; 483  :         // Check to see if we timed out.
; 484  :         //
; 485  :         ullCurrent = GetSystemTimeInUSec();

  0004c	eb000000	 bl          GetSystemTimeInUSec

; 486  :         if(ullMax < ullCurrent)

  00050	e1560001	 cmp         r6, r1
  00054	3a00000a	 bcc         |$L15451|
  00058	8a000001	 bhi         |$L15453|
  0005c	e1550000	 cmp         r5, r0
  00060	3a000007	 bcc         |$L15451|
  00064		 |$L15453|

; 479  :     ullMax   = ullStart + SPI_MINTIME;
; 480  :     while( *SPI_SR & SPISR_BUSY)

  00064	e5943000	 ldr         r3, [r4]
  00068	e3130010	 tst         r3, #0x10
  0006c	1afffff6	 bne         |$L15364|

; 489  :         }
; 490  :     }
; 491  : 
; 492  :     //
; 493  :     // Delay 200 uS. Just to make sure that the data is cleared 
; 494  :     // out the fifo.
; 495  :     //
; 496  :     DelayInuSec(200);

  00070	e3a000c8	 mov         r0, #0xC8
  00074	eb000000	 bl          DelayInuSec

; 497  : 
; 498  :     return(1);

  00078	e3a00001	 mov         r0, #1

; 499  : }

  0007c	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  00080	e12fff1e	 bx          lr
  00084		 |$L15451|

; 487  :         {
; 488  :             return(0);

  00084	e3a00000	 mov         r0, #0

; 499  : }

  00088	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  0008c	e12fff1e	 bx          lr
  00090		 |$L15467|
  00090	b08a000c	 DCD         0xb08a000c
  00094		 |$M15463|

			 ENDP  ; |WaitTillTransmitFifoEmpty|


  00000			 AREA	 |.text| { |TestSPI| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$TestSPI|, PDATA, SELECTION=5, ASSOC=|.text| { |TestSPI| } ; comdat associative
|$T15507| DCD	|$L15506|
	DCD	0x40002c01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |TestSPI| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |TestSPI| PROC

; 213  : {

  00000		 |$L15506|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004		 |$M15504|

; 214  :     ULONG ulManufacturer, ulDevice, ulTemp;
; 215  :     // ULONGLONG   ullStart, ullMax, ullCurrent;
; 216  : 
; 217  :     //
; 218  :     // Issue the command for reading the SPI Product ID register.
; 219  :     //
; 220  :     *SPI_DR = SPIEE_RDID;

  00004	e59f40a0	 ldr         r4, [pc, #0xA0]
  00008	e3a03015	 mov         r3, #0x15
  0000c	e5843000	 str         r3, [r4]

; 221  :     *SPI_DR =  0;

  00010	e3a03000	 mov         r3, #0
  00014	e5843000	 str         r3, [r4]

; 222  :     *SPI_DR =  0;

  00018	e5843000	 str         r3, [r4]

; 223  : 
; 224  :     //
; 225  :     // Wait until the transmit fifo is flushed.
; 226  :     //
; 227  :     WaitTillTransmitFifoEmpty();

  0001c	eb000000	 bl          GetSystemTimeInUSec
  00020	e29060c8	 adds        r6, r0, #0xC8
  00024	e59f507c	 ldr         r5, [pc, #0x7C]
  00028	e2a17000	 adc         r7, r1, #0
  0002c	ea000005	 b           |$L15486|
  00030		 |$L15481|
  00030	eb000000	 bl          GetSystemTimeInUSec
  00034	e1570001	 cmp         r7, r1
  00038	3a000014	 bcc         |$L15477|
  0003c	8a000001	 bhi         |$L15486|
  00040	e1560000	 cmp         r6, r0
  00044	3a000011	 bcc         |$L15477|
  00048		 |$L15486|
  00048	e5953000	 ldr         r3, [r5]
  0004c	e3130001	 tst         r3, #1
  00050	0afffff6	 beq         |$L15481|
  00054	eb000000	 bl          GetSystemTimeInUSec
  00058	e29060c8	 adds        r6, r0, #0xC8
  0005c	e2a17000	 adc         r7, r1, #0
  00060	ea000005	 b           |$L15487|
  00064		 |$L15473|
  00064	eb000000	 bl          GetSystemTimeInUSec
  00068	e1570001	 cmp         r7, r1
  0006c	3a000007	 bcc         |$L15477|
  00070	8a000001	 bhi         |$L15487|
  00074	e1560000	 cmp         r6, r0
  00078	3a000004	 bcc         |$L15477|
  0007c		 |$L15487|
  0007c	e5953000	 ldr         r3, [r5]
  00080	e3130010	 tst         r3, #0x10
  00084	1afffff6	 bne         |$L15473|
  00088	e3a000c8	 mov         r0, #0xC8
  0008c	eb000000	 bl          DelayInuSec
  00090		 |$L15477|

; 228  : 
; 229  :     //
; 230  :     // Read one byte and throw it away.
; 231  :     //
; 232  :     ulTemp = *SPI_DR;

  00090	e5943000	 ldr         r3, [r4]

; 233  : 
; 234  :     //
; 235  :     // Read the Manufacturers code.
; 236  :     //
; 237  :     ulManufacturer = *SPI_DR;

  00094	e5942000	 ldr         r2, [r4]

; 238  : 
; 239  :     //
; 240  :     // Read the device code.
; 241  :     //
; 242  :     ulDevice = *SPI_DR;

  00098	e5941000	 ldr         r1, [r4]

; 243  : 
; 244  :     //
; 245  :     // Check to see if the Manufacturer is atmel if so return 1.
; 246  :     //
; 247  :     //return (ulManufacturer ==0x1F);
; 248  : 	return TRUE;

  0009c	e3a00001	 mov         r0, #1

; 249  : }    

  000a0	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  000a4	e12fff1e	 bx          lr
  000a8		 |$L15509|
  000a8	b08a000c	 DCD         0xb08a000c
  000ac	b08a0008	 DCD         0xb08a0008
  000b0		 |$M15505|

			 ENDP  ; |TestSPI|

	EXPORT	|??_C@_0CE@EMPABGLD@EEINFO?3?5ClearReceiveFifo?5Timeout@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CD@DCGJPODM@EEINFO?3?5ReadEEWord?51rst?5Timeout?4@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CC@ENCMIEAA@EEINFO?3?5ReadEEWord?52nd?5Timeout?4?$AN@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CL@KFPMGBGB@EEINFO?3?5Receive?5?$DN?50x?$CFx?0?5Transmit@| [ DATA ] ; `string'
	IMPORT	|EdbgOutputDebugString|

  00000			 AREA	 |.text| { |ReadEEWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$ReadEEWord|, PDATA, SELECTION=5, ASSOC=|.text| { |ReadEEWord| } ; comdat associative
|$T15580| DCD	|$L15579|
	DCD	0x40008702

  00000			 AREA	 |.rdata| { |??_C@_0CC@ENCMIEAA@EEINFO?3?5ReadEEWord?52nd?5Timeout?4?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CC@ENCMIEAA@EEINFO?3?5ReadEEWord?52nd?5Timeout?4?$AN@| DCB "EEINF"
	DCB	"O: ReadEEWord 2nd Timeout.", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CL@KFPMGBGB@EEINFO?3?5Receive?5?$DN?50x?$CFx?0?5Transmit@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CL@KFPMGBGB@EEINFO?3?5Receive?5?$DN?50x?$CFx?0?5Transmit@| DCB "E"
	DCB	"EINFO: Receive = 0x%x, Transmit = 0x%x.", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CD@DCGJPODM@EEINFO?3?5ReadEEWord?51rst?5Timeout?4@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CD@DCGJPODM@EEINFO?3?5ReadEEWord?51rst?5Timeout?4@| DCB "EEINFO: "
	DCB	"ReadEEWord 1rst Timeout.", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CE@EMPABGLD@EEINFO?3?5ClearReceiveFifo?5Timeout@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CE@EMPABGLD@EEINFO?3?5ClearReceiveFifo?5Timeout@| DCB "EEINFO: Cl"
	DCB	"earReceiveFifo Timeout.", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |ReadEEWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |ReadEEWord| PROC

; 261  : {

  00000		 |$L15579|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M15577|
  00008	e1a0b002	 mov         r11, r2
  0000c	e1a0a001	 mov         r10, r1
  00010	e1a09000	 mov         r9, r0

; 262  :     ULONG       ulCount, ulTransmitCount = 0;

  00014	e3a06000	 mov         r6, #0

; 263  :     ULONG       ulReceiveCount = 0;
; 264  :     volatile    ULONG       ulTemp;
; 265  :     ULONGLONG   ullStart, ullMax, ullCurrent;
; 266  :     BOOL        bRet;
; 267  : 
; 268  : 
; 269  :     //
; 270  :     // Make sure that the receive fifo is clear.
; 271  :     //
; 272  :     bRet = ClearReceiveFifo();

  00018	eb000000	 bl          GetSystemTimeInUSec
  0001c	e29050c8	 adds        r5, r0, #0xC8
  00020	e59f41f0	 ldr         r4, [pc, #0x1F0]
  00024	e2a17000	 adc         r7, r1, #0
  00028	ea000005	 b           |$L15542|
  0002c		 |$L15519|
  0002c	eb000000	 bl          GetSystemTimeInUSec
  00030	e1570001	 cmp         r7, r1
  00034	3a000064	 bcc         |$L15541|
  00038	8a000001	 bhi         |$L15542|
  0003c	e1550000	 cmp         r5, r0
  00040	3a000061	 bcc         |$L15541|
  00044		 |$L15542|
  00044	e5943000	 ldr         r3, [r4]
  00048	e3130001	 tst         r3, #1
  0004c	0afffff6	 beq         |$L15519|
  00050	eb000000	 bl          GetSystemTimeInUSec
  00054	e29050c8	 adds        r5, r0, #0xC8
  00058	e2a17000	 adc         r7, r1, #0
  0005c	ea000005	 b           |$L15543|
  00060		 |$L15522|
  00060	eb000000	 bl          GetSystemTimeInUSec
  00064	e1570001	 cmp         r7, r1
  00068	3a000057	 bcc         |$L15541|
  0006c	8a000001	 bhi         |$L15543|
  00070	e1550000	 cmp         r5, r0
  00074	3a000054	 bcc         |$L15541|
  00078		 |$L15543|
  00078	e5943000	 ldr         r3, [r4]
  0007c	e3130010	 tst         r3, #0x10
  00080	1afffff6	 bne         |$L15522|
  00084	e3a000c8	 mov         r0, #0xC8
  00088	eb000000	 bl          DelayInuSec
  0008c	eb000000	 bl          GetSystemTimeInUSec
  00090	e29050c8	 adds        r5, r0, #0xC8
  00094	e59f7178	 ldr         r7, [pc, #0x178]
  00098	e2a18000	 adc         r8, r1, #0
  0009c	ea000006	 b           |$L15544|
  000a0		 |$L15525|
  000a0	e5973000	 ldr         r3, [r7]
  000a4	eb000000	 bl          GetSystemTimeInUSec
  000a8	e1580001	 cmp         r8, r1
  000ac	3a000046	 bcc         |$L15541|
  000b0	8a000001	 bhi         |$L15544|
  000b4	e1550000	 cmp         r5, r0
  000b8	3a000043	 bcc         |$L15541|
  000bc		 |$L15544|
  000bc	e5943000	 ldr         r3, [r4]
  000c0	e3130004	 tst         r3, #4
  000c4	1afffff5	 bne         |$L15525|

; 276  :         return bRet;   
; 277  :     }
; 278  : 
; 279  :     //
; 280  :     // Send the Chip Read command.
; 281  :     //        
; 282  :     *SPI_DR = SPIEE_READ_LOW;
; 283  : 
; 284  :     //
; 285  :     // Send the three byte address.
; 286  :     //
; 287  :     *SPI_DR = (ulAddress >> 16) & 0xFF;

  000c8	e1a03409	 mov         r3, r9, lsl #8
  000cc	e3a01003	 mov         r1, #3
  000d0	e1a03c23	 mov         r3, r3, lsr #24

; 288  :     *SPI_DR = (ulAddress >> 8) & 0xFF;

  000d4	e1a02809	 mov         r2, r9, lsl #16
  000d8	e5871000	 str         r1, [r7]
  000dc	e5873000	 str         r3, [r7]
  000e0	e1a03c22	 mov         r3, r2, lsr #24
  000e4	e5873000	 str         r3, [r7]

; 289  :     *SPI_DR = ulAddress  & 0xFF;

  000e8	e20930ff	 and         r3, r9, #0xFF
  000ec	e5873000	 str         r3, [r7]

; 290  : 
; 291  :     //
; 292  :     // Wait until we send 3 bytes.
; 293  :     //
; 294  :     ulCount = 0;

  000f0	e3a05000	 mov         r5, #0

; 295  :     ullStart = GetSystemTimeInUSec();

  000f4	eb000000	 bl          GetSystemTimeInUSec

; 296  :     ullMax   = ullStart + SPI_MINTIME + 3 * SPI_BYTETIME;

  000f8	e29080e6	 adds        r8, r0, #0xE6
  000fc	e2a19000	 adc         r9, r1, #0
  00100		 |$L15574|

; 297  : 
; 298  :     do
; 299  :     {
; 300  :         //
; 301  :         // Check to see if there are bytes to receive.
; 302  :         //
; 303  :         if(*SPI_SR & SPISR_RNE)

  00100	e5943000	 ldr         r3, [r4]
  00104	e3a02000	 mov         r2, #0
  00108	e3130004	 tst         r3, #4

; 304  :         {
; 305  :             ulTemp = *SPI_DR;

  0010c	15973000	 ldrne       r3, [r7]

; 306  :             ulCount++;

  00110	12855001	 addne       r5, r5, #1
  00114	158d3000	 strne       r3, [sp]

; 307  :         }
; 308  : 
; 309  :         //
; 310  :         // Check to see if we can transmit data so that we can receive.
; 311  :         //
; 312  :         if(ulTransmitCount <ulLength && (*SPI_SR & SPISR_TNF))

  00118	e156000a	 cmp         r6, r10
  0011c	2a000003	 bcs         |$L15313|
  00120	e5943000	 ldr         r3, [r4]
  00124	e3130002	 tst         r3, #2

; 313  :         {
; 314  :             *SPI_DR = 0;

  00128	15872000	 strne       r2, [r7]

; 315  :             ulTransmitCount++;

  0012c	12866001	 addne       r6, r6, #1
  00130		 |$L15313|

; 316  :         }                
; 317  : 
; 318  :         //
; 319  :         // Have a timeout so the system does not get stuck.
; 320  :         //
; 321  :         ullCurrent = GetSystemTimeInUSec();

  00130	eb000000	 bl          GetSystemTimeInUSec

⌨️ 快捷键说明

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