完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们在我们的项目中使用 CLRC663,加载协议功能工作正常,但问题是 REQA 没有响应。我们遵循了 AN12657 文档中给出的所有说明,也尝试了没有库示例,但它们都不起作用。我们观察到 REQA 已成功传输,但之后我们既没有接收到 Rx 中断、数据、错误。请在下面找到 REQA 代码。有人可以帮助我们解决这个问题,或者让我们知道我们是否遗漏了代码中的任何内容。
uint8_t Load_Protocol_14443() { uint8_t errorRegister1; write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_IDLE); write_reg(CLRC663_REG_FIFOCONTROL, 0xB0); write_reg(CLRC663_REG_FIFODATA, 0x00); write_reg(CLRC663_REG_FIFODATA, 0x00); write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_LOADPROTOCOL); errorRegister1 = read_reg(CLRC663_REG_ERROR); /* 检查是否发生错误*/ if (errorRegister1 != 0) { write_reg(CLRC663_REG_DRVMOD, 0x86); 返回假; } 返回真; } uint8_t send_REQA() { write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_IDLE); write_reg(CLRC663_REG_FIFOCONTROL, 0xB0); write_reg(CLRC663_REG_TXDATANUM, 7 | CLRC663_TXDATANUM_DATAEN); write_reg(CLRC663_REG_TXCRCPRESET, CLRC663_RECOM_14443A_CRC | CLRC663_CRC_OFF); write_reg(CLRC663_REG_RXCRCCON,CLRC663_RECOM_14443A_CRC | CLRC663_CRC_OFF); write_reg(CLRC663_REG_RXBITCTRL, 0); write_reg(CLRC663_REG_IRQ0, 0x7F); write_reg(CLRC663_REG_IRQ1, 0x7F); write_reg(CLRC663_REG_IRQ0EN, CLRC663_IRQ0EN_RX_IRQEN | CLRC663_IRQ0EN_ERR_IRQEN);// 全局 int write_reg(CLRC663_REG_IRQ1EN, CLRC663_IRQ1EN_tiMER0_IRQEN); // 只触发 irq1 的定时器 uint8_t timer_for_timeout = 0; CLRC663_timer_set_control(timer_for_timeout, CLRC663_TCONTROL_CLK_211KHZ | CLRC663_TCONTROL_START_TX_END); // 帧等待时间:FWT = (256 x 16/fc) x 2 FWI // FWI 默认为四...所以这意味着最多等待 5 毫秒 CLRC663_timer_set_reload(timer_for_timeout, 1000); // 5 usec 的 1000 个滴答是 5 毫秒。 CLRC663_timer_set_value(timer_for_timeout, 1000); write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_IDLE); write_reg(CLRC663_REG_FIFOCONTROL, 1<<4); write_reg(CLRC663_REG_FIFODATA, 0x26); write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_TRANSCEIVE); // write_reg(CLRC663_REG_IRQ1, 0x7F); uint8_t irq1_value = 0; while (!(irq1_value & (1 << timer_for_timeout))) { irq1_value =read_reg(CLRC663_REG_IRQ1); if (irq1_value & 0x40) { // ERR_IRQ 或 RX_IRQ 中断;// 停止轮询 irq1 并退出超时循环。 } } write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_IDLE); // 如果没有 Rx IRQ,或者有某种错误,返回 0 uint8_t irq0 = read_reg(CLRC663_REG_IRQ0); // if ((!(irq0 & 0x04)) || (irq0 & 0x02)) // { // 返回 0; // } uint8_t rx_len = read_reg(CLRC663_REG_FIFOLENGTH); uint8_t res,寄存器 1,寄存器 2; __no_operation(); if (rx_len == 2) { // ATQA 应该用 2 个字节来回答。 Register1 = read_reg(CLRC663_REG_FIFODATA); Register2 = read_reg(CLRC663_REG_FIFODATA); res = 寄存器 1; res = 寄存器 2; 返回资源; } 返回 0; } void CLRC663_timer_set_control(uint8_t timer, uint8_t value) { write_reg(CLRC663_REG_T0CONTROL + (5 * timer), value); } void CLRC663_timer_set_reload(uint8_t timer, uint16_t value) { write_reg(CLRC663_REG_T0RELOADHI + (5 * timer), value >> 8); write_reg(CLRC663_REG_T0RELOADLO + (5 * timer), value & 0xFF); } void CLRC663_timer_set_value(uint8_t timer, uint16_t value) { write_reg(CLRC663_REG_T0COUNTERVALHI + (5 * timer), value >> 8); write_reg(CLRC663_REG_T0COUNTERVALLO + (5 * timer), value & 0xFF); } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1906个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36358 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4395 浏览 0 评论
6050 浏览 1 评论
6763 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4212 浏览 0 评论
619浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
614浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
605浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
694浏览 2评论
796浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 00:58 , Processed in 1.023428 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号