
移植官方ST25RU3993 EVEL的代码,初始化到最后一步始终显示PLL not locked,不知道问题出在哪![]() 初始化代码: //读取版本 st25RU3993SingleRead(ST25RU3993_REG_DEVICEVERSION,&myBuf[0]); if(myBuf[0] != 0x61) { return 1; } //晶体振荡器稳定 st25RU3993SingleRead(ST25RU3993_REG_AGCANDSTATUS,&myBuf[0]); if((myBuf[0]&0x01) != 0x01) { return 2; } //检查SPI连接 myBuf[0] = 0x55; myBuf[1] = 0xAA; myBuf[2] = 0xFF; myBuf[3] = 0x00; st25RU3993ContinuousWrite(ST25RU3993_REG_MODULATORCONTROL1,myBuf,4); memset(myBuf, 0x33, sizeof(myBuf)); st25RU3993ContinuousRead(ST25RU3993_REG_MODULATORCONTROL1,myBuf,4); if((myBuf[0]!=0x55) || (myBuf[1]!=0xAA) || (myBuf[2]!=0xFF) || (myBuf[3]!=0x00)) { return 3; // data bus interface pins not working ----ok } // //检查外部中断是否正常 Reset_En_Pin(); st25RU3993CLearIrqReg(); st25RU3993SingleWrite(ST25RU3993_REG_IRQMASK1, 0x20);//FIFO中断使能 // // set up 48Byte transmission, but we supply less, therefore a fifo underflow IRQ is produced st25RU3993SingleWrite(ST25RU3993_REG_TXLENGTHUP, 0x03); st25RU3993SingleCommand(ST25RU3993_CMD_TRANSMCRC); st25RU3993ContinuousWrite(ST25RU3993_REG_FIFO,myBuf,4); st25RU3993ContinuousWrite(ST25RU3993_REG_FIFO,myBuf,4); st25RU3993ContinuousWrite(ST25RU3993_REG_FIFO,myBuf,4); st25RU3993ContinuousWrite(ST25RU3993_REG_FIFO,myBuf,4); st25RU3993ContinuousWrite(ST25RU3993_REG_FIFO,myBuf,4); st25RU3993ContinuousWrite(ST25RU3993_REG_FIFO,myBuf,4); st25RU3993WaitForResponse(RESP_FIFO); if(!(st25RU3993GetResponse() & RESP_FIFO)) { return 4; } st25RU3993ClrResponse(); Reset_En_Pin(); st25RU3993SingleCommand(ST25RU3993_CMD_HOP_TO_MAIN_FREQUENCY); // Device Status Control Register 0x00 // stby | - | agc_on | rec_on | rf_on // 0 |0 0 0 0| 0 | 0 | 0 = 0x00 st25RU3993SingleWrite(ST25RU3993_REG_STATUSCTRL, 0x03); // Protocol Selection Register 0x01 // RX_crc_n | dir_mode | AutoACK<1-0> | - | prot<2-0> // 1 | 0 | 0 0 | 0 | 0 0 0 = 0x80 st25RU3993SingleWrite(ST25RU3993_REG_PROTOCOLCTRL, 0x80); // Tx Options Register 0x02 // - | TxOne<1-0> | - | Tari<2-0> // 0 0| 1 1 | 0 | 0 0 0 = 0x30 st25RU3993SingleWrite(ST25RU3993_REG_TXOPTIONS, 0x30); // Rx Options Register 0x03 --> Set by Gen2 Configuration // TRcal High Register 0x04 --> Set by Gen2 Configuration // TRcal Low Register 0x05 --> Set by Gen2 Configuration /**********************************************************/ // Modulation Ctrl2 0x14 // del_len | pr_ask | ook_ask // 1 1 1 0 1 1 | 1 | 1 = 0xEF st25RU3993SingleWrite(ST25RU3993_REG_MODULATORCONTROL2, 0xEF); // Modulation Ctrl4 0x16 // 1stTari // 1 0 0 0 1 0 0 1 = 0x89 st25RU3993SingleWrite(ST25RU3993_REG_MODULATORCONTROL4, 0x89); // PLL Main Register 0x17 // - | RefFreq<2-0> | mB_val<9-6> // 0 | 1 1 0 | 0 0 1 1 = 0x63 st25RU3993SingleWrite(ST25RU3993_REG_PLLMAIN1, 0x63); // PLL Main Register 0x18 // mB_val<5-0> | mA_val<9-8> // 1 1 1 0 1 1 | 0 1 = 0xED st25RU3993SingleWrite(ST25RU3993_REG_PLLMAIN2, 0xED); // PLL Main Register 0x19 // mA_val<7-0> // 0 0 0 1 1 0 1 0 = 0x1A st25RU3993SingleWrite(ST25RU3993_REG_PLLMAIN3, 0x1A); st25RU3993SingleWrite(ST25RU3993_REG_MEASUREMENTCONTROL, 0x00); // Miscellaneous Register 1 0x0D // hs_output | hs_oad | miso_pd2 | miso_pd1 | open_dr | s_mix | - // 0 | 0 | 1 | 1 | 0 | 0 |0 0 = 0x30 st25RU3993SingleWrite(ST25RU3993_REG_MISC1, 0x30); st25RU3993SingleWrite(ST25RU3993_REG_MISC2, 0x40); // REGULATOR and PA Bias Register 0x0B // pa_bias<1-0> | rvs_rf<2-1> | rvs<2-0> // 0 0 | 0 1 1 | 0 1 1 = 0x1B st25RU3993SingleWrite(ST25RU3993_REG_REGULATORCONTROL, 0x1B); // RF Output and LO Control Register 0x0C // eTX<7-5> | - | eTx<3-0> // 1 0 0 | 0 | 0 0 1 0 = 0x82 st25RU3993SingleWrite(ST25RU3993_REG_RFOUTPUTCONTROL, 0x82); // Modulator Control Register 1 0x13 // - | main_mod | aux_mod | - | e_lpf | ask_rate<1-0> // 0 | 0 | 1 |0 0| 0 | 0 0 = 0x20 myBuf[0] = 0x20; // Modulator Control Register 2 0x14 // ook_ask | pr_ask | del_len<5-0> // 1 | 1 | 0 1 1 1 0 1 = 0xDD myBuf[1] = 0xDD; // Modulator Control Register 3 0x15 // trfon<1-0> | lin_mode | TX_lev<4-0> // 0 0 | 0 | 0 0 0 1 0 = 0x02 for USA/EU // 0 0 | 0 | 0 0 1 1 1 = 0x07 for JAPAN myBuf[2] = 0x02;//0x07 st25RU3993ContinuousWrite(ST25RU3993_REG_MODULATORCONTROL1, myBuf, 3); // CP Control Register 0x12 // LF_R3<7-6> | LF_C3<5-3> | cp<2-0> // 0 0 | 1 1 0 | 1 0 1 = 0x25 // 30kOhm, 160pF, 1500uA st25RU3993SingleWrite(ST25RU3993_REG_CPCONTROL, 0x35); // Enable Interrupt Register Register 1 0x35 中断控制寄存器1 // e_irq_TX | e_irq_RX | e_irq_fifo | e_irq_err | e_irq_header | - | e_irq_AutoAck | e_irq_noresp // 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 = 0x7F st25RU3993SingleWrite(ST25RU3993_REG_IRQMASK1, 0x7F); // Enable Interrupt Register Register 2 0x36 中断控制寄存器2 // e_irq_ana | e_irq_cmd | - | e_irq_err1 | e_irq_err2 | e_irq_err3 // 0 | 0 |0 0 0| 1 | 1 | 1 = 0x07 st25RU3993SingleWrite(ST25RU3993_REG_IRQMASK2, 0x07); // RX Length Register 1 0x3A // RX_crc_n2 | fifo_dir_irq2 | rep_irg2 | auto_errcode_RXl | RXl11-RXl8 // 0 | 0 | 0 | 1 | 0 0 0 0 = 0x10 st25RU3993SingleWrite(ST25RU3993_REG_RXLENGTHUP, 0x10); st25RU3993SetBaseFrequency(925); st25RU3993SetSensitivity(3); // Now that the chip is configured with correct ref frequency the PLL // should lock st25RU3993SingleRead(ST25RU3993_REG_AGCANDSTATUS,&myBuf[0]); if(!(myBuf[0] & 0x01)) { return 4; // Crystal not stable } else { } if(!(myBuf[0] & 0x02)) { return 5; // PLL not locked } else { } return 0; |
X-NUCLEO-NFC08A1开发板和st253916b芯片功耗信息
如何通过串口调试助手通过USB口读取电子标签信息和状态
使用ST25R3911B已经获取到Mifare Classic 1k的UID,但是始终获取不了卡片的内部数据,有相关的历程吗?
关于NFC系列产品的疑惑
需要ST25R3911B的14443A的“rfal_iso14443a.h”和“rfal_iso14443a.c”文件
ST25如何切换天线进行测试
关于ST公司的NFC芯片ST25R3911b使用讨论
NFC Tag APP端iOS源码缺少文件
ST25DV64与HR11 NFC模块之间如何实现数据传输(主要是16进制数据)
ST25R3916
3993比较复杂,建议先联系ST代理商注册项目,通过代理商找ST市场部同事安排支持。
3993比较复杂,建议先联系ST代理商注册项目,通过代理商找ST市场部同事安排支持。