shorten em4x05 capture samples

add cap option for 4469
add sample size option for  DoAcquisition so i can limit how many
samples i want to collect.
use with DoPartialAcquisition
This commit is contained in:
marshmellow42 2017-02-20 17:39:39 -05:00
parent 893534d3b5
commit a37228c8c2
4 changed files with 17 additions and 9 deletions

View file

@ -1628,7 +1628,7 @@ void EM4xReadWord(uint8_t Address, uint32_t Pwd, uint8_t PwdMode) {
SendForward(fwd_bit_count); SendForward(fwd_bit_count);
// Now do the acquisition // Now do the acquisition
doT55x7Acquisition(6000); DoPartialAcquisition(20, true, 5500);
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
LED_A_OFF(); LED_A_OFF();
@ -1656,10 +1656,10 @@ void EM4xWriteWord(uint32_t flag, uint32_t Data, uint32_t Pwd) {
SendForward(fwd_bit_count); SendForward(fwd_bit_count);
//Wait for write to complete //Wait for write to complete
SpinDelay(10); //SpinDelay(10);
//Capture response if one exists //Capture response if one exists
DoAcquisition_default(20, TRUE); DoPartialAcquisition(20, true, 5500);
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
LED_A_OFF(); LED_A_OFF();

View file

@ -119,11 +119,11 @@ void LFSetupFPGAForADC(int divisor, bool lf_field)
* @param silent - is true, now outputs are made. If false, dbprints the status * @param silent - is true, now outputs are made. If false, dbprints the status
* @return the number of bits occupied by the samples. * @return the number of bits occupied by the samples.
*/ */
uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averaging, int trigger_threshold, bool silent) uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averaging, int trigger_threshold, bool silent, int bufsize)
{ {
//. //.
uint8_t *dest = BigBuf_get_addr(); uint8_t *dest = BigBuf_get_addr();
int bufsize = BigBuf_max_traceLen(); bufsize = (bufsize > 0 && bufsize < BigBuf_max_traceLen()) ? bufsize : BigBuf_max_traceLen();
//memset(dest, 0, bufsize); //creates issues with cmdread (marshmellow) //memset(dest, 0, bufsize); //creates issues with cmdread (marshmellow)
@ -213,7 +213,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averag
*/ */
uint32_t DoAcquisition_default(int trigger_threshold, bool silent) uint32_t DoAcquisition_default(int trigger_threshold, bool silent)
{ {
return DoAcquisition(1,8,0,trigger_threshold,silent); return DoAcquisition(1,8,0,trigger_threshold,silent,0);
} }
uint32_t DoAcquisition_config( bool silent) uint32_t DoAcquisition_config( bool silent)
{ {
@ -221,7 +221,12 @@ uint32_t DoAcquisition_config( bool silent)
,config.bits_per_sample ,config.bits_per_sample
,config.averaging ,config.averaging
,config.trigger_threshold ,config.trigger_threshold
,silent); ,silent
,0);
}
uint32_t DoPartialAcquisition(int trigger_threshold, bool silent, int sample_size) {
return DoAcquisition(1,8,0,trigger_threshold,silent,sample_size);
} }
uint32_t ReadLF(bool activeField, bool silent) uint32_t ReadLF(bool activeField, bool silent)

View file

@ -24,9 +24,11 @@ uint32_t SampleLF(bool silent);
* Initializes the FPGA for snoop-mode (field off), and acquires the samples. * Initializes the FPGA for snoop-mode (field off), and acquires the samples.
* @return number of bits sampled * @return number of bits sampled
**/ **/
uint32_t SnoopLF(); uint32_t SnoopLF();
// adds sample size to default options
uint32_t DoPartialAcquisition(int trigger_threshold, bool silent, int sample_size);
/** /**
* @brief Does sample acquisition, ignoring the config values set in the sample_config. * @brief Does sample acquisition, ignoring the config values set in the sample_config.
* This method is typically used by tag-specific readers who just wants to read the samples * This method is typically used by tag-specific readers who just wants to read the samples

View file

@ -823,8 +823,9 @@ void printEM4x05info(uint8_t chipType, uint8_t cap, uint16_t custCode, uint32_t
switch (cap) { switch (cap) {
case 3: PrintAndLog(" Cap Type: %u | 330pF",cap); break; case 3: PrintAndLog(" Cap Type: %u | 330pF",cap); break;
case 2: PrintAndLog(" Cap Type: %u | 210pF",cap); break; case 2: PrintAndLog(" Cap Type: %u | %spF",cap, (chipType==2)? "75":"210"); break;
case 1: PrintAndLog(" Cap Type: %u | 250pF",cap); break; case 1: PrintAndLog(" Cap Type: %u | 250pF",cap); break;
case 0: PrintAndLog(" Cap Type: %u | no resonant capacitor",cap); break;
default: PrintAndLog(" Cap Type: %u | unknown",cap); break; default: PrintAndLog(" Cap Type: %u | unknown",cap); break;
} }