| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- #ifndef __FM175XX_H__
- #define __FM175XX_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- /******************************************************************************/
- /* Include files */
- /******************************************************************************/
- #include "user_nfc.h"
- #include <stdint.h>
- #include <stdbool.h>
- #define BIT7 0x80
- #define BIT6 0x40
- #define BIT5 0x20
- #define BIT4 0x10
- #define BIT3 0x08
- #define BIT2 0x04
- #define BIT1 0x02
- #define BIT0 0x01
-
- #define Anticollision 0x02
- /* 寄存器地址宏定义 */
- #define CommandReg 0x01
- #define ComIEnReg 0x02
- #define DivIEnReg 0x03
- #define ComIrqReg 0x04
- #define DivIrqReg 0x05
- #define ErrorReg 0x06
- #define Status1Reg 0x07
- #define Status2Reg 0x08
- #define FIFODataReg 0x09
- #define FIFOLevelReg 0x0A
- #define WaterLevelReg 0x0B
- #define ControlReg 0x0C
- #define BitFramingReg 0x0D
- #define CollReg 0x0E
- #define ModeReg 0x11
- #define TxModeReg 0x12
- #define RxModeReg 0x13
- #define TxControlReg 0x14
- #define TxAutoReg 0x15
- #define TxSelReg 0x16
- #define RxSelReg 0x17
- #define RxThresholdReg 0x18
- #define DemodReg 0x19
- #define MfTxReg 0x1C
- #define MfRxReg 0x1D
- #define SerialSpeedReg 0x1F
- #define CRCMSBReg 0x21
- #define CRCLSBReg 0x22
- #define ModWidthReg 0x24
- #define GsNOffReg 0x23
- #define TxBitPhaseReg 0x25
- #define RFCfgReg 0x26
- #define GsNOnReg 0x27
- #define CWGsPReg 0x28
- #define ModGsPReg 0x29
- #define TModeReg 0x2A
- #define TPrescalerReg 0x2B
- #define TReloadMSBReg 0x2C
- #define TReloadLSBReg 0x2D
- #define TCounterValMSBReg 0x2E
- #define TCounterValLSBReg 0x2F
- #define TestSel1Reg 0x31
- #define TestSel2Reg 0x32
- #define TestPinEnReg 0x33
- #define TestPinValueReg 0x34
- #define TestBusReg 0x35
- #define AutoTestReg 0x36
- #define VersionReg 0x37
- #define AnalogTestReg 0x38
- #define TestDAC1Reg 0x39
- #define TestDAC2Reg 0x3A
- #define TestADCReg 0x3B
- /* 指令集宏定义 */
- #define Idle 0x00 /* 无动作,取消当前指令执行 */
- #define Mem 0x01 /* 配置FM17550为FeliCa、MIFARE和NFCIP-1通讯模式 */
- #define RandomID 0x02 /* 产生一个10字节随机数 */
- #define CalcCRC 0x03 /* 激活CRC协处理器 */
- #define Transmit 0x04 /* 发射FIFO缓冲器中的数据 */
- #define NoCmdChange 0x07 /* 指令不改变,可以用来在不影响指令的情况下修改CommandReg寄存器,比如PowerDown位 */
- #define Receive 0x08 /* 激活接收器电路 */
- #define Transceive 0x0C /* 发射FIFO缓冲器中的数据到天线,并在发射后自动激活接收器 */
- #define MFAuthent 0x0E /* 作为读写器模式执行MIFARE标准安全认证 密钥验证 */
- #define SoftReset 0x0F /* 复位FM17550 */
- //发射参数设置
- #define MODWIDTH_106 0x26 //默认设置为 0x26 ,0x26 = 106K,0x13 = 212K, 0x09 = 424K ,0x04 = 848K
- #define MODWIDTH_212 0x13
- #define MODWIDTH_424 0x09
- #define MODWIDTH_848 0x04
- //接收参数配置
- //TYPE A
- #define RXGAIN_A 4 //设置范围0~7
- #define GSNON_A 15 //设置范围0~15
- #define GSP_A 31 //设置范围0~63
- #define COLLLEVEL_A 4 //设置范围0~7
- #define MINLEVEL_A 5 //设置范围0~15
- //#define RXWAIT 4 //设置范围0~63
- //#define UARTSEL 2 //默认设置为2 设置范围0~3 0:固定低电平 1:TIN包络信号 2:内部接收信号 3:TIN调制信号
- //TYPE B
- #define RXGAIN_B 6 //设置范围0~7
- #define GSNON_B 15 //设置范围0~15
- #define MODGSNON_B 6 //设置范围0~15
- #define GSP_B 31 //设置范围0~63
- #define MODGSP_B 10 //设置范围0~63
- #define MINLEVEL_B 4 //设置范围0~15
- #define Int_idle 0
- #define Int_LPCD 1
- #define Int_Read_Card 2
- #define Int_Card_Func 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 JREG_EXT_REG_ENTRANCE 0x0F //ext register entrance
- //============================================================================
- #define JBIT_EXT_REG_WR_ADDR 0X40 //wrire address cycle
- #define JBIT_EXT_REG_RD_ADDR 0X80 //read address cycle
- #define JBIT_EXT_REG_WR_DATA 0XC0 //write data cycle
- #define JBIT_EXT_REG_RD_DATA 0X00 //read data cycle
- //============================================================================
- #define JREG_LVD_CTRL 0x1D //Low Votage Detect register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_CTRL1 0x01 //Lpcd Ctrl register1
- //============================================================================
- #define JBIT_LPCD_EN 0x01 //enble LPCD
- #define JBIT_LPCD_RSTN 0X02 //lpcd reset
- #define JBIT_LPCD_CALIBRATE_EN 0x04 //into lpcd calibra mode
- #define JBIT_LPCD_SENSE_1 0x08 //Compare times 1 or 3
- #define JBIT_LPCD_IE 0x10 //Enable LPCD IE
- #define JBIT_BIT_CTRL_SET 0x20 //Lpcd register Bit ctrl set bit
- #define JBIT_BIT_CTRL_CLR 0x00 //Lpcd register Bit ctrl clear bit
- //============================================================================
- //============================================================================
- #define JREG_LPCD_CTRL2 0x02 //Lpcd Ctrl register2
- //============================================================================
- //============================================================================
- #define JREG_LPCD_CTRL3 0x03 //Lpcd Ctrl register3
- //============================================================================
- //============================================================================
- //============================================================================
- #define JREG_LPCD_CTRL4 0x04 //Lpcd Ctrl register4
- //============================================================================
- //============================================================================
- //============================================================================
- #define JREG_LPCD_BIAS_CURRENT 0x05 //Lpcd bias current register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_ADC_REFERECE 0x06 //Lpcd adc reference register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_T1CFG 0x07 //T1Cfg[3:0] register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_T2CFG 0x08 //T2Cfg[4:0] register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_T3CFG 0x09 //T2Cfg[4:0] register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_VMIDBD_CFG 0x0A //VmidBdCfg[4:0] register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_AUTO_WUP_CFG 0x0B //Auto_Wup_Cfg register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_ADC_RESULT_L 0x0C //ADCResult[5:0] Register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_ADC_RESULT_H 0x0D //ADCResult[7:6] Register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_THRESHOLD_MIN_L 0x0E //LpcdThreshold_L[5:0] Register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_THRESHOLD_MIN_H 0x0F //LpcdThreshold_L[7:6] Register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_THRESHOLD_MAX_L 0x10 //LpcdThreshold_H[5:0] Register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_THRESHOLD_MAX_H 0x11 //LpcdThreshold_H[7:6] Register
- //============================================================================
- //============================================================================
- #define JREG_LPCD_IRQ 0x12 //LpcdStatus Register
- //============================================================================
- #define JBIT_CARD_IN_IRQ 0x01 //irq of card in
- #define JBIT_LPCD23_IRQ 0x02 //irq of LPCD 23 end
- #define JBIT_CALIBRATE_IRQ 0x04 //irq of calib end
- #define JBIT_LP10K_TESTOK_IRQ 0x08 //irq of lp osc 10K ok
- #define JBIT_AUTO_WUP_IRQ 0x10 //irq of Auto wake up
- //============================================================================
- //============================================================================
- #define JREG_LPCD_RFT1 0x13 //Aux1 select Register
- //============================================================================
- //#define BFL_JBIT_AUX1_CLOSE 0x00 //close aux1 out
- //#define BFL_JBIT_AUX1_VDEM_LPCD 0x01 //vdem of lpcd
- //#define BFL_JBIT_AUX1_VP_LPCD 0x02 //voltage of charecap
- //============================================================================
- //============================================================================
- #define JREG_LPCD_RFT2 0x14 //Aux2 select Register
- //============================================================================
- //#define BFL_JBIT_AUX2_CLOSE 0x00 //close aux1 out
- //#define BFL_JBIT_AUX2_VDEM_LPCD 0x01 //vdem of lpcd
- //#define BFL_JBIT_AUX2_VP_LPCD 0x02 //voltage of charecap
- //============================================================================
- //============================================================================
- #define JREG_LPCD_RFT3 0x15 //LPCD test1 Register
- //============================================================================
- //#define BFL_JBIT_LP_OSC10K_EN 0x01 //enable lp osc10k
- //#define BFL_JBIT_LP_OSC_CALIBRA_EN 0x02 //enable lp osc10k calibra mode
- //#define BFL_JBIT_LP_CURR_TEST 0x04 //enable lp t1 current test
- //#define BFL_JBIT_LPCD_TEST2_LPCD_OUT 0x08 //lpcd_test2[3]:LPCD_OUT
- //============================================================================
- //============================================================================
- #define JREG_LPCD_RFT4 0x16 //LPCD test2 Register
- //============================================================================
- //#define BFL_JBIT_T1_OUT_EN 0x01 //D5:T1_OUT
- //#define BFL_JBIT_OSCCLK_OUT_EN 0x02 //D4:OSC_CLK_OUT
- //#define BFL_JBIT_OSCEN_OUT_EN 0x04 //D3:OSC_EN
- //#define BFL_JBIT_LP_CLK_LPCD_OUT_EN 0x08 //D2:LP_CLK or LPCD_OUT
- //#define BFL_JBIT_T3_OUT_EN 0x10 //D1:T3_OUT
- //============================================================================
- //============================================================================
- //#define BFL_JREG_LP_CLK_CNT1 0x17 //lp_clk_cnt[5:0] Register
- //============================================================================
- //============================================================================
- //#define BFL_JREG_LP_CLK_CNT2 0x18 //lp_clk_cnt[7:6] Register
- //============================================================================
- //============================================================================
- //#define BFL_JREG_VERSIONREG2 0x19 //VersionReg2[1:0] Register
- //============================================================================
- //============================================================================
- //#define BFL_JREG_IRQ_BAK 0x1A //Irq bak Register
- //============================================================================
- //#define BFL_JBIT_IRQ_INV_BAK 0x01 //Irq Inv backup
- //#define BFL_JBIT_IRQ_PUSHPULL_BAK 0x02 //Irq pushpull backup
- //============================================================================
- //============================================================================
- #define JREG_LPCD_RFT5 0x1B //LPCD TEST3 Register
- //============================================================================
- //#define BFL_JBIT_LPCD_TESTEN 0x01 //lPCD test mode
- //#define BFL_JBIT_AWUP_TSEL 0x02 //Auto wakeup test mode
- //#define BFL_JBIT_RNG_MODE_SEL 0x04 //RNG mode sel
- //#define BFL_JBIT_USE_RET 0x08 //use retention mode
- //============================================================================
- //============================================================================
- #define JREG_LPCD_MISC 0x1C //LPCD Misc Register
- //============================================================================
- #define BFL_JBIT_CALIBRATE_VMID_EN 0x01 //lPCD test mode
- #define BFL_JBIT_AMP_EN_SEL 0x04 //LPCD amp en select
- //============================================================================
- bool FM175XX_Test(void);
- void FM175XX_Initial(void);
- uint8_t SetReg(uint8_t reg_add,uint8_t ucRegVal);
- uint8_t GetReg(uint8_t reg_add,uint8_t *regData);
- uint8_t Read_Reg(uint8_t reg_addr);
- bool Read_Reg_All(uint8_t *reg_value);
- bool Write_Reg(uint8_t reg_addr, uint8_t reg_value);
- void Read_FIFO(uint8_t length, uint8_t *fifo_data);
- void Write_FIFO(uint8_t length, uint8_t *fifo_data);
- bool Clear_FIFO(void);
- bool Set_BitMask(uint8_t reg_addr, uint8_t mask);
- bool Clear_BitMask(uint8_t reg_addr, uint8_t mask);
- uint8_t Read_Ext_Reg(uint8_t reg_add);
- bool Write_Ext_Reg(uint8_t reg_add, uint8_t reg_value);
- bool ModifyReg_Ext(uint8_t ExtRegAddr, uint8_t mask, uint8_t set);
- bool Get_FIFODataLenth(uint8_t *FIFOLen,uint8_t *LastBitsLen,uint32_t *pRecBitsLen);
- bool Set_Rf(uint8_t mode);
- bool Pcd_Comm(uint8_t Command,
- uint8_t *pInData,
- uint8_t InLenByte,
- uint8_t *pOutData,
- uint32_t *pOutLenBit);
- bool Pcd_SetTimer(uint32_t delaytime);
- bool Pcd_ConfigISOType(uint8_t type);
- void FM175X_SoftReset(void);
- bool FM175X_SoftPowerdown(void);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __FM175XX_H__ */
|