コード例 #1
0
void OnSuccess(){
	pcb_blocknum = 0;
	ReaderTransmit(deselect_cmd, 3 , NULL);
	FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
	LEDsoff();
	set_tracing(FALSE);	
}
コード例 #2
0
ファイル: lfsampling.c プロジェクト: GNSPS/proxmark3
/**
* Setup the FPGA to listen for samples. This method downloads the FPGA bitstream
* if not already loaded, sets divisor and starts up the antenna.
* @param divisor : 1, 88> 255 or negative ==> 134.8 KHz
* 				   0 or 95 ==> 125 KHz
*
**/
void LFSetupFPGAForADC(int divisor, bool lf_field)
{
	FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
	if ( (divisor == 1) || (divisor < 0) || (divisor > 255) )
		FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 88); //134.8Khz
	else if (divisor == 0)
		FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz
	else
		FpgaSendCommand(FPGA_CMD_SET_DIVISOR, divisor);

	FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_ADC | (lf_field ? FPGA_LF_ADC_READER_FIELD : 0));

	// Connect the A/D to the peak-detected low-frequency path.
	SetAdcMuxFor(GPIO_MUXSEL_LOPKD);
	// Give it a bit of time for the resonant antenna to settle.
	SpinDelay(50);
	// Now set up the SSC to get the ADC samples that are now streaming at us.
	FpgaSetupSsc();
}
コード例 #3
0
ファイル: legicrfsim.c プロジェクト: wllm-rbnt/proxmark3
static void init_tag() {
  // configure FPGA
  FpgaDownloadAndGo(FPGA_BITSTREAM_HF);
  FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_SIMULATOR
                  | FPGA_HF_SIMULATOR_MODULATE_212K);
  SetAdcMuxFor(GPIO_MUXSEL_HIPKD);

  // configure SSC with defaults
  FpgaSetupSsc();

  // first pull output to low to prevent glitches then re-claim GPIO_SSC_DOUT
  LOW(GPIO_SSC_DOUT);
  AT91C_BASE_PIOA->PIO_OER = GPIO_SSC_DOUT;
  AT91C_BASE_PIOA->PIO_PER = GPIO_SSC_DOUT;

  // reserve a cardmem, meaning we can use the tracelog function in bigbuff easier.
  legic_mem = BigBuf_get_addr();

  // init crc calculator
  crc_init(&legic_crc, 4, 0x19 >> 1, 0x05, 0);

  // start 212kHz timer (running from SSP Clock)
  StartCountSspClk();
}
コード例 #4
0
ファイル: epa.c プロジェクト: richo/proxmark3
//-----------------------------------------------------------------------------
// Closes the communication channel and turns off the field
//-----------------------------------------------------------------------------
void EPA_Finish()
{
	FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
	LEDsoff();
}
コード例 #5
0
ファイル: pcf7931.c プロジェクト: capecode007/proxmark3
void SendCmdPCF7931(uint32_t * tab){
	uint16_t u=0;
	uint16_t tempo=0;

	Dbprintf("SENDING DATA FRAME...");

	FpgaDownloadAndGo(FPGA_BITSTREAM_LF);

	FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz

	FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_PASSTHRU );

	LED_A_ON();

	// steal this pin from the SSP and use it to control the modulation
	AT91C_BASE_PIOA->PIO_PER = GPIO_SSC_DOUT;
	AT91C_BASE_PIOA->PIO_OER = GPIO_SSC_DOUT;

	//initialization of the timer
	AT91C_BASE_PMC->PMC_PCER |= (0x1 << 12) | (0x1 << 13) | (0x1 << 14);
	AT91C_BASE_TCB->TCB_BMR = AT91C_TCB_TC0XC0S_NONE | AT91C_TCB_TC1XC1S_TIOA0 | AT91C_TCB_TC2XC2S_NONE;
	AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS; // timer disable
	AT91C_BASE_TC0->TC_CMR = AT91C_TC_CLKS_TIMER_DIV3_CLOCK;  //clock at 48/32 MHz
	AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN;
	AT91C_BASE_TCB->TCB_BCR = 1;


	tempo = AT91C_BASE_TC0->TC_CV;
	for(u=0;tab[u]!= 0;u+=3){


		// modulate antenna
		HIGH(GPIO_SSC_DOUT);
		while(tempo !=  tab[u]){
			tempo = AT91C_BASE_TC0->TC_CV;
		}

		// stop modulating antenna
		LOW(GPIO_SSC_DOUT);
		while(tempo !=  tab[u+1]){
			tempo = AT91C_BASE_TC0->TC_CV;
		}


		// modulate antenna
		HIGH(GPIO_SSC_DOUT);
		while(tempo !=  tab[u+2]){
			tempo = AT91C_BASE_TC0->TC_CV;
		}


	}

	LED_A_OFF();
	FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
	SpinDelay(200);


	AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS; // timer disable
	DbpString("FINISH !");
	DbpString("(Could be usefull to send the same trame many times)");
	LED(0xFFFF, 1000);
}