Index: yc_nfc/yc_emv_contactless_l1.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_nfc/yc_emv_contactless_l1.h	(revision 602)
+++ /YC3121_SDK/fw/sdk/yc_nfc/yc_emv_contactless_l1.h	(working copy)
@@ -8,14 +8,14 @@
   *			 contactless level 1 interface
   ******************************************************************************
   */
-  
+
 #ifndef __YC_EMV_CONTACTLESS_L1_H_
 #define __YC_EMV_CONTACTLESS_L1_H_
 
 #ifdef __cplusplus
 extern "C" {
 #endif
-	 
+
 #include "yc3121.h"
 #include "yc_nfc_common.h"
 
@@ -25,104 +25,103 @@
 extern uint8_t READREG(unsigned char addr);
 /************************************ Portability relevant ***********************************/	
 
-	
 /****************************** yc5018 reg table ***************************/
 #ifndef __YC5018_REG_TABLE_H_
 #define __YC5018_REG_TABLE_H_
-#define REG_PAGE_SELECT             	0  
-#define REG_TOP_CTRL                	1  
-#define REG_COMMAND                 	2  
-#define REG_FIFO_CTRL               	3  
-#define REG_FIFO_LENGTH             	4  
-#define REG_WATER_LEVEL             	5  
-#define REG_FIFO_DATA               	6  
-#define REG_IRQ0_STATE              	7  
-#define REG_IRQ1_STATE              	8  
-#define REG_IRQ0_CLEAR              	9  
-#define REG_IRQ1_CLEAR              	10 
-#define REG_IRQ0_EN                 	11 
-#define REG_IRQ1_EN                 	12 
-#define REG_ERROR_FLAG              	13 
-#define REG_PROTOCOL_ERROR          	14 
-#define REG_T_CTRL                  	15 
-#define REG_T_PRESCAL_HI            	16 
-#define REG_T_PRESCAL_LO            	17 
-#define REG_T_RELOAD_HI             	18 
-#define REG_T_RELOAD_LO             	19 
-#define REG_T_VALUE_HI              	20 
-#define REG_T_VALUE_LO              	21 
-#define REG_TX_WAIT_CTRL            	22 
-#define REG_TX_WAIT_FREQ            	23 
-#define REG_TX_WAIT                 	24 
-#define REG_TX_CODER_CTRL           	25 
-#define REG_TX_CRC_CTRL             	26 
-#define REG_MOD_WIDTH               	27 
-#define REG_TX_TYPE_B_FRAMING       	28 
-#define REG_FRAM_CON                	29 
-#define REG_RX_WAIT                 	30 
-#define REG_RX_WAIT_FREQ            	31 
-#define REG_RX_CODER_CTRL           	32 
-#define REG_RX_CRC_CTRL             	33 
-#define REG_RX_BIT_CTRL             	34 
-#define REG_RX_COLL                 	35 
-#define REG_RX_TYPE_B_FRAMING       	36 
-#define REG_RX_TOLERANCE            	37 
-#define REG_RX_LAST_BITS            	38 
-#define REG_EMD_CONDITION_MASK0     	39 
-#define REG_EMD_CONDITION_MASK1     	40 
-#define REG_EMD_STATUS0             	41 
-#define REG_EMD_STATUS1             	42 
-#define REG_EMD_FRAME_LENGTH        	43 
-#define REG_TX_FALL_GAIN0           	44 
-#define REG_TX_FALL_GAIN1           	45 
-#define REG_TX_FALL_GAIN2           	46 
-#define REG_TX_FALL_GAIN3           	47 
-#define REG_TX_FALL_GAIN4           	48 
-#define REG_TX_FALL_GAIN5           	49 
-#define REG_TX_FALL_GAIN6           	50 
-#define REG_TX_FALL_GAIN7           	51 
-#define REG_TX_RISE_GAIN0           	52 
-#define REG_TX_RISE_GAIN1           	53 
-#define REG_TX_RISE_GAIN2           	54 
-#define REG_TX_RISE_GAIN3           	55 
-#define REG_TX_RISE_GAIN4           	56 
-#define REG_TX_RISE_GAIN5           	57 
-#define REG_TX_RISE_GAIN6           	58 
-#define REG_TX_RISE_GAIN7           	59 
-#define REG_DEMOD_CTRL              	60 
-#define REG_DEMOD_TYPEA_CTRL        	61 
-#define REG_MIN_LEVEL_LOW           	62 
-#define REG_MIN_LEVEL_HIGH          	63 
-#define REG_COLL_LEVEL              	64 
-#define REG_RSSI_CALC_CONFIG        	65 
-#define REG_RSSI_CALC_CTRL          	66 
-#define REG_AVG_POW                 	67 
-#define REG_AVG_I                   	68 
-#define REG_AVG_Q                   	69 
-#define REG_DC_I                    	70 
-#define REG_DC_Q                    	71 
-#define REG_PMU_STATE               	72 
-#define REG_CTRL_STATE              	73 
-#define REG_DEMOD_STATE             	74 
-#define REG_TOP_CTRL2               	80 
-#define REG_WUC_PERIOD              	81 
-#define REG_CLK_CTRL                	82 
-#define REG_ADC_CTRL                	83 
-#define REG_ADC_VALUE_I             	84 
-#define REG_ADC_VALUE_Q             	85 
-#define REG_CAP_CTRL1               	86 
-#define REG_CAP_CTRL2               	87 
-#define REG_DEBUG_CTRL              	88 
-#define REG_PIN_MUX_CTRL            	89 
-#define REG_PIN_PE_CTRL             	90 
-#define REG_METAL_FIX_CTRL          	91 
-#define REG_METAL_FIX_REG_13P56     	92 
-#define REG_METAL_FIX_REG_32K       	93 
-#define REG_RESERVED_REG            	94 
-#define REG_GPIO_DS_CTRL            	95 
-#define REG_TX_PA_GAIN              	97 
-#define REG_TX_PA_MOD_GAIN          	98 
-#define REG_TX_PA_GAIN_CTRL         	99 
+#define REG_PAGE_SELECT             	0
+#define REG_TOP_CTRL                	1
+#define REG_COMMAND                 	2
+#define REG_FIFO_CTRL               	3
+#define REG_FIFO_LENGTH             	4
+#define REG_WATER_LEVEL             	5
+#define REG_FIFO_DATA               	6
+#define REG_IRQ0_STATE              	7
+#define REG_IRQ1_STATE              	8
+#define REG_IRQ0_CLEAR              	9
+#define REG_IRQ1_CLEAR              	10
+#define REG_IRQ0_EN                 	11
+#define REG_IRQ1_EN                 	12
+#define REG_ERROR_FLAG              	13
+#define REG_PROTOCOL_ERROR          	14
+#define REG_T_CTRL                  	15
+#define REG_T_PRESCAL_HI            	16
+#define REG_T_PRESCAL_LO            	17
+#define REG_T_RELOAD_HI             	18
+#define REG_T_RELOAD_LO             	19
+#define REG_T_VALUE_HI              	20
+#define REG_T_VALUE_LO              	21
+#define REG_TX_WAIT_CTRL            	22
+#define REG_TX_WAIT_FREQ            	23
+#define REG_TX_WAIT                 	24
+#define REG_TX_CODER_CTRL           	25
+#define REG_TX_CRC_CTRL             	26
+#define REG_MOD_WIDTH               	27
+#define REG_TX_TYPE_B_FRAMING       	28
+#define REG_FRAM_CON                	29
+#define REG_RX_WAIT                 	30
+#define REG_RX_WAIT_FREQ            	31
+#define REG_RX_CODER_CTRL           	32
+#define REG_RX_CRC_CTRL             	33
+#define REG_RX_BIT_CTRL             	34
+#define REG_RX_COLL                 	35
+#define REG_RX_TYPE_B_FRAMING       	36
+#define REG_RX_TOLERANCE            	37
+#define REG_RX_LAST_BITS            	38
+#define REG_EMD_CONDITION_MASK0     	39
+#define REG_EMD_CONDITION_MASK1     	40
+#define REG_EMD_STATUS0             	41
+#define REG_EMD_STATUS1             	42
+#define REG_EMD_FRAME_LENGTH        	43
+#define REG_TX_FALL_GAIN0           	44
+#define REG_TX_FALL_GAIN1           	45
+#define REG_TX_FALL_GAIN2           	46
+#define REG_TX_FALL_GAIN3           	47
+#define REG_TX_FALL_GAIN4           	48
+#define REG_TX_FALL_GAIN5           	49
+#define REG_TX_FALL_GAIN6           	50
+#define REG_TX_FALL_GAIN7           	51
+#define REG_TX_RISE_GAIN0           	52
+#define REG_TX_RISE_GAIN1           	53
+#define REG_TX_RISE_GAIN2           	54
+#define REG_TX_RISE_GAIN3           	55
+#define REG_TX_RISE_GAIN4           	56
+#define REG_TX_RISE_GAIN5           	57
+#define REG_TX_RISE_GAIN6           	58
+#define REG_TX_RISE_GAIN7           	59
+#define REG_DEMOD_CTRL              	60
+#define REG_DEMOD_TYPEA_CTRL        	61
+#define REG_MIN_LEVEL_LOW           	62
+#define REG_MIN_LEVEL_HIGH          	63
+#define REG_COLL_LEVEL              	64
+#define REG_RSSI_CALC_CONFIG        	65
+#define REG_RSSI_CALC_CTRL          	66
+#define REG_AVG_POW                 	67
+#define REG_AVG_I                   	68
+#define REG_AVG_Q                   	69
+#define REG_DC_I                    	70
+#define REG_DC_Q                    	71
+#define REG_PMU_STATE               	72
+#define REG_CTRL_STATE              	73
+#define REG_DEMOD_STATE             	74
+#define REG_TOP_CTRL2               	80
+#define REG_WUC_PERIOD              	81
+#define REG_CLK_CTRL                	82
+#define REG_ADC_CTRL                	83
+#define REG_ADC_VALUE_I             	84
+#define REG_ADC_VALUE_Q             	85
+#define REG_CAP_CTRL1               	86
+#define REG_CAP_CTRL2               	87
+#define REG_DEBUG_CTRL              	88
+#define REG_PIN_MUX_CTRL            	89
+#define REG_PIN_PE_CTRL             	90
+#define REG_METAL_FIX_CTRL          	91
+#define REG_METAL_FIX_REG_13P56     	92
+#define REG_METAL_FIX_REG_32K       	93
+#define REG_RESERVED_REG            	94
+#define REG_GPIO_DS_CTRL            	95
+#define REG_TX_PA_GAIN              	97
+#define REG_TX_PA_MOD_GAIN          	98
+#define REG_TX_PA_GAIN_CTRL         	99
 #define REG_XTAL_STABLE_TIME        	104
 #define REG_MODEM_STATE_FORCE_MODE  	105
 #define REG_LPCD0_CNT_TIME          	106
@@ -191,8 +190,8 @@
 #define REG_MODEM_STATE_TABLE9      	186
 
 
-#endif /*__YC5018_REG_TABLE_H_*/	
-	
+#endif /*__YC5018_REG_TABLE_H_*/
+
 #define TX_BAUD_RATE_106	0
 #define TX_BAUD_RATE_212	1
 #define TX_BAUD_RATE_424	2
@@ -203,44 +202,44 @@
 #define RX_BAUD_RATE_424	2
 #define RX_BAUD_RATE_848	3
 
-	
+
 /* Error code reported to terminal */
-#define EMV_ERR_NONE			0
-#define EMV_ERR_PARA			1
-#define EMV_ERR_NO_CARD			2
-#define EMV_ERR_COLLISION		3
-#define EMV_ERR_TIME_OUT		4
-#define EMV_ERR_TRANSMISSION	5
-#define EMV_ERR_PROTOCOL		6
-#define EMV_ERR_OVERFLOW		7
-#define EOT_IND_REMOVE			8
-#define EOT_IND_POWER_OFF		9
-#define EOT_SHOUT				10 
+#define EMV_ERR_NONE         0
+#define EMV_ERR_PARA         1
+#define EMV_ERR_NO_CARD	     2
+#define EMV_ERR_COLLISION    3
+#define EMV_ERR_TIME_OUT     4
+#define EMV_ERR_TRANSMISSION 5
+#define EMV_ERR_PROTOCOL     6
+#define EMV_ERR_OVERFLOW     7
+#define EOT_IND_REMOVE       8
+#define EOT_IND_POWER_OFF    9
+#define EOT_SHOUT            10
 /* Power consumption relevant */
-#define LDO	 0
+#define LDO                  0
 
 //#define EMV_MAIN_LOOP
 
-/*一：(1)采用固定接收增益*/
+/*涓锛氾紙1锛夐噰鐢ㄥ浐瀹氭帴鏀跺鐩*/
 #define RX_GAINtemp  	RX_GAIN_18DB
 
-/*一：(2)采用agc自动调增接收增益开启宏定义*/
+/*涓锛氾紙2锛夐噰鐢╝gc鑷姩璋冨鎺ユ敹澧炵泭寮鍚畯瀹氫箟*/
 //#define  RXGAIN_CORRECTION
 
 #define SIGNAL_RSSI_MAX  0X50
-#define SIGNAL_RSSI_MIN  0X20  /*修改接收RSSI值上下限*/
+#define SIGNAL_RSSI_MIN  0X20  /*淇敼鎺ユ敹RSSI鍊间笂涓嬮檺*/
 
-/*二：(1)：修改固定调制深度*/
+/*浜岋細(1)锛氫慨鏀瑰浐瀹氳皟鍒舵繁搴*/
 /* Modulation index */
 #define MOD_INDEX	0x10
 
-/*二：(2)开启自动校正调制深度*/
+/*浜岋細(2)寮鍚嚜鍔ㄦ牎姝ｈ皟鍒舵繁搴*/
 //#define   MODINDEX_CALI
 
-#define ratio_0     75	//微调0CM调制深度比率
-#define ratio_1_4   80	//微调1到4cm调制深度比率
+#define ratio_0     75 //寰皟0CM璋冨埗娣卞害姣旂巼
+#define ratio_1_4   80 //寰皟1鍒4cm璋冨埗娣卞害姣旂巼
 
-/*三：开启波形调整*/
+/*锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟轿碉拷锟斤拷*/
 //#define REG_TX_FALL_RISE
 #define TYPEA_RISE_GAIN0 0x10
 #define TYPEA_RISE_GAIN1 0x18
@@ -251,47 +250,46 @@
 #define TYPEA_RISE_GAIN6 0x30
 #define TYPEA_RISE_GAIN7 0x32
 
-/*四:修改接收通路上并联电阻值*/
-#define RF_ATT   0x01		/*[0x00  250欧]  [0x01  500欧]   [0x02  1k ]  [0x03  2k ]  [0x04  无电阻]*/
+/*鍥:淇敼鎺ユ敹閫氳矾涓婂苟鑱旂數闃诲贾*/
+#define RF_ATT  0x01  /*[0x00  250娆  [0x01  500娆   [0x02  1k ]  [0x03  2k ]  [0x04  鏃犵數闃籡*/
+
+/*浜旓細淇敼闂ㄩ檺鍊奸珮浣庝綅鍊贾*/
+#define min_level_l   0x8a /*闂ㄩ檺鍊间綆浣*/
+#define min_level_h   0x01 /*闂ㄩ檺鍊奸珮浣*/
 
-/*五：修改门限值高低位值*/
-#define min_level_l  	0x8a	/*门限值低位*/
-#define min_level_h		0x01	/*门限值高位*/
 
+/*鍏細鎵撳嵃鍙傛暟(RSSI/AVG_I/AVG_Q/RX_GAIN/搴曞眰鎶ラ敊鎵撳嵃)*/
 
-/*六：打印参数(RSSI/AVG_I/AVG_Q/RX_GAIN/底层报错打印)*/
+#define EMV_DEBUG   /*寮鍚畯瀹氫箟*/
 
-#define 	EMV_DEBUG   /*开启宏定义*/
 
+/*涓冿細WUPA 鍜學UPB鍛戒护鍙戦佸悗鐨勮秴鏃舵椂闂*/
 
-/*七：WUPA 和WUPB命令发送后的超时时间*/
+#define wupa_anti_select_prescal 0
+#define wupa_anti_select_reload  1400
 
-#define 	wupa_anti_select_prescal	0
-#define 	wupa_anti_select_reload		1400
+#define wupb_prescal  3
+#define wupb_reload   57516
 
-#define 	wupb_prescal		3
-#define 	wupb_reload		57516
 
+/*璁＄畻鏂规硶  t_reload *(t_prescal+1)*(1/13.56M)us*/
 
-/*计算方法  t_reload *(t_prescal+1)*(1/13.56M)us   */
+/*鍏細婊ゆ尝鍣ㄥ甫瀹*/
+#define RX_CTRL3 0xBD
+#define RX_CTRL5 0x7C
 
-/*八：滤波器带宽*/
-		#define RX_CTRL3	0x3D
-		#define RX_CTRL5	0x7C
+/*涔 鏃犺皟鍒舵椂PA澧炵泭*/
+#define PA_Gain	 0x7f
 
 
-/*九 无调制时PA增益*/
-#define PA_Gain		0x7f
-	 
-	
-/*十 差分输入开启宏定义*/
+/*鍗 宸垎杈撳叆寮鍚畯瀹氫箟*/
 
 #define DIFF_ON
 
-/*开关场*/
+/*寮鍏冲満*/
 //#define CERTIFICTAION
 
- 
+
 #define RX_GAIN_6DB         ((0<<3) | (0<<5))
 #define RX_GAIN_12DB        ((1<<3) | (0<<5))
 #define RX_GAIN_18DB        ((2<<3) | (0<<5))
@@ -302,88 +300,82 @@
 #define RX_GAIN_48DB        ((3<<3) | (4<<5))
 #define RX_GAIN_54DB        ((3<<3) | (5<<5))
 
-#define RX_I_R_250			0
-#define RX_I_R_500			1	
-#define RX_I_R_1K			2
-#define RX_I_R_2K			3
-#define RX_I_R_OPEN			4
-
-
-#define Tp()				Nfc_SysTick_Delay_Ms(6)
-#define Tretransmission()	Nfc_SysTick_Delay_Ms(8)
-#define Tresetdelay()		Nfc_SysTick_Delay_Ms(10)
-#define Tpoweroff()			Nfc_SysTick_Delay_Ms(20)
-
-
-#define CALI_OK		0 
-#define CALI_FAIL	1
-#define DC_ACCEPT_RANGE		0x03
-
+#define RX_I_R_250    0
+#define RX_I_R_500    1
+#define RX_I_R_1K     2
+#define RX_I_R_2K     3
+#define RX_I_R_OPEN   4
+
+#define Tp()              Nfc_SysTick_Delay_Ms(6)
+#define Tretransmission() Nfc_SysTick_Delay_Ms(8)
+#define Tresetdelay()     Nfc_SysTick_Delay_Ms(10)
+#define Tpoweroff()       Nfc_SysTick_Delay_Ms(20)
+
+#define CALI_OK          0
+#define CALI_FAIL        1
+#define DC_ACCEPT_RANGE  0x03
 
 #define WIN_SIZE_32         0
 #define WIN_SIZE_64         1
 #define WIN_SIZE_128        2
 #define WIN_SIZE_256        3
 
+#define get_dc_i()       READREG(REG_AVG_I)
+#define get_dc_q()       READREG(REG_AVG_Q)
+#define get_cali_i()     READREG(REG_RX_CTRL1)
+#define get_cali_q()     READREG(REG_RX_CTRL2)
+#define set_cali_i(rval) WRITEREG(REG_RX_CTRL1, rval)
+#define set_cali_q(rval) WRITEREG(REG_RX_CTRL2, rval)
+
+#define FSD        256
+
+#define IDLE       0x00
+#define RECEIVE    0x01
+#define TRANSMIT   0x02
+#define TRANSCEIVE 0x03
+
+#define I_BLOCK 0
+#define R_BLOCK 2
+#define S_BLOCK 3
+
+#define BIT0  0x01
+#define BIT1  0x02
+#define BIT2  0x04
+#define BIT3  0x08
+#define BIT4  0x10
+#define BIT5  0x20
+#define BIT6  0x40
+#define BIT7  0x80
 
-#define get_dc_i() 			READREG(REG_AVG_I)
-#define get_dc_q() 			READREG(REG_AVG_Q)
-#define get_cali_i()  		READREG(REG_RX_CTRL1)
-#define get_cali_q() 		READREG(REG_RX_CTRL2)
-#define set_cali_i(rval) 	WRITEREG(REG_RX_CTRL1, rval)
-#define set_cali_q(rval) 	WRITEREG(REG_RX_CTRL2, rval)
-
-
-#define FSD			256
-
-#define IDLE		0x00
-#define RECEIVE		0x01
-#define TRANSMIT	0x02
-#define TRANSCEIVE	0x03
-
-#define I_BLOCK 	0
-#define R_BLOCK 	2
-#define S_BLOCK 	3
-
-#define BIT0		0x01
-#define BIT1		0x02
-#define BIT2		0x04
-#define BIT3		0x08
-#define BIT4		0x10
-#define BIT5		0x20
-#define BIT6		0x40
-#define BIT7		0x80
-
-#define FSC_CHAINING	256
+#define FSC_CHAINING 256
 
-#define FIFO_LENGTH		64
-#define WATER_LEVEL		32
+#define FIFO_LENGTH  64
+#define WATER_LEVEL  32
 
 #if 1
 #define PRINT(format,...) MyPrintf(format,##__VA_ARGS__)
-#else 
+#else
 #define PRINT(format,...)	((void)0)
 #endif
 
-#define TYPE_A	0
-#define	TYPE_B	1
+#define TYPE_A 0
+#define	TYPE_B 1
 
-#define ON	1
-#define OFF	0
-
-#define CL1	0x93
-#define CL2	0x95
-#define CL3	0x97
+#define ON  1
+#define OFF 0
 
+#define CL1 0x93
+#define CL2 0x95
+#define CL3 0x97
 
 typedef struct{
-	unsigned char addr;
-	unsigned char value;
+  unsigned char addr;
+  unsigned char value;
 }YC_EMV_Contactless_L1_Reg_t;
-	
+
 typedef struct{
-	unsigned char reg_table_index;
-	YC_EMV_Contactless_L1_Reg_t *reg_table;
+  unsigned char reg_table_index;
+  YC_EMV_Contactless_L1_Reg_t *reg_table;
 }YC_EMV_Contactless_L1_Reg_Config_t;
 
 typedef struct{
@@ -408,8 +400,7 @@
   * @retval None
   */
 void YC_EMV_Contactless_L1_Switch_Card_Type(unsigned char picc_type);
-	
-	
+
 /* Power on/off Operating Field */
 
 /**
@@ -429,7 +420,6 @@
   */
 unsigned char YC_EMV_Contactless_L1_WUPA(void);
 
-
 /**
   * @brief  REQA
   * @param  None
@@ -437,7 +427,6 @@
   */
 unsigned char YC_EMV_Contactless_L1_REQA(void);
 
-
 /**
   * @brief  Type A Collision Detection
   *
@@ -448,7 +437,7 @@
 
 /**
   * @brief  ANTICOLLISION
-  * @param  cl： specifies cascade level
+  * @param  cl锟斤拷 specifies cascade level
   *   This parameter can be one of the values:
   *     @arg CL1: cascase level 1
   *     @arg CL2: cascase level 2
@@ -457,27 +446,26 @@
   */
 unsigned char YC_EMV_Contactless_L1_ANTICOLLISION(unsigned char cl);
 
-
 /**
   * @brief  SELECT
   * @note   When UID is complete, then check if PICC is compliant with ISO/IEC 14443-4
-  * @param  cl： specifies cascade level
+  * @param  cl锟斤拷 specifies cascade level
   *   This parameter can be one of the values:
   *     @arg CL1: cascase level 1
   *     @arg CL2: cascase level 2
   *     @arg CL2: cascase level 3
-  * @param  UID_complete: 
+  * @param  UID_complete:
   *			  1: UID not complete
   *			  0: UID complete
   * 	@note if not use this value, can input NULL
-  * @param  ISOIEC14443_4_compliant: 
+  * @param  ISOIEC14443_4_compliant:
   *           1: PICC compliant with ISO/IEC 14443-4
   *           0: PICC not compliant with ISO/IEC 14443-4
   * 	@note if not use this value, can input NULL
   * @retval Error code
   */
-unsigned char YC_EMV_Contactless_L1_SELECT(unsigned char cl, 
-										unsigned char *UID_complete, 
+unsigned char YC_EMV_Contactless_L1_SELECT(unsigned char cl,
+										unsigned char *UID_complete,
 										unsigned char *ISOIEC14443_4_compliant);
 
 /**
@@ -496,7 +484,7 @@
 
 /**
   * @brief  WUPB
-  * @param  ISOIEC14443_4_compliant: 
+  * @param  ISOIEC14443_4_compliant:
   *           1: PICC compliant with ISO/IEC 14443-4
   *           0: PICC not compliant with ISO/IEC 14443-4
   * 	@note if not use this value, can input NULL
@@ -507,7 +495,7 @@
 
 /**
   * @brief  REQB
-  * @param  ISOIEC14443_4_compliant: 
+  * @param  ISOIEC14443_4_compliant:
   *           1: PICC compliant with ISO/IEC 14443-4
   *           0: PICC not compliant with ISO/IEC 14443-4
   * 	@note if not use this value, can input NULL
@@ -538,7 +526,6 @@
   */
 unsigned char YC_EMV_Contactless_L1_HLTB(void);
 
-
 /**
   * @brief  APDU processing
   * @param  inf: APDU
@@ -547,9 +534,9 @@
   * @param  reslen: APDU response length
   * @retval Error code
   */
-unsigned char YC_EMV_Contactless_L1_APDU_Transceive(const unsigned char *inf, 
+unsigned char YC_EMV_Contactless_L1_APDU_Transceive(const unsigned char *inf,
 												unsigned short inflen,
-												unsigned char *res, 
+												unsigned char *res,
 												unsigned short *reslen);
 
 /**
@@ -568,9 +555,9 @@
 
 /**
   * @brief  Set carrier power
-  * @param  PaGain : 0~0xff 
+  * @param  PaGain : 0~0xff
   * @retval None
-  */																							
+  */
 void Set_Carrier_Strength(unsigned char PaGain);
 
 /**
@@ -579,17 +566,17 @@
 						#define RX_GAIN_12DB
 						#define RX_GAIN_18DB
 						#define RX_GAIN_24DB
-						#define RX_GAIN_30DB  
-						#define RX_GAIN_36DB 
-						#define RX_GAIN_42DB 
-						#define RX_GAIN_48DB  
+						#define RX_GAIN_30DB
+						#define RX_GAIN_36DB
+						#define RX_GAIN_42DB
+						#define RX_GAIN_48DB
 						#define RX_GAIN_54DB
-						
+
   * @param  RfAtt :    #define RX_I_R_250
 					   #define RX_I_R_500
 					   #define RX_I_R_1K
 					   #define RX_I_R_2K
-					   #define RX_I_R_OPEN					
+					   #define RX_I_R_OPEN
   * @retval None
   */
 void Set_Receive_Parameters(unsigned char RxGain,unsigned char RfAtt);
@@ -601,9 +588,6 @@
   */
 void Set_Min_Level(unsigned short MinLevel);
 
-
-
-
 /*****************************************Intrinsic Function**************************************************/
 void set_dc_win(uint8_t win);
 void set_rssi_calc_en(uint8_t en);
Index: yc_nfc/yc_emv_contactless_l1.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_nfc/yc_emv_contactless_l1.c	(revision 602)
+++ /YC3121_SDK/fw/sdk/yc_nfc/yc_emv_contactless_l1.c	(working copy)
@@ -34,9 +34,9 @@
 static unsigned char FWI;
 static unsigned char FSCI;
 static unsigned char Block_Num;
-static uint8_t printf_flag = 0;	//0时锟斤拷锟斤拷印
+static uint8_t printf_flag = 0;	//log鎵撳嵃鏍囧織浣
 
-const static unsigned short FSC_Table[] = {16, 24, 32, 40, 48, 64, 96, 
+const static unsigned short FSC_Table[] = {16, 24, 32, 40, 48, 64, 96,
 										128, 256, 512, 1024, 2048, 4096};
 EMV_Poll_Type_t Poll_Type;
 
@@ -83,9 +83,9 @@
 	WRITEREG(REG_T_PRESCAL_LO, prescal & 0xff);
 	WRITEREG(REG_T_RELOAD_HI, (reload >> 8) & 0xff);
 	WRITEREG(REG_T_RELOAD_LO, reload & 0xff);
-	WRITEREG(REG_T_CTRL, 0x38);	
+	WRITEREG(REG_T_CTRL, 0x38);
 }
-		
+
 /**
   * @brief  N-th power of 2
   * @param  n: number of power
@@ -99,10 +99,10 @@
 static void EMV_Set_FWT(unsigned int t)
 {
 	unsigned short prescal, reload;
-	
+
 	reload = 65535;
 	prescal = t / 65535 - 1;
-	
+
 	EMV_Set_Timer(prescal, reload);
 }
 
@@ -151,10 +151,6 @@
 										}									\
 									}while(0)
 
-
-
-
-
 /**
   * @brief 	Individual initialization
   * @param  picc_type: specifies which kind of PICC to communicate
@@ -164,10 +160,6 @@
   * @retval None
   */
 
-
-
-
-
 /*********************************************************** Link Layer and Transport Layer ***************************************************************/
 /**
   * @brief  Common initialization
@@ -176,56 +168,55 @@
   * @retval None
   */
 void YC_EMV_Contactless_L1_Init( void)
-{	
-	
+{
+
 	SETBITMASK(REG_TOP_CTRL, 0x10);
-	
+
 	WRITEREG(REG_IRQ0_EN,0x00);
 	WRITEREG(REG_IRQ1_EN,0x00);
-	
+
 	WRITEREG(REG_COLL_LEVEL, 0x06);
 	WRITEREG(REG_DEMOD_CTRL, 0x88);
-	
+
 	Set_Min_Level(0x18a);
 
 	WRITEREG(REG_ADC_CTRL, 0x00);
-	
+
 	WRITEREG(REG_TX_WAIT_CTRL, (((6780 >> 8) & 0x1f) << 2) | 0x02);
 	WRITEREG(REG_TX_WAIT_FREQ, 0);
 	WRITEREG(REG_TX_WAIT, 6780 & 0xff);
-	
+
 	WRITEREG(REG_RX_WAIT, 0x3b);
 	WRITEREG(REG_RX_WAIT_FREQ, 0x04);
-	
+
 	WRITEREG(REG_WATER_LEVEL, WATER_LEVEL);
-	
+
 	WRITEREG(REG_MOD_WIDTH, 0x20);
-	
+
 	CLEARBITMASK(REG_RX_CTRL0, 0xf8);
 	SETBITMASK(REG_RX_CTRL0, 0x28);
-	
+
 	Set_Receive_Parameters(RX_GAIN_18DB,RX_I_R_500);
-	
+
 	Set_Carrier_Strength(PA_Gain);
-	
+
 	WRITEREG(REG_TEST_PA_CTRL, 0x14);
-	
+
 	#ifdef  DIFF_ON
-	/*默锟斤拷使锟矫诧拷锟斤拷锟斤拷锟*/
-	WRITEREG(REG_RX_CTRL4, 0x07);	
+	WRITEREG(REG_RX_CTRL4, 0x0B);
 	#endif
-	
+
 	SETBITMASK(REG_RSSI_CALC_CTRL, 0x02);
 	SETBITMASK(REG_RSSI_CALC_CONFIG, 0x04);
-	
+
 	WRITEREG(REG_RX_CTRL3, RX_CTRL3);
 	WRITEREG(REG_RX_CTRL5, RX_CTRL5);
 
 }
 
 void YC_EMV_Contactless_L1_Switch_Card_Type(unsigned char picc_type)
-{	
-	
+{
+
 	#ifdef CERTIFICTAION
 		YC_EMV_Contactless_L1_Rf_Switch(OFF);
 		Nfc_SysTick_Delay_Ms(7);
@@ -245,7 +236,7 @@
 		WRITEREG(REG_TX_RISE_GAIN5, TYPEA_RISE_GAIN5);//0x28
 		WRITEREG(REG_TX_RISE_GAIN6, TYPEA_RISE_GAIN6);//0x30
 		WRITEREG(REG_TX_RISE_GAIN7, TYPEA_RISE_GAIN7);//0x32
-	
+
 		WRITEREG(REG_TX_FALL_GAIN0, 0);
 		WRITEREG(REG_TX_FALL_GAIN1, 0);
 		WRITEREG(REG_TX_FALL_GAIN2, 0);
@@ -254,10 +245,10 @@
 		WRITEREG(REG_TX_FALL_GAIN5, 0);
 		WRITEREG(REG_TX_FALL_GAIN6, 0);
 		WRITEREG(REG_TX_FALL_GAIN7, 0);
-	#endif	
+	#endif
 		WRITEREG(REG_TX_CODER_CTRL, 0x00);
 		WRITEREG(REG_RX_CODER_CTRL, 0x00);
-		
+
 		WRITEREG(REG_TX_CRC_CTRL, 0x04);
 		WRITEREG(REG_RX_CRC_CTRL, 0x04);
 	}
@@ -269,7 +260,7 @@
 		#else
 			WRITEREG(REG_TX_PA_MOD_GAIN, MOD_INDEX);
 		#endif
-		
+
 	 #ifdef REG_TX_FALL_RISE
 		CLEARBITMASK(REG_TX_PA_GAIN_CTRL, 0x01);
 		WRITEREG(REG_TX_FALL_GAIN0, mod_index+4);
@@ -280,7 +271,7 @@
 		WRITEREG(REG_TX_FALL_GAIN5, mod_index+4);
 		WRITEREG(REG_TX_FALL_GAIN6, mod_index+4);
 		WRITEREG(REG_TX_FALL_GAIN7, mod_index+4);
-		
+
 		WRITEREG(REG_TX_RISE_GAIN0, mod_index);
 		WRITEREG(REG_TX_RISE_GAIN1, mod_index+4);
 		WRITEREG(REG_TX_RISE_GAIN2, mod_index+0x08);
@@ -293,11 +284,11 @@
 		CLEARBITMASK(REG_TX_PA_GAIN_CTRL, 0x20);
 		WRITEREG(REG_TX_CODER_CTRL, 0x04);
 		WRITEREG(REG_RX_CODER_CTRL, 0x0c);
-		
+
 		WRITEREG(REG_TX_CRC_CTRL, 0x12);
 		WRITEREG(REG_RX_CRC_CTRL, 0x12);
 	}
-	
+
 	#ifdef	CERTIFICTAION
 		YC_EMV_Contactless_L1_Rf_Switch(ON);
 		Nfc_SysTick_Delay_Ms(2);
@@ -328,16 +319,16 @@
 
 /**
   * @brief Interface of transceiving.
-  * @param cmd: command 
+  * @param cmd: command
   * @param request: data sent to PICC
   * @param requestlen: length of data sent to PICC
   * @param txalign: number of bit of last byte sent to PICC
   * @param response: data received from PICC
   * @param responselen: length of data received from PICC
-  * @param rxalign: the first bit received 	
+  * @param rxalign: the first bit received
   * @retval Error code
   */
-static unsigned char EMV_Transceive(Cmd_t cmd, 
+static unsigned char EMV_Transceive(Cmd_t cmd,
 								const unsigned char *request, unsigned short requestlen, unsigned char txalign, 
 								unsigned char *response, unsigned short *responselen, unsigned char rxalign)
 {
@@ -346,23 +337,22 @@
 	unsigned char len=0;
 	unsigned int t=0,t2=0,reg_t=0;
 	unsigned char err_flag=0;
-	
+
 	if((cmd != CMD_HLTA) && (!response || !responselen))
 		return EMV_ERR_PARA;
 	if(!request && (requestlen != 0))
 		return EMV_ERR_PARA;
-	
+
 	WRITEREG(REG_COMMAND, IDLE);
-	
+
 	SETBITMASK(REG_FIFO_CTRL, 0x01);
 	CLEARBITMASK(REG_FIFO_CTRL, 0x01);
-	
+
 	WRITEREG(REG_IRQ0_CLEAR,0xff);
 	WRITEREG(REG_IRQ0_CLEAR,0x00);
 	WRITEREG(REG_IRQ1_CLEAR,0x07);
 	WRITEREG(REG_IRQ1_CLEAR,0x00);
 
-	
 	if (bit_rate == TX_BAUD_RATE_106) {
 		WRITEREG(REG_MOD_WIDTH, 0x26);
 		CLEARBITMASK(REG_TX_PA_GAIN_CTRL, 0x20);
@@ -373,7 +363,7 @@
 	} else {
 		WRITEREG(REG_MOD_WIDTH, 0x04); // 4~5
 	}
-	
+
 	if(txalign >= 8 || rxalign >= 8)
 	{
 		return EMV_ERR_PARA;
@@ -382,7 +372,7 @@
 	{
 		CLEARBITMASK(REG_TX_CODER_CTRL, (BIT0 | BIT1 | BIT2) << 3);
 		CLEARBITMASK(REG_RX_BIT_CTRL, BIT0 | BIT1 | BIT2);
-		
+
 		SETBITMASK(REG_TX_CODER_CTRL, txalign << 3);
 		SETBITMASK(REG_RX_BIT_CTRL, rxalign & 0x07);
 	}
@@ -391,7 +381,7 @@
 		CLEARBITMASK(REG_TX_CODER_CTRL, (BIT0 | BIT1 | BIT2) << 3);
 		CLEARBITMASK(REG_RX_BIT_CTRL, BIT0 | BIT1 | BIT2);
 	}
-	
+
 	if(cmd == CMD_ANTICOLLISION || cmd == CMD_SELECT || cmd == CMD_RATS \
 		|| cmd == CMD_HLTA || cmd == CMD_IBLOCK || cmd == CMD_RBLOCK  ||cmd == CMD_SBLOCK)
 	{
@@ -403,7 +393,7 @@
 		CLEARBITMASK(REG_FRAM_CON, BIT0);
 		SETBITMASK(REG_FRAM_CON, BIT1);
 	}
-	
+
 	if(cmd == CMD_WUPA || cmd == CMD_REQA || cmd == CMD_ANTICOLLISION)
 	{
 	    CLEARBITMASK(REG_TX_CRC_CTRL, BIT0);
@@ -414,10 +404,10 @@
 	    SETBITMASK(REG_TX_CRC_CTRL, BIT0);
 		SETBITMASK(REG_RX_CRC_CTRL, BIT0);
 	}
-	
+
 	if(cmd == CMD_REQA || cmd == CMD_ANTICOLLISION || cmd == CMD_SELECT)
 		EMV_Set_Timer(0, 1400);	//9 * 128 + 84/20
-	
+
 	else if(cmd == CMD_WUPA)
 		//EMV_Set_Timer(0, 1400);	//9 * 128 + 84/20
 		EMV_Set_Timer(wupa_anti_select_prescal, wupa_anti_select_reload);	//9 * 128 + 84/20
@@ -426,7 +416,7 @@
 		EMV_Set_Timer(4, 58812);							//FWT,ACTIVATION + Delta,Tpcd(16.4ms)
 
 	else if(cmd == CMD_WUPB || cmd == CMD_REQB)
-	
+
 		//EMV_Set_Timer(3, 57516);  							//FWT,ATQB + Delta,Tpcd(16.4ms)
 		EMV_Set_Timer(wupb_prescal, wupb_reload);  							//FWT,ATQB + Delta,Tpcd(16.4ms)
 
@@ -449,17 +439,14 @@
 			EMV_Set_FWT(t);
 		}
 	}
-	
 
 	if(cmd == CMD_IBLOCK)
 		WRITEREG(REG_FIFO_DATA, PCB);
 	for(i = 0; i < requestlen && i < FIFO_LENGTH - 3; i++)
 		WRITEREG(REG_FIFO_DATA, request[i]);
-	
 
 	SETBITMASK(REG_IRQ0_CLEAR, 0x20);
 	CLEARBITMASK(REG_IRQ0_CLEAR, 0x20);
-	
 
 	if(cmd == CMD_HLTA)
 	{
@@ -483,19 +470,18 @@
 			}
 			else
 			{
-				for(; i< requestlen; i++)  
+				for(; i< requestlen; i++)
 				{
 					WRITEREG(REG_FIFO_DATA, request[i]);
 				}
-			}					
-			
+			}
 
 			SETBITMASK(REG_IRQ0_CLEAR, 0x20);
 			CLEARBITMASK(REG_IRQ0_CLEAR, 0x20);
 		}
 	}
-	
-#ifdef MODINDEX_CALI	
+
+#ifdef MODINDEX_CALI
 	if(cmd == CMD_WUPB || cmd == CMD_REQB)
 	{
 		WRITEREG(REG_RSSI_CALC_CTRL, 0x02);
@@ -514,25 +500,21 @@
 
 		if(t2 > 0xffff)
 		{
-
 			return EOT_SHOUT;
-			
 		}
-		
-		
 	}
 	t2=0;
 	SETBITMASK(REG_IRQ0_CLEAR, 0x40);
 	CLEARBITMASK(REG_IRQ0_CLEAR, 0x40);
-	
+
 	if(cmd == CMD_HLTA)
 		return EMV_ERR_NONE;
-	
+
 	while(1)
 	{
 		t2++;
 		if((READREG(REG_IRQ0_STATE) & 0x01) != 0)  // 锟斤拷时
-		{		
+		{
 			#ifdef EMV_DEBUG
 				if(printf_flag)
 				{
@@ -541,7 +523,6 @@
 			#endif
 			return EMV_ERR_TIME_OUT;
 		}
-		
 
 		if((READREG(REG_IRQ0_STATE) & 0x04) != 0)   //
 		{
@@ -550,10 +531,10 @@
 
 
 		if((READREG(REG_IRQ0_STATE) & 0x40) != 0)
-		{		
+		{
 			break;
 		}
-		
+
 		if(t2 > 0xffff)
 		{
 
@@ -561,7 +542,7 @@
 		}
 	}
 	t2 = 0;
-	
+
 	*responselen = 0;
 
 	while((READREG(REG_IRQ0_STATE) & 0x04) == 0)
@@ -577,16 +558,13 @@
 				else
 					*responselen += 1;
 			}
-			
 
 			SETBITMASK(REG_IRQ0_CLEAR, 0x40);
 			CLEARBITMASK(REG_IRQ0_CLEAR, 0x40);
 		}
-		
+
 		if(t2 > 0xffff)
 		{
-
-		
 			return EOT_SHOUT;
 		}
 	}
@@ -601,7 +579,7 @@
 			else
 				*responselen += 1;
 	}
-	
+
 	err_flag = READREG(REG_ERROR_FLAG);
 
 	if((err_flag & 0x80) || (err_flag & 0x04) || (err_flag & 0x02) || (err_flag & 0x01))
@@ -612,7 +590,7 @@
 				printf_debug_info(EMV_ERR_TRANSMISSION, response, *responselen);
 			}
 		#endif
-			
+
 		return EMV_ERR_TRANSMISSION;
 	}
 	return EMV_ERR_NONE;
