标签: eeprom

检查char数组是不是垃圾?(有效的字符)

我有一个char数组,其中从一些EEPROM设备读取数据,在硬件中,如果没有数据,它的值可以是任何(垃圾).

我想检查他的值是不是垃圾并且有一些有效的字符.

                       for(int k=address;k<address+MEM_MAX_LEN;k++)
                       {
                           charBuf[k-address]= EEPROM.read(k);
                           if(charBuf[k-address]=='*')
                         {
                              charBuf[k-address]='\0';
                              break;
                         }
Run Code Online (Sandbox Code Playgroud)

使用时strlen>1我没有得到理想的回应(显然).

我怎么检查呢?

c eeprom

3
推荐指数
1
解决办法
1614
查看次数

STM32F0 I2C HAL 将结构体保存到 I2C EEPROM

我需要保存一个结构:

struct {
  uint16_t value;
  uint16_t flag;
} status;
Run Code Online (Sandbox Code Playgroud)

使用外部 I2C EEPROM

HAL_StatusTypeDef HAL_I2C_Mem_Write (I2C_HandleTypeDef * hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t * pData, uint16_t Size, uint32_t Timeout)
Run Code Online (Sandbox Code Playgroud)

功能

你能建议我一个正确的方法来做到这一点吗?

c microcontroller struct stm32 eeprom

3
推荐指数
1
解决办法
2386
查看次数

具有相同地址的i2c从设备

我正在开发一个STM32 F107上的嵌入式系统,它通过i2c与2个从属设备进行通信:一个rfid阅读器rfid手册和一个eeprom模块eeprom手册.这两个器件具有相同的从地址A0(用于写操作)和A1(用于读操作).如果只使用一个设备,它可以正常工作.但如果我同时使用它们,我就会遇到问题.首先我从rfid阅读器读取卡片ID,然后我在eeprom中写入它(直到这里一切都好),当我尝试从rfid阅读器再次读取时,我得到错误的输入数据,即使是我换了卡.发生了什么以及我可以做些什么来解决这个问题?

embedded rfid stm32 i2c eeprom

2
推荐指数
1
解决办法
2077
查看次数

无法将大缓冲区写入EEPROM

我正在尝试将M95M02-DR 256KB EEPROM存储器芯片与MSP430微控制器连接.作为示例测试,我尝试将以下字符串写入其中:

第一章.兔子洞.爱丽丝开始厌倦了坐在银行的姐姐身边,

当我尝试从芯片中读取数据时,这就是我得到的:

第一章.兔子洞.爱丽丝开始厌倦了坐在姐姐身边的b ?????

?是垃圾数据.问题是,如果我将字符串的大小减少几个字符,那么就没有问题了.以前我曾尝试从SD卡上的文件中读取数据,并以256字节块写入EEPROM芯片.在这种情况下没有写任何东西.但是当我逐字节执行相同的操作时,没有问题.

这是我正在使用的代码

  static uint32_t i=0x025698;

  static unsigned char message[120] = "CHAPTER I. Down the Rabbit-Hole."\
  "Alice was beginning to get very tired of sitting by her sister on the bank, "; 

  static int size ;

  unsigned char input[120];

  size = strlen(message);

  eeprom_spi_init();
  eeprom_write( i ,message,size);

  __delay_cycles(2500);

  eeprom_read( i, input,size);

  input[size]='\0';

  ax_log_msg(E_LOG_INFO,input);  //print command
Run Code Online (Sandbox Code Playgroud)

低级SPI函数如下:

  void eeprom_write(uint32_t ui_addr, uint8_t *puc_wrData, uint8_t ui_dataLen)
  {

    uint8_t uac_wrBuf[260] = {0x00,};
    uint8_t i = 0;

    EEPROM_wrEnable();

    uac_wrBuf[i++] = …
Run Code Online (Sandbox Code Playgroud)

memory embedded msp430 eeprom

2
推荐指数
1
解决办法
1096
查看次数

如何在FPGA中永久存储数据和编程?

从我浏览的内容来看,一旦FPGA断电,您就必须对其进行编程。但是我正在尝试使用Verilog实现基于FPGA的安全系统。在这种情况下,我希望系统的密码被永久存储,即即使电源关闭也不应删除该密码。如果程序也可以存储也很好。我是FPGA的入门者。所以,请告诉我该怎么做。该设备是XC3S400 Spartan 3系列。

verilog spartan fpga hdl eeprom

2
推荐指数
1
解决办法
1913
查看次数

Arduino EEPROM看起来很脆弱,我应该写两次吗?

我习惯使用高级语言编程PC和智能手机,微控制器对我来说是一个新的领域.它们是不同的,更不值得信赖,需要不同的技术?这里有一些代码可以写入和读取运行在Arduino Mega上的EEPROM :(附加了以太网屏蔽,此处未使用)

#include <EEPROM.h>
int addr = 0;
int val;
byte value;
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  val = 9;
  EEPROM.write(addr, val);
  delay(500);
  addr = addr + 1;
  if (addr == 20) addr = 0;
  value = EEPROM.read(addr);
  Serial.print(addr);
  Serial.print("\t");
  Serial.print(value);
  Serial.println();  
}
Run Code Online (Sandbox Code Playgroud)

下面是什么出来:

1   91
2   91
3   9
4   9
5   9
6   9
7   9
8   9
9   9
10  9
11  9
12  202
13  202
14  202
15  202
16  202 …
Run Code Online (Sandbox Code Playgroud)

c arduino eeprom

1
推荐指数
1
解决办法
1092
查看次数

STM32 HAL - 写入 EEPROM (I2C)

我正在学习在 HAL 中编程,今天我想将一些数据保存到外部 I2C EEPROM。问题是我发送地址后无法让EEPROM发送ACK。我使用 Arduino(在 5V 和 3V 上)进行了尝试,IC 以 ACK 响应。我尝试连接一个 MLX90614 I2C IR 传感器,它工作正常(我得到了响应,我可以在 Arduino 和 STM32 中发送和接收数据)。我还交换了 SDA 和 SCL 引线,认为我可能将它们混合在一起,但事实并非如此。我使用了一个逻辑分析仪,正如你所看到的,我只得到了一个 NACK。我不认为 EEPROM IC (ATMLU036/2EB - AT24C256B) 不喜欢 3V,因为它在 Arduino 中工作,数据表说它即使在较低电压下也能正常工作。我不知道为什么它不工作以及为什么其他 I2C 外围设备(例如 IR 传感器)工作得很好。我正在使用 STM32F429ZI - DISC1。这是我的代码:(简而言之,我将 PB8 引脚用于 SCL,PB9 用于 SDA,我尝试了 100kHz、10kHz、1kHz scl 频率,但没有帮助。在 STM32CubeMX 中我没有改变任何东西 - 线路有内部拉力上电阻)

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f4xx_hal.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/
I2C_HandleTypeDef hi2c1;

/* …
Run Code Online (Sandbox Code Playgroud)

hal stm32 i2c eeprom

1
推荐指数
1
解决办法
7871
查看次数

如何擦除和覆盖 Spi EEPROM 中的数据

我使用WinBond W25Q64JV SPI Flash芯片来存储数据,微控制器是STM32F101RCT6。当我尝试将数据存储在华邦芯片中时,它工作正常,我可以在华邦芯片中读取和写入数据,但如果我想覆盖同一地址中的新数据,它不会被覆盖,并且会提供旧数据新数据未写入同一内​​存中。如果我使用擦除选项,则会擦除所有地址位置中的所有数据,我无法擦除特定地址数据。删除所有地址数据后,我可以写入新数据,但我正在丢失所有其他位置的数据,因此请指导我覆盖同一地址位置中的新数据/特定地址的擦除选项,我的代码如下

     HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
     HAL_Delay(1000);
     HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_RESET);
     Spi_data[0]=0x06;  //Write Enable
     HAL_SPI_Transmit(&hspi2,Spi_data,1,1000);
     HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
     HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_RESET); 
     Spi_data[0]=0x02; //Page Program
     Spi_data[1]=0x00;
     Spi_data[2]=0x10;
     Spi_data[3]=0x14;
     Spi_data[4]=0x43;
     HAL_SPI_Transmit(&hspi2,Spi_data,5,10000);
     HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);

     HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_RESET);
     Spi_data[0]=0x03;//Read Data
     Spi_data[1]=0x00;
     Spi_data[2]=0x10;
     Spi_data[3]=0x14;
     HAL_SPI_Transmit(&hspi2,Spi_data,4,100);
     HAL_SPI_Receive(&hspi2,GSdata,4,100);
     HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
Run Code Online (Sandbox Code Playgroud)

当我尝试覆盖 0x1014 位置中的新数据时,如果我使用以下擦除选项,它不会被覆盖,它会擦除​​所有内存地址数据

   HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_RESET);
   Spi_data[0]=0x20;//Erase
   Spi_data[1]=0x00;
   Spi_data[2]=0x10;
   Spi_data[3]=0x14;
   HAL_SPI_Transmit(&hspi2,Spi_data,4,1000);
   HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
Run Code Online (Sandbox Code Playgroud)

请指导我覆盖同一地址中的新数据/特定地址的擦除选项

microcontroller spi stm32 flash-memory eeprom

1
推荐指数
1
解决办法
2745
查看次数

如何从字符串中删除垃圾数据

我遇到的情况是我必须使用Python来读取和写入嵌入式设备上的EEPROM.第一页(256字节)用于非易失性数据存储.我的问题是变量的长度可能不同,我需要读取固定的数量.

例如,字符串存储在地址30处,并且可以是长度为6到10个字节的任何地方.我需要读取最大可能的长度,因为我不知道它的结束位置.它的作用是它给了我字符串中多余的垃圾.

data_str = ee_read(bytecount)
dbgmsg("Reading from EEPROM: addr = " + str(addr_low) + " value = " + str(data_str))

> Reading from EEPROM: addr = 30 value = h11c13????
Run Code Online (Sandbox Code Playgroud)

我对Python很新.有没有办法在读入后自动切断字符串中的数据?

python string parsing eeprom

0
推荐指数
1
解决办法
2401
查看次数

标签 统计

eeprom ×9

stm32 ×4

c ×3

embedded ×2

i2c ×2

microcontroller ×2

arduino ×1

flash-memory ×1

fpga ×1

hal ×1

hdl ×1

memory ×1

msp430 ×1

parsing ×1

python ×1

rfid ×1

spartan ×1

spi ×1

string ×1

struct ×1

verilog ×1