Si523:13.56MHz超低功耗非接触式读卡芯片

需积分: 10 3 下载量 28 浏览量 更新于2024-07-09 收藏 3.82MB PDF 举报
"Si523是一款专为13.56MHz非接触式读卡应用设计的高性能、低功耗芯片。它支持多种标准,包括ISO/IEC14443A/B和MIFARE协议,适用于构建低成本、低功耗的非接触式读卡器。该芯片具备自动载波侦测功能(ACD),能够自动检测13.56MHz的外部射频场和射频卡,且在ACD过程中无需微控制器介入。此外,还具有OSC起振失败监测功能,确保系统稳定运行。 Si523集成了高度优化的模拟电路,用于解调和译码响应,并配备了带缓冲的输出驱动器,简化了与天线的连接,只需要最少的外围元件。这款芯片的操作距离可达50mm,提供SPI、I2C和UART三种主机接口,速度分别为10Mbits/s、400kBd(快速模式)和3400kBd(高速模式)。 此外,Si523内置64字节的FIFO,支持灵活的中断模式和可编程定时器,以及CRC协处理器,增强了数据处理能力。芯片电源电压范围是2.5V至3.6V,待机时的硬掉电和软掉电电流极低,分别为1.1uA和1.1uA(3.3V),而自动寻卡电流为2.9uA(500ms)。其应用领域广泛,包括但不限于超低功耗的非接触式阅读器、ISO/IEC14443A/MIFARE读卡器以及ISO/IEC14443B读卡器。 封装图显示了Si523的管脚布局,包括电源、地线、复位、输入/输出信号以及辅助引脚。管脚定义详细列出了每个引脚的功能,例如SDI、NRSTPD、MFIN、MFOUT等,方便用户进行硬件设计。此外,芯片还包括一个结构框图,展示了天线接口、模拟接口、主机接口、FIFO、缓冲区、非接触式UART、寄存器组、SPI、I2C总线等组件的内部架构,帮助开发者理解芯片的工作原理。 Si523是一款全面集成的13.56MHz读卡芯片,以其高效能、低功耗和灵活的接口选项,为非接触式RFID应用提供了理想的解决方案。"

class DyCAConv(nn.Module): def __init__(self, inp, oup, kernel_size, stride, reduction=32): super(DyCAConv, self).__init__() self.pool_h = nn.AdaptiveAvgPool2d((None, 1)) self.pool_w = nn.AdaptiveAvgPool2d((1, None)) self.pool_h1 = nn.MaxPool2d((None, 1)) self.pool_w1 = nn.MaxPool2d((1, None)) mip = max(8, inp // reduction) self.conv1 = nn.Conv2d(inp, mip, kernel_size=1, stride=1, padding=0) self.bn1 = nn.BatchNorm2d(mip) self.act = h_swish() self.conv_h = nn.Conv2d(mip, inp, kernel_size=1, stride=1, padding=0) self.conv_w = nn.Conv2d(mip, inp, kernel_size=1, stride=1, padding=0) self.conv = nn.Sequential(nn.Conv2d(inp, oup, kernel_size, padding=kernel_size // 2, stride=stride), nn.BatchNorm2d(oup), nn.SiLU()) self.dynamic_weight_fc = nn.Sequential( nn.Linear(inp, 2), nn.Softmax(dim=1) ) def forward(self, x): identity = x n, c, h, w = x.size() x_h = self.pool_h(x) x_w = self.pool_w(x).permute(0, 1, 3, 2) x_h1 = self.pool_h1(x) x_w1 = self.pool_w1(x).permute(0, 1, 3, 2) y = torch.cat([x_h, x_w, x_h1, x_w1], dim=2) y = self.conv1(y) y = self.bn1(y) y = self.act(y) x_h, x_w, _, _ = torch.split(y, [h, w, h, w], dim=2) x_w = x_w.permute(0, 1, 3, 2) x_w1 = x_w1.permute(0, 1, 3, 2) a_h = self.conv_h(x_h).sigmoid() a_w = self.conv_w(x_w).sigmoid() a_w1 = self.conv_w(x_w1).sigmoid() # Compute dynamic weights x_avg_pool = nn.AdaptiveAvgPool2d(1)(x) x_avg_pool = x_avg_pool.view(x.size(0), -1) dynamic_weights = self.dynamic_weight_fc(x_avg_pool) out = identity * (dynamic_weights[:, 0].view(-1, 1, 1, 1) * a_w + dynamic_weights[:, 1].view(-1, 1, 1, 1) * a_h + dynamic_weights[:, 1].view(-1, 1, 1, 1) * a_w1) return self.conv(out)在里面修改一下,换成这个y = torch.cat([x_h+x_h1, x_w+x_w1], dim=2)

2023-06-01 上传