@@ -632,11 +610,11 @@
 												unsigned short *reslen)
 {
 	unsigned short i;
-	
+
 	unsigned char Recv[FSD] = {0};
 	unsigned char S_Block[2] = {0};
 	unsigned char R_Block[1] = {0};
-	
+
 	unsigned short FSC = 0;
 	unsigned char Send_Len = 0;
 	unsigned short Recv_Len = 0;
@@ -653,12 +631,12 @@
 
 	unsigned char Recieving;
 	unsigned char errno = EMV_ERR_NONE;
-	
+
 	if(!inf || !res || !reslen)
 	{
 		return EMV_ERR_PARA;
 	}
-	
+
 #define ACK 0x0
 #define NAK 0x10
 #define SendFinish()	((PCB & 0x10) == 0)	
@@ -684,9 +662,9 @@
 	{
 		FSC = FSC_CHAINING;
 	}
-	
+
 	*reslen = 0;
-	
+
 	while(1)
 	{
 		if((inflen - Send_Offset) > FSC - 3)
@@ -701,14 +679,14 @@
 		}
 		PCB |= Block_Num;
 		Retran = 0;
-		
+
 send:
 		Swtx = 0;
 		Time_Out = 0;
 		Tran_Err = 0;
 		Recieving = 0;
 		errno = EMV_Transceive(CMD_IBLOCK, inf + Send_Offset, Send_Len, 0, Recv, &Recv_Len, 0);
-		
+
 check:
 		if(errno == EOT_SHOUT)
 		{
@@ -717,7 +695,7 @@
 		if(errno == EMV_ERR_TIME_OUT)
 		{
 			Time_Out += 1;
-			
+
 			if(Recieving)
 			{
 				SendRB(ACK);
@@ -726,14 +704,14 @@
 			{
 				SendRB(NAK);
 			}
-			
+
 			goto check;
 		}
-		
+
 		if(errno == EMV_ERR_TRANSMISSION)
 		{
 			Tran_Err += 1;
-			
+
 			if(Recieving)
 			{
 				SendRB(ACK);
@@ -742,24 +720,24 @@
 			{
 				SendRB(NAK);
 			}
-			
+
 			goto check;
 		}
-		
+
 		switch((Recv[0] >> 6) & 0x03){
-			case I_BLOCK:				
+			case I_BLOCK:
 				if(Recv_Len + 2 > FSD)						//I-Block of length > FSD
 					return EMV_ERR_PROTOCOL;
 				if((Recv[0] & 0x20) || !(Recv[0] & 0x02))	//b6 must be 0, b2 must be 1.
-					return EMV_ERR_PROTOCOL;	
+					return EMV_ERR_PROTOCOL;
 				if((Recv[0] & 0x08) || (Recv[0] & 0x04))	//CID and NAD are not allowed.
 					return EMV_ERR_PROTOCOL;
 				if((Recv[0] & 0x01) != Block_Num)
 					return EMV_ERR_PROTOCOL;
-				
-				if(!SendFinish())	
+
+				if(!SendFinish())
 					return EMV_ERR_PROTOCOL;
-				
+
 				Block_Num ^= 0x01;
 				*reslen += Recv_Len - 1;
 				for(i = 1; i < Recv_Len; i++)
@@ -767,14 +745,14 @@
 					(res + Recv_Offset)[i - 1] = Recv[i];
 				}
 				Recv_Offset += Recv_Len - 1;
-				
-				if(Recv[0] & 0x10)	
+
+				if(Recv[0] & 0x10)
 				{
 					Swtx = 0;
 					Time_Out = 0;
 					Tran_Err = 0;
 					Recieving = 1;
-					
+
 					SendRB(ACK);
 
 					goto check;
@@ -783,63 +761,57 @@
 				{
 					return EMV_ERR_NONE;
 				}
-				
+
 			case R_BLOCK:
-				if(!(Recv[0] & 0x20) || !(Recv[0] & 0x02)) 	
+				if(!(Recv[0] & 0x20) || !(Recv[0] & 0x02))
 					return EMV_ERR_PROTOCOL;
-				if((Recv[0] & 0x08) || (Recv[0] & 0x04))	
+				if((Recv[0] & 0x08) || (Recv[0] & 0x04))
 					return EMV_ERR_PROTOCOL;
-				if(Recv[0] & 0x10)							
+				if(Recv[0] & 0x10)
 					return EMV_ERR_PROTOCOL;
 				else
 				{
 					if(Recieving)
-						return EMV_ERR_PROTOCOL;			
-					
-				
+						return EMV_ERR_PROTOCOL;
+
 					if((Recv[0] & 0x01) != Block_Num)
 					{
 						if(++Retran > 2)
 							return EMV_ERR_PROTOCOL;
-						
 						goto send;
 					}
-					
-					
+
 					if(SendFinish())
 						return EMV_ERR_PROTOCOL;
-					
-					
+
 					Block_Num ^= 0x01;
 					Send_Offset += Send_Len;
 				}
-				
-				break;													
-				
+
+				break;
+
 			case S_BLOCK:
-				if(Recv[0] & 0x01)										
+				if(Recv[0] & 0x01)
+					return EMV_ERR_PROTOCOL;
+				if((Recv[0] & 0x04) || (Recv[0] & 0x08))
 					return EMV_ERR_PROTOCOL;
-				if((Recv[0] & 0x04) || (Recv[0] & 0x08))				
-					return EMV_ERR_PROTOCOL;								
-				if(!(Recv[0] & 0x02) || ((Recv[0] & 0x30) != 0x30))		
+				if(!(Recv[0] & 0x02) || ((Recv[0] & 0x30) != 0x30))
 					return EMV_ERR_PROTOCOL;
-				
-				
+
 				WTXM = Recv[1] & 0x3f;
 				if((WTXM < 1) || (WTXM > 59))
 					return EMV_ERR_PROTOCOL;
-				
-				
+
 				S_Block[0] = (S_BLOCK << 6) | 0x30 | 0x02;
-				
+
 				S_Block[1] = WTXM;
-				
+
 				errno = EMV_Transceive(CMD_SBLOCK, S_Block, 2, 0, Recv, &Recv_Len, 0);
-				
+
 				Swtx += 1;
-				
+
 				goto check;
-			
+
 			default:
 				return EMV_ERR_PROTOCOL;
 		}
@@ -859,26 +831,22 @@
 	unsigned char errno = EMV_ERR_NONE;
 	unsigned char WUPA[1];
 	unsigned char ATQA[2];
-	
-	
+
 	YC_EMV_Contactless_L1_Switch_Card_Type(TYPE_A);
 	Tp();
 	WUPA[0] = 0x52;
-	
-	
-	#if defined (SDK_DEBUG) 
+
+	#if defined (SDK_DEBUG)
   	PRINT("WUPA ->: %02x\r\n", WUPA[0]);
   	#endif
-	
+
 	Set_Receive_Parameters(RX_GAIN_18DB,RX_I_R_500);
-	
+
 	errno = EMV_Transceive(CMD_WUPA, WUPA, 1, 7, ATQA, &len, 0);
 
-	
 	if(errno == EMV_ERR_NONE)
-	{	
-		
-		#if defined (SDK_DEBUG) 
+	{
+		#if defined (SDK_DEBUG)
 		PRINT("ATQA <-: ");
 		for(i = 0; i < len; i++)
 		{
@@ -886,11 +854,11 @@
 		}
 		PRINT("\r\n");
 		#endif
-		
+
 		if(len != 2)
 			return EMV_ERR_PROTOCOL;
 	}
-		
+
 	return errno;
 }
 
@@ -906,20 +874,20 @@
 	unsigned char errno = EMV_ERR_NONE;
 	unsigned char REQA[1];
 	unsigned char ATQA[2];
-	
+
 	REQA[0] = 0x26;
-	
-	
-	#if defined (SDK_DEBUG) 
+
+
+	#if defined (SDK_DEBUG)
   	PRINT("REQA ->: %02x\r\n", REQA[0]);
   	#endif
-	
+
 	errno = EMV_Transceive(CMD_REQA, REQA, 1, 7, ATQA, &len, 0);
-	
-	
+
+
 	if(errno == EMV_ERR_NONE)
-	{	
-		#if defined (SDK_DEBUG) 
+	{
+		#if defined (SDK_DEBUG)
 		PRINT("ATQA <-: ");
 		for(i = 0; i < len; i++)
 		{
@@ -927,11 +895,11 @@
 		}
 		PRINT("\r\n");
 		#endif
-		
+
 		if(len != 2)
 			return EMV_ERR_PROTOCOL;
 	}
-		
+
 	return errno;
 }
 
@@ -951,15 +919,15 @@
 	unsigned char errno = EMV_ERR_NONE;
 	unsigned char ANTICOLLISION[2];
 	unsigned char UID_CLn_Temp[5];
-	
+
 	ANTICOLLISION[0] = cl;
 	ANTICOLLISION[1] = 0x20;
-	
+
 
 	SETBITMASK(REG_RX_BIT_CTRL, 0x10);
 	CLEARBITMASK(REG_RX_BIT_CTRL, 0x08);
 
-	#if defined (SDK_DEBUG) 
+	#if defined (SDK_DEBUG)
 	PRINT("ANTICOLLISION ->: ");
 	for(i = 0; i < 2; i++)
 	{
@@ -967,20 +935,20 @@
 	}
 	PRINT("\r\n");
 	#endif
-	
+
 	errno = EMV_Transceive(CMD_ANTICOLLISION, ANTICOLLISION, 2, 0, UID_CLn_Temp, &len, 0);
 
-	#if defined (SDK_DEBUG) 
+	#if defined (SDK_DEBUG)
 	PRINT("\r\n");
 	#endif
 	CLEARBITMASK(REG_RX_BIT_CTRL, 0x10);
 	SETBITMASK(REG_RX_BIT_CTRL, 0x08);
-	
+
 
 	if(errno == EMV_ERR_NONE)
-	{	
-		
-		#if defined (SDK_DEBUG) 
+	{
+
+		#if defined (SDK_DEBUG)
 		PRINT("UID CLn <-: ");
 		for(i = 0; i < len; i++)
 		{
@@ -990,12 +958,10 @@
 		#endif
 		if(len != 5)
 			return EMV_ERR_PROTOCOL;
-		
-		
+
 		if(UID_CLn_Temp[4] != (((UID_CLn_Temp[0] ^ UID_CLn_Temp[1]) ^ UID_CLn_Temp[2]) ^ UID_CLn_Temp[3]))
-		{	
+		{
 			return EMV_ERR_TRANSMISSION;
-			
 		}
 		switch(cl){
 			case CL1:
@@ -1004,26 +970,26 @@
 					picc_a.UID_CLn[0][i] = UID_CLn_Temp[i];
 				}
 				break;
-				
+
 			case CL2:
 				for(i = 0; i < len; i++)
 				{
 					picc_a.UID_CLn[1][i] = UID_CLn_Temp[i];
 				}
 				break;
-				
+
 			case CL3:
 				for(i = 0; i < len; i++)
 				{
 					picc_a.UID_CLn[2][i] = UID_CLn_Temp[i];
 				}
 				break;
-				
+
 			default:
 				return EMV_ERR_PARA;
 		}
 	}
-	
+
 	return errno;
 }
 
@@ -1035,18 +1001,18 @@
   *     @arg CL1: cascase level 1
   *     @arg CL2: cascase level 2
   *     @arg CL2: cascase level 3
-  * @param  UID_complete: 
+  * @param  UID_complete:
   *			  1: UID not complete
   *			  0: UID complete
   * 	@note if not use this value, can input NULL
-  * @param  ISOIEC14443_4_compliant: 
+  * @param  ISOIEC14443_4_compliant:
   *           1: PICC compliant with ISO/IEC 14443-4
   *           0: PICC not compliant with ISO/IEC 14443-4
   * 	@note if not use this value, can input NULL
   * @retval Error code
   */
-unsigned char YC_EMV_Contactless_L1_SELECT(unsigned char cl, 
-										unsigned char *UID_complete, 
+unsigned char YC_EMV_Contactless_L1_SELECT(unsigned char cl,
+										unsigned char *UID_complete,
 										unsigned char *ISOIEC14443_4_compliant)
 {
 	unsigned char i;
@@ -1054,10 +1020,10 @@
 	unsigned char errno = EMV_ERR_NONE;
 	unsigned char SELECT[7];
 	unsigned char SAK[1];
-	
+
 	SELECT[0] = cl;
 	SELECT[1] = 0x70;
-	
+
 	switch(cl){
 		case CL1:
 			for(i = 0; i < 5; i++)
@@ -1065,27 +1031,27 @@
 				SELECT[2 + i] = picc_a.UID_CLn[0][i];
 			}
 			break;
-			
+
 		case CL2:
 			for(i = 0; i < 5; i++)
 			{
 				SELECT[2 + i] = picc_a.UID_CLn[1][i];
 			}
 			break;
-			
+
 		case CL3:
 			for(i = 0; i < 5; i++)
 			{
 				SELECT[2 + i] = picc_a.UID_CLn[2][i];
 			}
 			break;
-			
+
 		default:
 			return EMV_ERR_PARA;
 	}
-	
-	
-	#if defined (SDK_DEBUG) 
+
+
+	#if defined (SDK_DEBUG)
 	PRINT("SELECT ->: ");
 	for(i = 0; i < 7; i++)
 	{
@@ -1093,15 +1059,12 @@
 	}
 	PRINT("\r\n");
 	#endif
-	
-	
+
 	errno = EMV_Transceive(CMD_SELECT, SELECT, 7, 0, SAK, &len, 0);
 
 	if(errno == EMV_ERR_NONE)
-	{	
-		
-
-		#if defined (SDK_DEBUG) 
+	{
+		#if defined (SDK_DEBUG)
 		PRINT("SAK <-: ");
 		for(i = 0; i < len; i++)
 		{
@@ -1109,17 +1072,17 @@
 		}
 		PRINT("\r\n");
 		#endif
-		
+
 		if(len != 1)
 			return EMV_ERR_PROTOCOL;
-		
+
 		if(UID_complete)
 			*UID_complete = (SAK[0] >> 2) & 0x01;
-		
+
 		if(ISOIEC14443_4_compliant)
 			*ISOIEC14443_4_compliant = (SAK[0] >> 5) & 0x01;
 	}
-	
+
 	return errno;
 }
 
@@ -1138,16 +1101,14 @@
 	unsigned char RATS[2];
 
 	unsigned char ATS[20];
-	
-	RATS[0] = 0xE0;	
+
+	RATS[0] = 0xE0;
 
 	RATS[1] = ((0x8 & 0xf) << 4);
-	
+
 	SETBITMASK(REG_RX_CODER_CTRL, 0x20);
-	
-	
 
-	#if defined (SDK_DEBUG) 
+	#if defined (SDK_DEBUG)
 	PRINT("RATS ->: ");
 	for(i = 0; i < 2; i++)
 	{
@@ -1155,12 +1116,12 @@
 	}
 	PRINT("\r\n");
 	#endif
-	
+
 	errno = EMV_Transceive(CMD_RATS, RATS, 2, 0, ATS, &len, 0);
-	
+
 	if(errno == EMV_ERR_NONE)
-	{	
-		#if defined (SDK_DEBUG) 
+	{
+		#if defined (SDK_DEBUG)
 		PRINT("ATS <-: ");
 		for(i = 0; i < len; i++)
 		{
@@ -1168,13 +1129,13 @@
 		}
 		PRINT("\r\n");
 		#endif
-		
+
 		if(ATS[0] != len)
 			return EMV_ERR_PROTOCOL;
-		
+
 		FWI = 4;
 		FSCI = 2;
-		
+
 		if(ATS[0] != 1)
 		{
 			if((ATS[1] & 0xf) > 0xc)
@@ -1185,25 +1146,25 @@
 			{
 				FSCI = ATS[1] & 0xf;
 			}
-		
-			if(ATS[1] & 0x10) 
+
+			if(ATS[1] & 0x10)
 				TA = 1;
-			
-			if(ATS[1] & 0x20) 
+
+			if(ATS[1] & 0x20)
 				TB = 1;
-			
+
 			if(ATS[1] & 0x40)
 				TC = 1;
-			
+
 			if(TA)
 			{
-		
-				
+
+
 			}
-			
+
 			if(TB)
 			{
-				
+
 				if(((ATS[2+TA] >> 4) & 0x0f) == 15)
 				{
 					FWI = 4;
@@ -1212,43 +1173,39 @@
 				{
 					FWI = (ATS[2+TA] >> 4) & 0x0f;
 				}
-				
-				
+
 				if((ATS[2+TA] & 0x0f) == 15)
 				{
-				
+
 				}
 				else
 				{
-				
+
 					SFGI = ATS[2+TA] & 0x0f;
-					
+
 					WRITEREG(REG_T_PRESCAL_HI, (4480 >> 8) & 0x1f);
 					WRITEREG(REG_T_PRESCAL_LO, 4480 & 0xff);
 					WRITEREG(REG_T_RELOAD_HI, (EMV_Power(SFGI) >> 8) & 0xff);
 					WRITEREG(REG_T_RELOAD_LO, EMV_Power(SFGI) & 0xff);
-					
-				
+
 					SETBITMASK(REG_IRQ0_CLEAR, 0x01);
 					CLEARBITMASK(REG_IRQ0_CLEAR, 0x01);
-					
-				
+
 					WRITEREG(REG_T_CTRL, 0x01);
 					WRITEREG(REG_T_CTRL, 0x00);
-					
+
 					while((READREG(REG_IRQ0_STATE) & 0x01) == 0);
 				}
 			}
-			
+
 			if(TC)
 			{
-				
+
 			}
-			
-			
+
 		}
 	}
-		
+
 	return errno;
 }
 
@@ -1261,13 +1218,11 @@
 {
 	unsigned char i;
 	unsigned char HLTA[2];
-	
+
 	HLTA[0] = 0x50;
 	HLTA[1] = 0x00;
-	
-	
 
-	#if defined (SDK_DEBUG) 
+	#if defined (SDK_DEBUG)
 	PRINT("HLTA ->: ");
 	for(i = 0; i < 2; i++)
 	{
@@ -1275,13 +1230,13 @@
 	}
 	PRINT("\r\n");
 	#endif
-	
+
 
 	EMV_Transceive(CMD_HLTA, HLTA, 2, 0, NULL, NULL, 0);
 }
 
 /*********************************************************** Type B command ***************************************************************/
-unsigned char read_power_x(uint8_t gain) 
+unsigned char read_power_x(uint8_t gain)
 {
     unsigned char i=0;
 	set_dc_win(WIN_SIZE_64);
@@ -1295,19 +1250,19 @@
 	return i;
 }
 
-void Auto_calibration_modindex_loop(void) 
+void Auto_calibration_modindex_loop(void)
 {
 	RSSI_max = read_power_x(0x7f);
 	set_dc_win(WIN_SIZE_64);
 	WRITEREG(REG_TX_PA_GAIN, 0x7f);
 	WRITEREG(REG_ADC_CTRL, 0x08);
-	WRITEREG(REG_XTAL_CTRL4, 0x07);     
+	WRITEREG(REG_XTAL_CTRL4, 0x07);
 }
 
-void auto_digtal_modindex(void) 
+void auto_digtal_modindex(void)
 {
 	uint16_t RSSI_variable =0;
-	uint16_t RSSI_index = 0;	
+	uint16_t RSSI_index = 0;
 	if(RSSI_max > 0x60)
 	{
 		RSSI_variable = (RSSI_max * 100) / 1.26;//1.24
@@ -1327,7 +1282,7 @@
 		RSSI_index =  RSSI_variable /100;
 		RSSI_variable = RSSI_variable % 100;
 		if(RSSI_variable>=50) RSSI_index +=1;
-	
+
 		if( RSSI_Num < RSSI_index)
 		{
 			mod_index += (RSSI_index - RSSI_Num);
@@ -1336,13 +1291,13 @@
 		{
 			mod_index -= (RSSI_Num - RSSI_index);
 		}
-		
+
 		if(mod_index > 0x70) mod_index = 0x3e;
-		else if(mod_index < 0x05) mod_index = 0x10;	
+		else if(mod_index < 0x05) mod_index = 0x10;
 }
 /**
   * @brief  WUPB
-  * @param  ISOIEC14443_4_compliant: 
+  * @param  ISOIEC14443_4_compliant:
   *           1: PICC compliant with ISO/IEC 14443-4
   *           0: PICC not compliant with ISO/IEC 14443-4
   * 	@note if not use this value, can input NULL
@@ -1360,16 +1315,14 @@
 #endif
 	YC_EMV_Contactless_L1_Switch_Card_Type(TYPE_B);
 	Nfc_SysTick_Delay_Ms(3);
-	
+
 	WUPB[0] = 0x05;
-	
+
 	WUPB[1] = 0x00;
-	
+
 	WUPB[2] = 0x08;
-	
-	
 
-	#if defined (SDK_DEBUG) 
+	#if defined (SDK_DEBUG)
 	PRINT("WUPB ->: ");
 	for(i = 0; i < 3; i++)
 	{
@@ -1378,13 +1331,13 @@
 	PRINT("\r\n");
 	#endif
 
-	
+
 	errno = EMV_Transceive(CMD_WUPB, WUPB, 3, 0, ATQB, &len, 0);
-	
+
 	if(errno == EMV_ERR_NONE)
-	{	
-		
-		#if defined (SDK_DEBUG) 
+	{
+
+		#if defined (SDK_DEBUG)
 		PRINT("ATQB <-: ");
 		for(i = 0; i < len; i++)
 		{
@@ -1392,19 +1345,17 @@
 		}
 		PRINT("\r\n");
 		#endif
-	
+
 		if(ATQB[0] != 0x50)
 			return EMV_ERR_PROTOCOL;
-		
+
 		if(len < 12)
-			return EMV_ERR_PROTOCOL;	
-	
-		
+			return EMV_ERR_PROTOCOL;
+
 		for(i = 0; i < 4; i++)
 		{
 			picc_b.PUPI[i] = ATQB[1 + i];
 		}
-		
 
 		if(((ATQB[10] >> 4) & 0xf) > 0xc)
 		{
@@ -1414,14 +1365,12 @@
 		{
 			FSCI = (ATQB[10] >> 4) & 0xf;
 		}
-		
 
 		if(ISOIEC14443_4_compliant)
 			*ISOIEC14443_4_compliant = ATQB[10] & 0x1;
-		
+
 		if((ATQB[10] & 0x8) != 0)
 			return EMV_ERR_PROTOCOL;
-		
 
 		if(((ATQB[11] >> 4) & 0xf) == 15)
 		{
@@ -1440,7 +1389,7 @@
 
 /**
   * @brief  REQB
-  * @param  ISOIEC14443_4_compliant: 
+  * @param  ISOIEC14443_4_compliant:
   *           1: PICC compliant with ISO/IEC 14443-4
   *           0: PICC not compliant with ISO/IEC 14443-4
   * 	@note if not use this value, can input NULL
@@ -1453,19 +1402,19 @@
 	unsigned char errno = EMV_ERR_NONE;
 	unsigned char ATQB[13];
 	unsigned char REQB[3];
-	
+
 	Auto_calibration_modindex_loop();
 	YC_EMV_Contactless_L1_Switch_Card_Type(TYPE_B);
 	Nfc_SysTick_Delay_Ms(3);
-	
+
 	REQB[0] = 0x05;
 
 	REQB[1] = 0x00;
 
 	REQB[2] = 0x00;
-	
-	
-	#if defined (SDK_DEBUG) 
+
+
+	#if defined (SDK_DEBUG)
 	PRINT("REQB ->: ");
 	for(i = 0; i < 3; i++)
 	{
@@ -1473,14 +1422,12 @@
 	}
 	PRINT("\r\n");
 	#endif
-	
+
 	errno = EMV_Transceive(CMD_REQB, REQB, 3, 0, ATQB, &len, 0);
-	
-	if(errno == EMV_ERR_NONE)
-	{	
-		
 
-		#if defined (SDK_DEBUG) 
+	if(errno == EMV_ERR_NONE)
+	{
+		#if defined (SDK_DEBUG)
 		PRINT("ATQB <-: ");
 		for(i = 0; i < len; i++)
 		{
@@ -1488,20 +1435,18 @@
 		}
 		PRINT("\r\n");
 		#endif
-		
+
 		if(ATQB[0] != 0x50)
 			return EMV_ERR_PROTOCOL;
-		
+
 		if(len < 12)
-			return EMV_ERR_PROTOCOL;	
-	
+			return EMV_ERR_PROTOCOL;
 
 		for(i = 0; i < 4; i++)
 		{
 			picc_b.PUPI[i] = ATQB[1 + i];
 		}
-		
-		
+
 		if(((ATQB[10] >> 4) & 0xf) > 0xc)
 		{
 			FSCI = 0xc;
@@ -1510,15 +1455,13 @@
 		{
 			FSCI = (ATQB[10] >> 4) & 0xf;
 		}
-		
-	
+
 		if(ISOIEC14443_4_compliant)
 			*ISOIEC14443_4_compliant = ATQB[10] & 0x1;
-		
+
 		if((ATQB[10] & 0x8) != 0)
 			return EMV_ERR_PROTOCOL;
-		
-		
+
 		if(((ATQB[11] >> 4) & 0xf) == 15)
 		{
 			FWI = 4;
@@ -1526,11 +1469,11 @@
 		else
 		{
 			FWI = (ATQB[11] >> 4) & 0xf;
-		}	
-		
+		}
+
 	}
 	auto_digtal_modindex();
-	
+
 	return errno;
 }
 
@@ -1546,27 +1489,25 @@
 	unsigned char errno = EMV_ERR_NONE;
 	unsigned char ATTRIB[9];
 	unsigned char ATTRIB_RES[1];
-	
+
 	ATTRIB[0] = 0x1D;
-	
+
 	ATTRIB[1] = picc_b.PUPI[0];
 	ATTRIB[2] = picc_b.PUPI[1];
 	ATTRIB[3] = picc_b.PUPI[2];
 	ATTRIB[4] = picc_b.PUPI[3];
-	
+
 	ATTRIB[5] = 0x00;
-	
+
 	ATTRIB[6] = 0x8 & 0xf;
-	
+
 	ATTRIB[7] = 0x01;
-	
+
 	ATTRIB[8] = 0x00;
-	
 
 	SETBITMASK(REG_RX_CODER_CTRL, 0x20);
-	
-	
-	#if defined (SDK_DEBUG) 
+
+	#if defined (SDK_DEBUG)
 	PRINT("ATTRIB ->: ");
 	for(i = 0; i < 9; i++)
 	{
@@ -1574,14 +1515,12 @@
 	}
 	PRINT("\r\n");
 	#endif
-	
+
 	errno = EMV_Transceive(CMD_ATTRIB, ATTRIB, 9, 0, ATTRIB_RES, &len, 0);
-	
-	if(errno == EMV_ERR_NONE)
-	{	
-		
 
-		#if defined (SDK_DEBUG) 
+	if(errno == EMV_ERR_NONE)
+	{
+		#if defined (SDK_DEBUG)
 		PRINT("ATTRIB_RES <-: ");
 		for(i = 0; i < len; i++)
 		{
@@ -1589,17 +1528,14 @@
 		}
 		PRINT("\r\n");
 		#endif
-		
+
 		if(len != 1)
 			return EMV_ERR_PROTOCOL;
-		
-	
+
 		if((ATTRIB_RES[0] & 0xf) != 0x00)
 			return EMV_ERR_PROTOCOL;
-		
-
 	}
-	
+
 	return errno;
 }
 
@@ -1615,16 +1551,14 @@
 	unsigned char errno = EMV_ERR_NONE;
 	unsigned char HLTB[5];
 	unsigned char HLTB_RES[1];
-	
+
 	HLTB[0] = 0x50;
 	HLTB[1] = picc_b.PUPI[0];
 	HLTB[2] = picc_b.PUPI[1];
 	HLTB[3] = picc_b.PUPI[2];
 	HLTB[4] = picc_b.PUPI[3];
-	
-	
 
-	#if defined (SDK_DEBUG) 
+	#if defined (SDK_DEBUG)
 	PRINT("HLTB ->: ");
 	for(i = 0; i < 5; i++)
 	{
@@ -1632,12 +1566,10 @@
 	}
 	PRINT("\r\n");
 	#endif
-	
+
 	errno = EMV_Transceive(CMD_HLTB, HLTB, 5, 0, HLTB_RES, (unsigned short *)&len, 0);
-	
-	
 
-	#if defined (SDK_DEBUG) 
+	#if defined (SDK_DEBUG)
 	PRINT("HLTB_RES <-: ");
 	for(i = 0; i < len; i++)
 	{
@@ -1645,7 +1577,7 @@
 	}
 	PRINT("\r\n");
 	#endif
-	
+
 	return errno;
 }
 
@@ -1661,11 +1593,11 @@
 	return tmp;
 }
 
-uint8_t  auto_calibration_modindex (void) 
+uint8_t  auto_calibration_modindex (void)
 {
     unsigned char i, gain_index, pa_gain=0,pa_gainlater=0;
     unsigned char pwr_cur,rssi_sta,rssi_sta1,rssi_sta2;
-    
+
     gain_index = 0; // 0: 6db
 	WRITEREG(REG_RX_CTRL0, gain_i_q_table[gain_index][0]);
 	WRITEREG(REG_RX_CTRL1, gain_i_q_table[gain_index][1]);
@@ -1678,7 +1610,7 @@
 	rssi_sta1 = rssi_sta*ratio_0/100;
 	rssi_sta2 = rssi_sta*ratio_1_4/100;
 
-    for (i=0; i<255; i++) 
+    for (i=0; i<255; i++)
 	{
         pwr_cur = read_power_index();
 		if(rssi_sta <= 0x30 )
@@ -1696,18 +1628,17 @@
 				else if(pa_gain>=0x2a && pa_gain <0x5a)
 				{
 					pa_gain = pa_gain-2;
-					
+
 				}
 				else
 				{
 					pa_gain--;
-				
 				}
 				WRITEREG(REG_TX_PA_GAIN, pa_gain);
 			}
-			
+
 			else
-				break;		
+				break;
 		}
 		else
 		{
@@ -1725,16 +1656,13 @@
 				else if(pa_gain>=0x2a && pa_gain <0x5a)
 				{
 					pa_gain = pa_gain-2;
-					
 				}
 				else
 				{
 					pa_gain--;
-				
 				}
 				WRITEREG(REG_TX_PA_GAIN, pa_gain);
 			}
-			
 			else
 				break;
 		}
@@ -1751,15 +1679,15 @@
 	uint8_t gain_index=0,errno=0;
 	Poll_Type.Type_A = 0;
 	Poll_Type.Type_B = 0;
-	
+
 	while(1)
-	{	
-		 
+	{
+
 		if(!Poll_Type.Type_A)
 		{
 			Tp();
 			#ifdef EMV_DEBUG
-			
+
 				/*????????????2?3?*/
 				WRITEREG(REG_RSSI_CALC_CTRL, 0x02);
 				WRITEREG(REG_RSSI_CALC_CTRL, 0x03);
@@ -1770,8 +1698,7 @@
 				PRINT("\nDCREG_AVG_QA = 0x%2x\n", READREG(REG_AVG_Q));
 				WRITEREG(REG_RSSI_CALC_CTRL, 0x00);
 				WRITEREG(REG_RSSI_CALC_CTRL, 0x02);
-						
-				
+
 
 				WRITEREG(REG_RX_CTRL0, RX_GAIN_6DB);
 				WRITEREG(REG_RX_CTRL1, gain_i_q_table[0][1]);
@@ -1788,23 +1715,23 @@
 				WRITEREG(REG_XTAL_CTRL4, 0x06);
 				WRITEREG(REG_RSSI_CALC_CTRL, 0x00);
 				WRITEREG(REG_RSSI_CALC_CTRL, 0x02);
-				
+
 				WRITEREG(REG_RX_CTRL0, RX_GAIN_18DB);
 				WRITEREG(REG_RX_CTRL1, gain_i_q_table[2][1]);
 				WRITEREG(REG_RX_CTRL2, gain_i_q_table[2][2]);
-			
+
 			#endif
 			errno  = YC_EMV_Contactless_L1_WUPA();
-			
+
 			if(errno == EOT_SHOUT)
 			{
 				PRINT("WUPA return shout");
 				return EOT_SHOUT;
 			}
-				
+
 			if(errno  != EMV_ERR_TIME_OUT)
 			{
-				
+
 				#ifdef EMV_DEBUG
 					/*?????*/
 					PRINT("\nRSSIREG_137 = 0x%2x\n", READREG(137));
@@ -1814,9 +1741,7 @@
 					PRINT("\nRSSIREG_AVG_Q = 0x%2x\n", READREG(REG_AVG_Q));
 					WRITEREG(REG_RSSI_CALC_CTRL, 0x00);
 					WRITEREG(REG_RSSI_CALC_CTRL, 0x02);
-				
 
-				
 					WRITEREG(REG_RSSI_CALC_CTRL, 0x02);
 					WRITEREG(REG_RSSI_CALC_CTRL, 0x03);
 					Nfc_SysTick_Delay_Ms(10);
@@ -1827,9 +1752,7 @@
 					PRINT("\nDCREG_AVG_Q = 0x%2x\n", READREG(REG_AVG_Q));
 					WRITEREG(REG_RSSI_CALC_CTRL, 0x00);
 					WRITEREG(REG_RSSI_CALC_CTRL, 0x02);
-						
-				
-				
+
 					WRITEREG(REG_RX_CTRL0, RX_GAIN_6DB);
 					WRITEREG(REG_RX_CTRL1, gain_i_q_table[0][1]);
 					WRITEREG(REG_RX_CTRL2, gain_i_q_table[0][2]);
@@ -1842,25 +1765,24 @@
 					PRINT("\nVPPDCREG_AVG_POW = 0x%2x\n", READREG(REG_AVG_POW));
 					PRINT("\nVPPDCREG_AVG_I = 0x%2x\n", READREG(REG_AVG_I));
 					PRINT("\nVPPDCREG_AVG_Q = 0x%2x\n", READREG(REG_AVG_Q));
-					WRITEREG(REG_XTAL_CTRL4, 0x06);	
+					WRITEREG(REG_XTAL_CTRL4, 0x06);
 					WRITEREG(REG_RSSI_CALC_CTRL, 0x00);
-					WRITEREG(REG_RSSI_CALC_CTRL, 0x02);		
-				
-				
+					WRITEREG(REG_RSSI_CALC_CTRL, 0x02);
+
 					WRITEREG(REG_RX_CTRL0, RX_GAIN_18DB);
 					WRITEREG(REG_RX_CTRL1, gain_i_q_table[2][1]);
 					WRITEREG(REG_RX_CTRL2, gain_i_q_table[2][2]);
-				
+
 				#endif
-		
+
 				#ifdef RXGAIN_CORRECTION
 					YC_EMV_Contactless_L1_dyn_adj();
-				#endif 
+				#endif
 				Poll_Type.Type_A = 1;
-				
+
 				YC_EMV_Contactless_L1_HLTA();
 			}
-			
+
 			if(!Poll_Type.Type_B)
 			{
 				Tp();
@@ -1873,7 +1795,7 @@
 				if( errno != EMV_ERR_TIME_OUT)
 				{
 					Poll_Type.Type_B = 1;
-				} 
+				}
 			}
 			else
 			{
@@ -1884,11 +1806,11 @@
 		{
 			break;
 		}
-		
+
 		if(!(Poll_Type.Type_A || Poll_Type.Type_B))
 			return EMV_ERR_NO_CARD;
 	}
-	
+
 	return EMV_ERR_NONE;
 }
 
@@ -1906,9 +1828,9 @@
 	uint8_t ISOIEC14443_4_compliant;
 	uint8_t retr;
 	uint8_t errno = EMV_ERR_NONE;
-	
+
 	Tp();
-	
+
 	retr = 0;
 
 
@@ -1919,65 +1841,65 @@
 		{
 				return EOT_SHOUT;
 		}
-		if(errno == EMV_ERR_NONE)			
-			break;				
-		
+		if(errno == EMV_ERR_NONE)
+			break;
+
 		AntiColExceptionProcess();
 	}
-	
+
 	do{
 		++i;
-		
+
 		if(i == 1)
 			cl = CL1;
 		else if(i == 2)
 			cl = CL2;
 		else
 			cl = CL3;
-		
+
 		retr = 0;
 		while(1)
 		{
-				
+
 			errno = YC_EMV_Contactless_L1_ANTICOLLISION(cl);
 			if(errno == EOT_SHOUT)
 			{
 					return EOT_SHOUT;
 			}
-			if(errno == EMV_ERR_NONE)			
+			if(errno == EMV_ERR_NONE)
 				break;
-			
+
 			AntiColExceptionProcess();
 		}
-		
+
 		retr = 0;
 		while(1)
 		{
-		
+
 			errno = YC_EMV_Contactless_L1_SELECT(cl, &UID_complete, &ISOIEC14443_4_compliant);
 			if(errno == EOT_SHOUT)
 			{
 					return EOT_SHOUT;
 			}
-			if(errno == EMV_ERR_NONE)			
+			if(errno == EMV_ERR_NONE)
 				break;
-			
+
 			GeneralExceptionProcess();
-		}			
-			
+		}
+
 		if(!UID_complete)
 		{
 			if(!ISOIEC14443_4_compliant)
 				return EMV_ERR_PROTOCOL;
-			
+
 			break;
 		}
-		
+
 		if(i == 3)
 			return EMV_ERR_PROTOCOL;
-	
-	}while(i < 3);
-	
+
+	} while(i < 3);
+
 	return errno;
 }
 
@@ -1992,12 +1914,12 @@
 	uint8_t retr = 0;
 	uint8_t ISOIEC14443_4_compliant=0;
 	uint8_t errno = EMV_ERR_NONE;
-	
+
 	Tp();
-	 
+
 	while(1)
 	{
-		
+
 		errno = YC_EMV_Contactless_L1_WUPB(&ISOIEC14443_4_compliant);
 		if(errno == EOT_SHOUT)
 		{
@@ -2007,13 +1929,13 @@
 		{
 			if(!ISOIEC14443_4_compliant)
 				return EMV_ERR_PROTOCOL;
-			
+
 			break;
-		}		
-		
+		}
+
 		AntiColExceptionProcess();
 	}
-	
+
 	return errno;
 }
 
@@ -2026,7 +1948,7 @@
 static uint8_t EMV_Collision_General_Detect(void)
 {
 	uint8_t errno = EMV_ERR_NONE;
-	
+
 	if(Poll_Type.Type_A && Poll_Type.Type_B)
 	{
 		return EMV_ERR_COLLISION;
@@ -2044,12 +1966,12 @@
 }
 
 /**
-  * @brief  PICC activation     
+  * @brief  PICC activation
   * @param  None
   * @retval error code
   */
 static uint8_t EMV_Active(void)
-{ 
+{
 	uint8_t retr = 0;
 	uint8_t errno = EMV_ERR_NONE;
 	printf_flag = 0;
@@ -2058,32 +1980,32 @@
 	{
 		return EOT_SHOUT;
 	}
-	
+
 	if(errno != EMV_ERR_NONE)
 		return EMV_ERR_NO_CARD;
-	
+
 	printf_flag = 1;
 	errno = EMV_Collision_General_Detect();
 	if(errno == EOT_SHOUT)
 	{
 		return EOT_SHOUT;
 	}
-				
+
 	if(errno == EMV_ERR_NONE)
 	{
 		if(Poll_Type.Type_A)
 		{
 			while(1)
 			{
-					
+
 				errno = YC_EMV_Contactless_L1_RATS();
 				if(errno == EOT_SHOUT)
 				{
 					return EOT_SHOUT;
 				}
-				if(errno == EMV_ERR_NONE)			
+				if(errno == EMV_ERR_NONE)
 					break;
-			
+
 				GeneralExceptionProcess();
 			}
 		}
@@ -2091,20 +2013,19 @@
 		{
 			while(1)
 			{
-					
+
 				errno = YC_EMV_Contactless_L1_ATTRIB();
 				if(errno == EOT_SHOUT)
 				{
 					return EOT_SHOUT;
 				}
-				if(errno == EMV_ERR_NONE)			
+				if(errno == EMV_ERR_NONE)
 					break;
-				
 				GeneralExceptionProcess();
 			}
 		}
 	}
-	
+
 	return errno;
 }
 
@@ -2114,55 +2035,55 @@
   * @retval error code
   */
 static uint8_t EMV_PICC_Remove(void)
-{	
+{
 	if(Poll_Type.Type_A)
 	{
 		YC_EMV_Contactless_L1_Switch_Card_Type(TYPE_A);
 
 		Tp();
-		
+
 		while(YC_EMV_Contactless_L1_WUPA() != EMV_ERR_TIME_OUT)
 		{
 removea:
 			YC_EMV_Contactless_L1_HLTA();
-			
+
 			Tp();
 		}
-		
+
 		Tretransmission();
-		
+
 		if(YC_EMV_Contactless_L1_WUPA() != EMV_ERR_TIME_OUT)
 			goto removea;
-		
+
 		Tretransmission();
-		
+
 		if(YC_EMV_Contactless_L1_WUPA() != EMV_ERR_TIME_OUT)
 			goto removea;
-		
+
 		return EMV_ERR_TIME_OUT;
 	}
 	else if(Poll_Type.Type_B)
 	{
 		YC_EMV_Contactless_L1_Switch_Card_Type(TYPE_B);
-		
+
 		Tp();
-		
+
 		while(YC_EMV_Contactless_L1_WUPB(NULL) != EMV_ERR_TIME_OUT)
 		{
 removeb:
 			Tp();
 		}
-		
+
 		Tretransmission();
-		
+
 		if(YC_EMV_Contactless_L1_WUPB(NULL) != EMV_ERR_TIME_OUT)
 			goto removeb;
-		
+
 		Tretransmission();
-		
+
 		if(YC_EMV_Contactless_L1_WUPB(NULL) != EMV_ERR_TIME_OUT)
 			goto removeb;
-		
+
 		return EMV_ERR_TIME_OUT;
 	}
 	else
@@ -2177,14 +2098,12 @@
 	uint8_t errno = EMV_ERR_NONE;
 	uint8_t res[256];
 	uint16_t reslen;
-	
+
 	const uint8_t APDU_PPSE[] = {0x00,0xA4,0x04,0x00,0x0E,
 							0x32,0x50,0x41,0x59,0x2E,0x53,0x59,0x53,0x2E,0x44,0x44,0x46,0x30,0x31,
 							0x00};
-							
-	
 
-	#if defined (SDK_DEBUG) 
+	#if defined (SDK_DEBUG)
 	PRINT("C-APDU ->: ");
 	for(i = 0; i < sizeof(APDU_PPSE); i++)
 	{
@@ -2193,13 +2112,11 @@
 	PRINT("\n");
 	#endif
 	errno = YC_EMV_Contactless_L1_APDU_Transceive(APDU_PPSE, sizeof(APDU_PPSE), res, &reslen);
-	
 
 	if(errno != EMV_ERR_NONE)
 		return errno;
-	
-	
-	#if defined (SDK_DEBUG) 
+
+	#if defined (SDK_DEBUG)
 	PRINT("R-APDU <-: ");
 	for(i = 0; i < reslen; i++)
 	{
@@ -2207,21 +2124,20 @@
 	}
 	PRINT("\n");
 	#endif
-							
+
 	while(1)
 	{
 		if(res[1] == 0x70)
 		{
 			return EOT_IND_REMOVE;
 		}
-			
+
 		if(res[1] == 0x72)
 		{
 			return EOT_IND_POWER_OFF;
 		}
-		
-		
-		#if defined (SDK_DEBUG) 
+
+		#if defined (SDK_DEBUG)
 		PRINT("C-APDU ->: ");
 		for(i = 0; i < reslen - 2; i++)
 		{
@@ -2229,14 +2145,13 @@
 		}
 		PRINT("\n");
 		#endif
-		
+
 		errno = YC_EMV_Contactless_L1_APDU_Transceive(res, reslen - 2, res, &reslen);
 
 		if(errno != EMV_ERR_NONE)
 			return errno;
-		
-		
-		#if defined (SDK_DEBUG) 
+
+		#if defined (SDK_DEBUG)
 		PRINT("R-APDU <-: ");
 		for(i = 0; i < reslen; i++)
 		{
@@ -2268,36 +2183,36 @@
   * @retval None
   */
 void EMV_Main_Loop(void)
-{	
+{
 	uint8_t Resart= 0;
 	uint8_t errno = EMV_ERR_NONE;
 	YC_EMV_Contactless_L1_Init();
 	while(1)
-	{	
-		
+	{
+
 		YC_EMV_Contactless_L1_Rf_Switch(ON);
 		///MyPrintf("###########################################################################\r\n");
 		if(Resart == 1)
 		{
 			YC_EMV_HwReset();
-			
-			Nfc_SysTick_Delay_Ms(500);
-			
+
+			Nfc_SysTick_Delay_Ms(50);
+
 			WRITEREG(REG_LDO_ADC_CLKGEN_LPO_CTRL,0xA8);
 			WRITEREG(REG_XTAL_CTRL4,0x24);
 			WRITEREG(REG_LDO_CORE_LPO_CLK_CTRL,0x5b);
 			YC_EMV_Contactless_L1_Init();
 			Resart = 0;
-		
+
 		}
-		
+
 		errno = EMV_Active();
 		if(errno == EOT_SHOUT)
 		{
 			Resart = 1;
 
-		}			
-		if(errno == EMV_ERR_NONE)		
+		}
+		if(errno == EMV_ERR_NONE)
 		{
 			errno = EMV_LoopBack();
 			if(errno == EOT_SHOUT)
@@ -2307,16 +2222,16 @@
 			if(errno == EOT_IND_REMOVE)
 			{
 				EMV_Field_Reset();
-		
+
 				EMV_PICC_Remove();
 			}
-			else 
+			else
 			{
 				EMV_Field_Power_Off();
 			}
 		}
 		else
-		{		
+		{
 			Tresetdelay();
 
 			EMV_Field_Reset();
@@ -2391,12 +2306,12 @@
 		force_dc_calc();
 		dc = get_dc_i();
 		cali = get_cali_i();
-		if(cnt == 0xff) 
+		if(cnt == 0xff)
 			return CALI_FAIL;
-		
+
 		if((dc <= DC_ACCEPT_RANGE) || (dc >= (256 - DC_ACCEPT_RANGE)))
 			return CALI_OK;
-		
+
 		if((dc & 0x80) == 0)
 		{
 			if((cali & 0x80) == 0)
@@ -2404,25 +2319,23 @@
 				if(cali == 0)
 				{
 					cali = 0x80;
-				} 
+				}
 				else
 				{
 					cali = cali - 1;
 				}
-				 
 			}
-			else 
+			else
 			{
 				if(cali == 0xff)
 				{
 					cali = cali;
-				} 
+				}
 				else
 				{
 					cali = cali + 1;
 				}
 			}
-			
 		}
 		else
 		{
@@ -2431,25 +2344,25 @@
 				if(cali == 0x7f)
 				{
 					cali = 0x7f;
-				} 
-				else 
+				}
+				else
 				{
 					cali = cali + 1;
 				}
-			} 
+			}
 			else
 			{
-				if(cali == 0x80) 
+				if(cali == 0x80)
 				{
 					cali = 0x00;
-				} 
-				else 
+				}
+				else
 				{
 					cali = cali - 1;
 				}
 			}
-		}	
-		
+		}
+
 		set_cali_i(cali);
 
 	}
@@ -2457,71 +2370,71 @@
 uint8_t dc_cali_q(void)
 {
 	uint8_t cali=0, dc=0, cnt=0;
-	while(1) 
+	while(1)
 	{
 		cnt ++;
 		force_dc_calc();
 		dc = get_dc_q();
-		
+
 		cali = get_cali_q();
 
-		if(cnt == 0xff) 
+		if(cnt == 0xff)
 			return CALI_FAIL;
-  
+
 		if((dc <= DC_ACCEPT_RANGE) || (dc >= (256 - DC_ACCEPT_RANGE)))
 			return CALI_OK;
-		if((dc & 0x80) == 0) 
+		if((dc & 0x80) == 0)
 		{
 			if((cali & 0x80) == 0)
 			{
-				if(cali == 0) 
+				if(cali == 0)
 				{
 					cali = 0x80;
-				} 
-				else 
+				}
+				else
 				{
 					cali = cali - 1;
                 }
-            } 
-			else 
+            }
+			else
 			{
-                if(cali == 0xff) 
+                if(cali == 0xff)
 				{
                     cali = cali;
-                } 
-				else 
+                }
+				else
 				{
                     cali = cali + 1;
                 }
             }
         }
-		else 
+		else
 		{
             if((cali & 0x80) == 0)
 			{
                 if(cali == 0x7f)
 				{
                     cali = 0x7f;
-                } 
-				else 
+                }
+				else
 				{
                     cali = cali + 1;
                 }
-            } 
-			else 
+            }
+			else
 			{
-                if(cali == 0x80) 
+                if(cali == 0x80)
 				{
                     cali = 0x00;
-                } 
-				else 
+                }
+				else
 				{
                     cali = cali - 1;
                 }
             }
         }
 		set_cali_q(cali);
-	
+
 	}
 
 }
