STM32L031 LL库读写内部EEPROM

由于STM32L031没有找到FLASH_PECR_FTDW寄存器,这里就把这个注释掉了

#include "eeprom.h"
#include "main.h"

//eeprom读测试
void eeprom_test_read()
{
	uint32_t temp;
	uint16_t i = 0;
	for(i=0;i<256;i++)
	{
		temp = *(__IO uint32_t*)(EEPROM_BASE_ADDR+(i*4));
#ifdef ENABLE_PRINT
		printf("data:%08x\t",temp);
#endif
	}
}

/*------------------------------------------------------------
 Func: EEPROM数据按字节写入
 Note:
-------------------------------------------------------------*/
void eeprom_write_bytes(uint16_t Addr,uint8_t *Buffer,uint16_t Length)
{
	uint8_t *wAddr;
	wAddr=(uint8_t *)(EEPROM_BASE_ADDR+Addr);
	DIS_INT
	FLASH->PEKEYR=PEKEY1;				//unlock
	FLASH->PEKEYR=PEKEY2;
	while(FLASH->PECR&FLASH_PECR_PELOCK);
	//FLASH->PECR|=FLASH_PECR_FTDW;        //not fast write //没找到这个寄存器
	while(Length--){
		*wAddr++=*Buffer++;
		while(FLASH->SR&FLASH_SR_BSY);
	}
	FLASH->PECR|=FLASH_PECR_PELOCK;
	EN_INT
}

//eeprom写测试
void eeprom_test_write()
{
	uint8_t datas[256];
	uint16_t i = 0;
  for(i=0;i<256;i++)
	{
		datas[i] = 0x2F;
	}
	eeprom_write_bytes(0,datas,256);
	eeprom_write_bytes(256,datas,256);
	eeprom_write_bytes(512,datas,256);
	eeprom_write_bytes(768,datas,256);
}

头文件

#ifndef __EEPROM_H
#define __EEPROM_H

#define PEKEY1	0x89ABCDEF		//FLASH_PEKEYR
#define PEKEY2	0x02030405		//FLASH_PEKEYR

#define EEPROM_BASE_ADDR	0x08080000	
#define EEPROM_BYTE_SIZE	0x03FF

#define EN_INT      	__enable_irq();		//系统开全局中断
#define DIS_INT     	__disable_irq();	//系统关全局中断


void eeprom_test_write();
void eeprom_test_read();

#endif

串口打印的EERPOM数据 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
STM32L496是STMicroelectronics推出的一款低功耗微控制器系列。它具有丰富的外设和功能,包括SPI(串行外设接口)。在STM32L496中,SPI可以通过LL进行配置和操作。 引用\[1\]中的代码片段展示了使用LLSTM32L496上进行SPI数据收发的函数。该函数使用非中断方式进行数据传输,通过SPI2接口发送和接收一个字节的数据。 引用\[2\]提供了关于W25Q16JV芯片的SPI操作的说明。W25Q16JV支持标准SPI、双SPI和四SPI操作。标准SPI使用单向DI和DO引脚进行数据传输,而双SPI和四SPI使用双向IO引脚进行数据传输。四方SPI指令还需要设置非易失四方使能位(QE)。 引用\[3\]介绍了通过三个状态标志来监控SPI总线的状态。TXE标志表示发送缓冲器是否为空,RXNE标志表示接收缓冲器是否非空,BSY标志表示SPI通信层是否忙碌。 综上所述,STM32L496的LL提供了丰富的功能和接口来配置和操作SPI外设,可以用于与W25Q16JV等SPI设备进行通信。 #### 引用[.reference_title] - *1* [STM32G031K LL的使用 - SPI](https://blog.csdn.net/weixin_42067548/article/details/105096159)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [STM32F030 HAL硬件SPI操作W25Q16存储芯片(一)](https://blog.csdn.net/billjiang2008/article/details/127104508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【STM32】HAL-SPI](https://blog.csdn.net/qq_45607873/article/details/125036835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花开花落的个人博客

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值