问题标签 [eeprom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1353 浏览

java - USB通讯口

我想将数据从 PIC18F4550 发送到 EEPROM。PIC 位于我想使用(USB 端口通信)将数据从我的 PC 发送到 PIC 的开发套件上。*不是串行*

我正在寻找有关如何使用 C 或 Java 语言执行此操作的良好代码示例或教程

0 投票
2 回答
283 浏览

c - C18:未使用的库函数会占用 EPROM 中的空间吗?

图书馆.h

主程序

我有一个库文件,其中包含很多函数定义。由于未使用的库函数,生成的机器代码大小会增加吗?或者编译器会通过忽略那些未使用的函数来优化代码吗?

IDE:MPLAB 8.43
编译器:MCC18 3.34
PIC:18F2550

0 投票
1 回答
3094 浏览

assembly - PIC16F84——eeprom读写

我的任务是为 PIC16F84 微控制器编写 eeprom 读/写子程序。我写了这样的代码:

这样对吗?我在使用 EEProm_Read 时遇到问题。似乎它不能正常工作。

0 投票
1 回答
1607 浏览

pic18 - 带有 PIC18F4550 的 EEPROM 24lc256

我正在做一个大学项目,我需要将 pic18f4550 与 i2c EEPROM 连接起来。

我使用 proteus 模拟器实现了以下电路。我的连接中的以下内容

在此处输入图像描述

当我在现实中实现接口时,当 PIC 从 eeprom 读取时,我遇到了一个问题。它已暂停,因此我无法查看读取操作是否正确执行。

可能是什么问题呢?

0 投票
2 回答
8318 浏览

arduino - 是否有用于微控制器 EEPROM 磨损均衡的通用算法?

我正在开发一个 Arduino 库,它将最大限度地延长 AVR 的 EEPROM 的寿命。它需要您要存储的变量数量并完成其余的工作。这是我的尝试,并非在所有情况下都有效。

背景资料

Atmel 表示,每个存储单元的额定写入/擦除周期为 100,000 次。它们还提供了应用说明,描述了如何执行磨损均衡。这是应用笔记的摘要。

通过在两个内存地址上交替写入,我们可以将擦除/写入次数增加到 200,000 次。三个内存地址为您提供 300,000 次擦除/写入周期,依此类推。为了使这个过程自动化,使用状态缓冲区来跟踪下一次写入的位置。状态缓冲区也必须与参数缓冲区的长度相同,因为也必须对其执行磨损均衡。由于我们无法存储下一次写入的索引,我们在状态缓冲区中增加相应的索引。

这是一个例子。

为了确定下一次写入应该发生的位置,我们查看元素之间的差异。如果前一个元素 + 1 不等于下一个元素,那么这就是下一次写入发生的地方。例如:

上面的这些例子展示了如何为一个变量延长 EEPROM 的寿命。对于多个变量,想象将 EEPROM 分割成具有相同数据结构但缓冲区更小的多个段。

问题

我有上面描述的工作代码。我的问题是当缓冲区长度 >= 256 时算法不起作用。这就是发生的情况

问题

我该如何解决上述问题?有没有更好的方法来跟踪下一个元素应该写在哪里?

0 投票
2 回答
1487 浏览

android - 寻找 PN544 NFC 芯片的用户手册或 eeprom 指令集

我想在我的 Galaxy Nexus 手机上使用mfoc 库,但 NFC Android API 中缺少一些方法。所以我想实现这些方法并构建我自己的 ROM。

使用 NFC pn512 芯片,可以使用 ManualRCVReg 寄存器的 ParityDisable 位关闭自动奇偶校验生成。用户手册给出了所有的PN12 寄存器地址。

使用 pn533,还可以通过 eeprom 配置芯片,用户手册中描述了一些地址/数据。

在android源码libnfc-xp的代码中看到pn544芯片在device/samsung/tuna/nfc/nfc_hw.c中也配置了一些eeprom设置,但是找不到所有的PN544寄存器地址和一些nfc_hw.c 中的注释不清楚或缺失)。

那么,您认为可以通过其 eeprom 设置来配置 PN544 芯片的奇偶校验处理吗?你知道我需要写的地址/数据吗?

最好有一份可能的 eeprom 设置列表或 PN544 芯片的用户手册。

0 投票
1 回答
958 浏览

linux - Linux USB 内核驱动程序如何与 USB Wi-Fi 卡内的 EEPROM 交互?