@@ -2536,25 +2449,22 @@
 	WRITEREG(REG_TOP_CTRL, 0x13);
 	WRITEREG(REG_RX_CTRL0, 0x02);
 	set_rssi_calc_en(1);
-	
+
 	WRITEREG(REG_ADC_CTRL, 0x08);
-	
-	
+
 	WRITEREG(REG_RX_CTRL3, RX_CTRL3|0x80);
 	WRITEREG(REG_RX_CTRL5, RX_CTRL5);
-	
-	
+
 	for(i = 0; i < 9; i++)
 	{
 		set_rx_gain(gain_i_q_table[i][0]);
-		
+
 		if(CALI_OK == dc_cali_i())
 		{
 			gain_i_q_table[i][1] = get_cali_i();
 		}
 		else
 		{
-			
 			#ifdef EMV_DEBUG
 			PRINT("%d db i calibration fail\n", 6*(i+1));
 			#endif
@@ -2562,8 +2472,6 @@
 		if(CALI_OK == dc_cali_q())
 		{
 			gain_i_q_table[i][2] = get_cali_q();
-
-		
 		}
 		else
 		{
@@ -2571,7 +2479,6 @@
 			PRINT("%d db q calibration fail\n", 6*(i+1));
 			#endif
 		}
-	
 	}
 	for(i = 0; i < 9; i++)
 	{
@@ -2589,16 +2496,16 @@
 	uint8_t len = 0;
 	uint8_t recvbuf[FSD];
 	uint16_t index = 0;
-	
+
 	PRINT("\n**************************************************\n");
 	PRINT("\nrecv erro\n");
-	
+
 	PRINT("\nREG_IRQ0_STATE = 0x%2x\n", READREG(REG_IRQ0_STATE));
-	
+
 	if (status == EMV_ERR_TIME_OUT)
 	{
 		PRINT("\nstatus = EMV_ERR_TIME_OUT\n");
-		
+
 		len = READREG(REG_FIFO_LENGTH);
 		if (len >= 32)
 		{
@@ -2614,14 +2521,14 @@
 							PRINT("\nrecv data overflow\n");
 						}
 					}
-					
+
 					/* Clear hi_alert_irq */
 					SETBITMASK(REG_IRQ0_CLEAR, 0x40);
 					CLEARBITMASK(REG_IRQ0_CLEAR, 0x40);
 				}
 			}
 		}
