]>
cvs.zerfleddert.de Git - proxmark3-svn/blob - armsrc/hfsnoop.c
6 static void RAMFUNC
optimizedSnoop(void);
8 static void RAMFUNC
optimizedSnoop(void)
11 int n
= BigBuf_max_traceLen() / sizeof(uint16_t); // take all memory
13 uint16_t *dest
= (uint16_t *)BigBuf_get_addr();
14 uint16_t *destend
= dest
+ n
;
16 AT91C_BASE_SSC
->SSC_RFMR
= SSC_FRAME_MODE_BITS_IN_WORD(16); // Setting Frame mode, 16 bits per word
18 while(dest
<= destend
)
20 if(AT91C_BASE_SSC
->SSC_SR
& AT91C_SSC_RXRDY
)
22 *dest
= (uint16_t)(AT91C_BASE_SSC
->SSC_RHR
);
26 //Resetting Frame mode (First set in fpgaloader.c)
27 AT91C_BASE_SSC
->SSC_RFMR
= SSC_FRAME_MODE_BITS_IN_WORD(8) | AT91C_SSC_MSBF
| SSC_FRAME_MODE_WORDS_PER_TRANSFER(0);
30 void HfSnoop(int samplesToSkip
, int triggersToSkip
)
32 Dbprintf("Skipping first %d sample pairs, Skipping %d triggers.\n", samplesToSkip
, triggersToSkip
);
35 // Select correct configs
36 FpgaDownloadAndGo(FPGA_BITSTREAM_HF
);
37 // Set up the synchronous serial port
39 // connect Demodulated Signal to ADC:
40 SetAdcMuxFor(GPIO_MUXSEL_HIPKD
);
41 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_SNOOP
);
44 AT91C_BASE_SSC
->SSC_RFMR
= SSC_FRAME_MODE_BITS_IN_WORD(16); // Setting Frame Mode For better performance on high speed data transfer.
48 while(!BUTTON_PRESS()) {
50 if(AT91C_BASE_SSC
->SSC_SR
& (AT91C_SSC_RXRDY
)) {
51 r
= (uint16_t)AT91C_BASE_SSC
->SSC_RHR
;
52 if (!(trigger_cnt
== triggersToSkip
) && ( (r
>> 8) >= 240))
54 Dbprintf("Trigger kicked! Value: %d.", r
>> 8);
61 Dbprintf("Trigger kicked! Value: %d, Dumping Samples Hispeed now.", r
>> 8);
62 int waitcount
= samplesToSkip
; // lets wait 40000 ticks of pck0
63 while(waitcount
!= 0) {
64 if(AT91C_BASE_SSC
->SSC_SR
& (AT91C_SSC_RXRDY
)) {
71 DbpString("HF Snoop end");
72 FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF
);