CAT1024_1025_en.pdf:集成I2C接口的复位芯片技术规格

需积分: 9 2 下载量 16 浏览量 更新于2024-08-01 收藏 140KB PDF 举报
"CAT1024_1025_en.pdf 是一份关于 CAT1024 和 CAT1025 存储芯片的说明文件,这些芯片具备 I2C 串行接口和手动复位功能,常用于小型系统的开发。" CAT1024 和 CAT1025 是微控制器系统中使用的集成存储和监控解决方案。这两个芯片集成了一个 2K 位的串行 EEPROM 内存和一个系统电源监控器,包括欠压保护功能,全部采用低功耗的 CMOS 技术。它们的主要特点和功能如下: 1. **精准电源电压监测**:支持 5V、3.3V 和 3V 系统,并提供五种阈值电压选项,确保在不同电源条件下稳定工作。 2. **主动高或低复位**:在 VCC 为 1V 时仍能保证有效的复位信号,增强了系统稳定性。 3. **400kHz I2C 总线**:高速的 I2C 接口使得与微控制器通信更高效,减少了对系统总线资源的需求。 4. **3.0V 至 5.5V 工作电压**:广泛的电压范围适应了各种供电环境。 5. **低功耗 CMOS 技术**:降低了芯片运行时的功耗,适合电池供电或对能耗敏感的设备。 6. **16 字节页写缓冲区**:提高了数据写入效率,允许快速连续写入大量数据。 7. **内置防意外写保护**:CAT1025 带有 WP(Write Protect)引脚,防止未经授权的数据修改。 8. **1,000,000 次编程/擦除循环**:确保芯片具有长久的使用寿命。 9. **手动复位输入**:用户可以通过外部信号进行手动复位操作,增加了系统的灵活性。 10. **100 年数据保留**:在非活动状态下,数据可以安全地保存长达 100 年,确保了数据的长期可靠性。 11. **封装形式多样**:提供 8 引脚 DIP、SOIC、TSSOP、MSOP 和 TDFN(3x3mm 尺寸)封装,适用于不同的电路板设计。 12. **工业级和扩展温度范围**:可以在恶劣的环境中稳定工作,满足不同应用场景的需求。 PIN 配置方面,包括 VCC、NC(No Connect,未连接)、SCL(I2C 时钟线)、SDA(I2C 数据线)、RESET(复位引脚)、NC、VSS(接地)等关键引脚。这些引脚的布局和使用方法是理解和应用 CAT1024/CAT1025 芯片的基础。 总结来说,CAT1024 和 CAT1025 是高效能、低功耗的微控制器系统辅助芯片,结合了内存存储和电源监控两大功能,特别适合于需要可靠复位和小体积存储的应用场合。通过 I2C 接口,可以轻松地与微控制器进行通信,实现配置信息的读写以及系统状态的监控。同时,它们的多种保护机制和封装选择使其成为各种嵌入式系统设计的理想选择。

帮我给每一行代码添加注释 class DeepKalmanFilter(nn.Module): def __init__(self, config): super(DeepKalmanFilter, self).__init__() self.emitter = Emitter(config.z_dim, config.emit_hidden_dim, config.obs_dim) self.transition = Transition(config.z_dim, config.trans_hidden_dim) self.posterior = Posterior( config.z_dim, config.post_hidden_dim, config.obs_dim ) self.z_q_0 = nn.Parameter(torch.zeros(config.z_dim)) self.emit_log_sigma = nn.Parameter(config.emit_log_sigma * torch.ones(config.obs_dim)) self.config = config @staticmethod def reparametrization(mu, sig): return mu + torch.randn_like(sig) * sig @staticmethod def kl_div(mu0, sig0, mu1, sig1): return -0.5 * torch.sum(1 - 2 * sig1.log() + 2 * sig0.log() - (mu1 - mu0).pow(2) / sig1.pow(2) - (sig0 / sig1).pow(2)) def loss(self, obs): time_step = obs.size(1) batch_size = obs.size(0) overshoot_len = self.config.overshooting kl = torch.Tensor([0]).to(self.config.device) reconstruction = torch.Tensor([0]).to(self.config.device) emit_sig = self.emit_log_sigma.exp() for s in range(self.config.sampling_num): z_q_t = self.z_q_0.expand((batch_size, self.config.z_dim)) for t in range(time_step): trans_loc, trans_sig = self.transition(z_q_t) post_loc, post_sig = self.posterior(trans_loc, trans_sig, obs[:, t]) z_q_t = self.reparametrization(post_loc, post_sig) emit_loc = self.emitter(z_q_t) reconstruction += ((emit_loc - obs[:, t]).pow(2).sum(dim=0) / 2 / emit_sig + self.emit_log_sigma * batch_size / 2).sum() if t > 0: over_loc, over_sig = self.transition(overshooting[:overshoot_len - 1]) over_loc = torch.cat([trans_loc.unsqueeze(0), over_loc], dim=0) over_sig = torch.cat([trans_sig.unsqueeze(0), over_sig], dim=0) else: over_loc = trans_loc.unsqueeze(0) over_sig = trans_sig.unsqueeze(0) overshooting = self.reparametrization(over_loc, over_sig) kl = kl + self.kl_div(post_loc.expand_as(over_loc), post_sig.expand_as(over_sig), over_loc, over_sig) / min(t + 1, self.config.overshooting) reconstruction = reconstruction / self.config.sampling_num kl = kl / self.config.sampling_num return reconstruction, kl

2023-02-22 上传
2023-06-08 上传