-		
+
 		if(index < FSD)
 		{
 			/* Receiving has completed */
@@ -2666,8 +2573,7 @@
 			PRINT("\nrecvnum = 0; =\n");
 		}
 	}
-	
-	
+
 	PRINT("\nREG_ERROR_FLAG = 0x%2x\n", READREG(REG_ERROR_FLAG));
 	PRINT("\nREG_PROTOCOL_ERROR = 0x%2x\n", READREG(REG_PROTOCOL_ERROR));
 	PRINT("\nREG_RX_COLL = 0x%2x\n", READREG(REG_RX_COLL));
@@ -2742,7 +2648,7 @@
         if (i <= 4) // max(4) - 1
         {
             i++;
-			
+
             WRITEREG(REG_RX_CTRL0, gain_i_q_table[i][0]);
             WRITEREG(REG_RX_CTRL1, gain_i_q_table[i][1]);
             WRITEREG(REG_RX_CTRL2, gain_i_q_table[i][2]);
@@ -2764,7 +2670,7 @@
 {
 	uint8_t val = 0;
 	uint8_t i = 0;
-	
+
 	val = RxGain | RfAtt;
 	WRITEREG(REG_RX_CTRL0, val);
 	switch (RxGain)
@@ -2809,10 +2715,3 @@
 	WRITEREG(REG_MIN_LEVEL_LOW, MinLevel & 0xFF);
 	WRITEREG(REG_MIN_LEVEL_HIGH, MinLevel >> 8);
 }
-
-
-
-
-
-
-
Index: yc_nfc/yc_nfc_common.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_nfc/yc_nfc_common.c	(revision 602)
+++ /YC3121_SDK/fw/sdk/yc_nfc/yc_nfc_common.c	(working copy)
@@ -20,8 +20,8 @@
 	/* Configure serial ports RX and TX for IO. */
 	GPIO_Config(GPIOA, GPIO_Pin_1, UART0_TXD);
 	GPIO_Config(GPIOA, GPIO_Pin_0, UART0_RXD);
-	
-	UART_InitStruct.BaudRate = uartBaud;			
+
+	UART_InitStruct.BaudRate = uartBaud;
 	UART_InitStruct.DataBits = Databits_8b;
 	UART_InitStruct.StopBits = StopBits_1;
 	UART_InitStruct.Parity = Parity_None;
@@ -34,11 +34,11 @@
 {
 	SPI_InitTypeDef SPI_InitStruct;
 	SPI_InitStruct.Mode = SPI_Mode_Master;
-	SPI_InitStruct.BaudRatePrescaler = SPI_BaudRatePrescaler_64;
+	SPI_InitStruct.BaudRatePrescaler = SPI_BaudRatePrescaler_4;
 	SPI_InitStruct.CPHA = SPI_CPHA_First_Edge;
 	SPI_InitStruct.CPOL = SPI_CPOL_Low;
-	SPI_InitStruct.RW_Delay = 30;
-	
+	SPI_InitStruct.RW_Delay = 1;
+
 	GPIO_Config(GPIOB, GPIO_Pin_2, SPID0_MISO);
 	GPIO_Config(GPIOB, GPIO_Pin_1, SPID0_MOSI);
 	GPIO_Config(GPIOB, GPIO_Pin_6, SPID0_NCS);
@@ -55,11 +55,11 @@
 #define RST_Disable()	GPIO_Config(GPIOA, GPIO_Pin_4, OUTPUT_HIGH);
 /* Hardware reset */
 void YC_EMV_HwReset(void)
-{	
+{
     RST_Enable();
     Nfc_SysTick_Delay_Ms(5);
-    RST_Disable();  
-    Nfc_SysTick_Delay_Ms(200);
+    RST_Disable();
+    Nfc_SysTick_Delay_Ms(20);
 }
 
 void WRITEREG(uint8_t addr, uint8_t data)
@@ -103,12 +103,3 @@
 	}
 	return reg;
 }
-
-
-
-
-
-
-
-
-

