* Add an option to lf read command to use an arbitrary divisor, enabling reading at frequencies other than 125 and 134 kHz.

This commit is contained in:
henryk@ploetzli.ch 2013-09-27 13:48:20 +00:00
parent 7bb9d33e2c
commit bf7163bdb3
3 changed files with 9 additions and 7 deletions

View file

@ -108,7 +108,7 @@ void SetAdcMuxFor(uint32_t whichGpio);
#define FPGA_HF_ISO14443A_READER_MOD (4<<0)
/// lfops.h
void AcquireRawAdcSamples125k(int at134khz);
void AcquireRawAdcSamples125k(int divisor);
void ModThenAcquireRawAdcSamples125k(int delay_off,int period_0,int period_1,uint8_t *command);
void ReadTItag(void);
void WriteTItag(uint32_t idhi, uint32_t idlo, uint16_t crc);

View file

@ -15,12 +15,14 @@
#include "crc16.h"
#include "string.h"
void AcquireRawAdcSamples125k(int at134khz)
void AcquireRawAdcSamples125k(int divisor)
{
if (at134khz)
if ( (divisor == 1) || (divisor < 0) || (divisor > 255) )
FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 88); //134.8Khz
else
else if (divisor == 0)
FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz
else
FpgaSendCommand(FPGA_CMD_SET_DIVISOR, divisor);
FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_READER);

View file

@ -362,8 +362,8 @@ int CmdLFRead(const char *Cmd)
c.arg[0] = 1;
} else if (*Cmd == '\0') {
c.arg[0] = 0;
} else {
PrintAndLog("use 'read' or 'read h'");
} else if (sscanf(Cmd, "%i", &c.arg[0]) != 1) {
PrintAndLog("use 'read' or 'read h', or 'read <divisor>'");
return 0;
}
SendCommand(&c);
@ -534,7 +534,7 @@ static command_t CommandTable[] =
{"hid", CmdLFHID, 1, "{ HID RFIDs... }"},
{"indalademod", CmdIndalaDemod, 1, "['224'] -- Demodulate samples for Indala 64 bit UID (option '224' for 224 bit)"},
{"indalaclone", CmdIndalaClone, 1, "<UID> ['l']-- Clone Indala to T55x7 (tag must be in antenna)(UID in HEX)(option 'l' for 224 UID"},
{"read", CmdLFRead, 0, "['h'] -- Read 125/134 kHz LF ID-only tag (option 'h' for 134)"},
{"read", CmdLFRead, 0, "['h'|<divisor>] -- Read 125/134 kHz LF ID-only tag (option 'h' for 134, alternatively: f=12MHz/(divisor+1))"},
{"sim", CmdLFSim, 0, "[GAP] -- Simulate LF tag from buffer with optional GAP (in microseconds)"},
{"simbidir", CmdLFSimBidir, 0, "Simulate LF tag (with bidirectional data transmission between reader and tag)"},
{"simman", CmdLFSimManchester, 0, "<Clock> <Bitstream> [GAP] Simulate arbitrary Manchester LF tag"},