我正在尝试了解与使用 RTL8187 Wi-Fi 芯片的 Wi-Fi 卡相关的 Linux 驱动程序源代码。具体来说,我试图在 USB 协议层跟踪 Linux 与 ALFA AWUS036H USB Wi-Fi 卡的交互。到目前为止,我一直在使用两种方法来执行此操作,1)printk()语句放入源代码并2)查看usbmon. 使用这两种方法,我可以跟踪低级别发生的事情,但不了解它为什么会在高级别发生。

在这一点上,我特别关注的是,看起来 rtl8187 驱动程序所做的第一件事就是在 USB 设备内部的 EEPROM 上进行大量的读/写操作,而我对EEPROM 如何在 USB 设备内部(或外部)工作。举个例子,我在一行代码周围放置了打印语句/usr/src/linux/drivers/net/wireless/rtl818x/rtl8187/dev.c,我相信它是从 USB Wi-Fi 卡读取 MAC 地址:

现在我原以为这样的事情可能只生成一些 USB 控制消息,但printk()我在子例程中的其他语句eeprom_83cx6_multiread()建议这个简单的操作生成大约 60 个或更多 USB 控制消息读取,并且可能同样多的 USB 控制写道。

是否有任何高级教程可以解释 USB 设备内的 USB 和 EEPROM 之间的交互是什么?我不知道从哪里开始寻找更多信息。我一直认为 EEPROM 之类的东西会从 USB 编程器中抽象出来,使用简单的 USB 消息,然后设备会将这些消息转换为 EEPROM 中必须发生的任何事情。进一步深入研究 USB 驱动程序代码,虽然看起来有高脉冲和低脉冲发送到 EEPROM,以及操作之间的特定(尽管非描述性)时序延迟,这似乎意味着不存在这样的抽象。我真的不知道从哪里开始了解所有元素如何协同工作。

0 投票
0 回答
2140 浏览

c - 在 PIC32MX 上通过 IC2 写入 EEPROM 失败

图片:PIC32MX564F128L

EEPROM:24AA16

我已经用 C 语言为 PIC 编写了一些代码,以通过 I2C 读取和写入外部 EEPROM。当我使用这些方法写入单个字节,然后再次读取它以进行验证时,它可以工作。如果我更改写入位置,它会起作用,所以我认为寻址是有效的,并且我读回的字节与写入匹配,所以这似乎也有效。到目前为止一切都很好!

然后我将代码扩展为使用相同的例程 100 次,在相邻位置写入不同的字节。IE 在位置 x 到 x + 99 中写入值 0 到 99。然后我继续读回 100 个位置以验证写入,这就是出错的地方。

从各种测试来看,write 方法在同一位置执行所有写入操作,因为 read 方法从第一个位置获取最后一个值 (99),而从其他位置获取任何值 (0xFF)!

示波器显示时钟良好,数据线切换,这是我预期的单次写入工作。

PIC 上的调试显示这些方法使用的地址是连续的,所以我有点困惑为什么所有的写入都在同一个位置执行!我可以更改此位置,但它始终只使用所有值的第一个字节。

有谁知道可能出了什么问题?

我的代码在这里,入口点是testEeprom():

0 投票
1 回答
1049 浏览

c++ - 特定地址块中的 I²C EEPROM 读取错误

我有一个 Arduino 的I²C总线连接到 Microchip PICDEM 2板的 I²C 总线,以对其 32K 字节 EEPROM 进行编程。下面的代码存在读取问题。具体来说,我已经用 16 位计数模式写入了整个 EEPROM,并验证了所有数据都是正确的。

以下代码由 PC 上的 Java 程序驱动。我正在读写 16 字节的页面。我已经监控了来自 PC 的地址,它们都是正确的。返回的数据都是正确的,除了 256 字节的地址块0x0AXX。读取的数据看起来像来自 的行0x9F0。我无法弄清楚为什么会发生错误。

PC接收到的数据都是正确的,除了以下块:

这个块之前和之后的一切都很好,但是 0x0A00 - 0x0AFF 重复了第 0x09F0 行的数据。以下代码用于编写和验证所有计数模式:

这几天我一直在为此苦苦挣扎。任何见解将不胜感激。

0 投票
1 回答
2462 浏览

c - 我如何用 avrdude 擦除除 EEPROM 之外的所有内容?

我有2个主要文件。一个写入 EEPROM,另一个从 EEPROM 读取。我想做以下事情:

  • Flash main.hex(写入 EEPROM 的那个)
  • 擦除除 EEPROM 内容外的所有内容
  • Flash main.hex(从 EEPROM 读取的那个)

我在 Windows 7 上将AT90CAN128JTAG ICE mkII
一起使用。 我通过以下方式执行 avrdude: