0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F103与M9525EEPROM的通信例程

MrLee_946 来源:MrLee_946 作者:MrLee_946 2026-03-11 14:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32通过SPI 与EEPROM芯片M95256进行数据读写。

//SPI1 写一个字节
//TxData:要写入的字节

uint8_t SPI1_WriteByte(uint8_t TxData)
{

    HAL_SPI_Transmit(&hspi1,&TxData,1, 1000);       
	
}

//返回值:读取到的字节
uint8_t SPI1_ReadByte(void )
{
    uint8_t RxData;
    HAL_SPI_Receive(&hspi1,&RxData,1, 1000);       
 	return RxData;          		    //返回收到的数据		
}
//读字节函数
void M95256_ReadByte(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead)
{
    uint16_t i;   
    // 拉低片选信号
   HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_RESET);    

    SPI1_WriteByte(0x03) ;     // 发送READ指令(0x03)
 	
     SPI1_WriteByte((ReadAddr) >> 8);   
     SPI1_WriteByte(ReadAddr);

    // 发送dummy数据并读取返回值
	
    for(i=0;i< NumByteToRead;i++)
        pBuffer[i]= SPI1_ReadByte();    //循环读数  
    // 拉高片选信号
  HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_SET); 
    
}
//SPI在一页(0~65535)内写入少于256个字节的数据
//在指定地址开始写入最大256字节的数据
//pBuffer:数据存储区
//WriteAddr:开始写入的地址(16bit)
//NumByteToWrite:要写入的字节数(最大64),该数不应该超过该页的剩余字节数!!!	 
void Write_Byte(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite)
{
 	uint16_t i;  
	   HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_RESET);  //使能器件   
    SPI1_WriteByte(0x06) ; 	//写使能 	
		   HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_SET); //取消片选 

		   HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_RESET);  //使能器件  
	
  SPI1_WriteByte(0x02) ; 	//写使能 //发送写页命令   
	
     SPI1_WriteByte((WriteAddr)>>8); //发送16bit地址     
     SPI1_WriteByte(WriteAddr);   
    for(i=0;i< NumByteToWrite;i++)
      	SPI1_WriteByte(pBuffer[i]);//循环写数  
	
		HAL_Delay(5);					   //等待写入结束

	   HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_SET); //取消片选 
	
}
main.c
uint8_t RXtxt_Buffer[100];
const uint8_t TEXT_Buffer[]={0x55,0xaa,0x55,0x55,0x55,0x55,0x55};
Write_Byte((uint8_t*)&TEXT_Buffer1,0x3001,7);
HAL_Delay(2000);
M95256_ReadByte(RXtxt_Buffer,0x3001,7);
printf("M95256_Read Data:%drn", RXtxt_Buffer[0]);         //串口打印信息
printf("M95256_Read Data:%drn", RXtxt_Buffer[1]);         //串口打印信息
printf("M95256_Read Data:%drn", RXtxt_Buffer[2]);         //串口打印信息
printf("M95256_Read Data:%drn", RXtxt_Buffer[6]);         //串口打印信息
HAL_Delay(1000);

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    6446

    浏览量

    140244
  • STM32F103
    +关注

    关注

    34

    文章

    497

    浏览量

    68171
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    国产MCU无缝替代新选择:FT32F103R8AT7完美兼容STM32F103R8Tx实操解析!

    在全球半导体供应链持续波动、国产替代成为产业共识的当下,STM32F103R8Tx作为意法半导体经典的Cortex-M3内核MCU,虽长期占据消费电子、工业控制等领域的核心地位,却也面临着交货周期长
    的头像 发表于 02-08 15:19 1719次阅读
    国产MCU无缝替代新选择:FT32<b class='flag-5'>F103</b>R8AT7完美兼容<b class='flag-5'>STM32F103</b>R8Tx实操解析!

    基于STM32F103驱动DAC1220 20位/16位DAC数模转换模块输出可调±10V基准和三角波信号

    小等特点。工作电压5V,20位模式下建立时间15ms,16位模式仅需2ms。本文将用STM32F103驱动DAC1220,实现生成三角波信号输出。模块可用于工业控制、传感器激励等高精度场景。
    的头像 发表于 01-10 10:31 3975次阅读
    基于<b class='flag-5'>STM32F103</b>驱动DAC1220 20位/16位DAC数模转换模块输出可调±10V基准和三角波信号

    CW32L012与STM32F103的三角运算性能对比

    ​  CW32L012和STM32F103在定位和性能上差异显著,在三角函数的运算性能上的对比亦非常直观。 一、 硬件架构对比(性能基础) 芯片型号 CW32L012C8 STM32F103
    的头像 发表于 12-29 15:32 2488次阅读
    CW32L012与<b class='flag-5'>STM32F103</b>的三角运算性能对比

    【新品上市】华清远见AIoT实战平台-STM32F103&amp;amp;ESP32-S3 AI开发板套件,玩转小智AI桌宠机器狗智能车等项目

    :以ESP32-S3作为AI中枢,承担视觉识别、语音交互及WiFi/BLE无线通信任务;以STM32F103作为控制核心,实现实时运动控制与多传感器数据融合,二者通过UAR
    的头像 发表于 11-03 16:18 1597次阅读
    【新品上市】华清远见AIoT实战平台-<b class='flag-5'>STM32F103</b>&amp;amp;ESP32-S3 AI开发板套件,玩转小智AI桌宠机器狗智能车等项目

    关于TMC2208与TMC2209的区别及基于STM32F103控制TMC2209模块驱动2相4线步进电机

    技术,TMC2208提供2 - 32微步选择,TMC2209支持8 - 64微步选择。文章最后提供了STM32F103控制TMC2208/TMC2209驱动42步进电机的程序。
    的头像 发表于 10-09 17:19 2352次阅读
    关于TMC2208与TMC2209的区别及基于<b class='flag-5'>STM32F103</b>控制TMC2209模块驱动2相4线步进电机

    MH32F103A系列单片机的功能特性

    MH32F103A是一款硬件完美兼容ST32的国产32位单片机,使用高性能的ARM Cortex-M3 内核,最高工作频率216 MHz。内置最大512K Flash,96K Sram存储器。MH32F103A 软硬件兼容
    的头像 发表于 09-12 10:58 1295次阅读
    MH32<b class='flag-5'>F103</b>A系列单片机的功能特性

    CherryUSB +STM32F103C8 example usb cdc device不识别是怎么回事?

    请问下使用stm32F103 blue pill 板子 1.按照文档教程 及 视频教程 使用https://github.com/CherryUSB/cherryusb_stm32
    发表于 09-10 07:03

    STM32F103长时间运行,串口发送失败怎么解决?

    STM32F103长时间运行,串口发送失败,目前定位到一致卡在USART_FLAG_TC判断那里,我们采用轮询的方式发送数据,然后判断USART_FLAG_TC是否发送成功,在大量发送后出现了一次发送后USART_FLAG_TC没有置位,然后就一直卡在这里了,这可如何是好?
    发表于 07-30 07:55

    STM32F103c8上做DLQR最优控制算法的C编程资料

    这是我近期做的一个项目--基于STM32F103c8的DLQR控制算法的C编程,涉及DLQR最优控制算法、嵌入式STM32F103编程、CMSIS-DSP库使用。    附有完整的程序。
    发表于 07-23 15:30 0次下载

    STM32F103驱动LD3320语音识别模块

    本文介绍了如何使用STM32F103微控制器驱动LD3320语音识别模块,该模块具备非特定人语音识别功能,支持动态编辑关键词,且无需额外Flash和RAM。通过SPI接口连接并配置代码,实现在不同指令下执行相应操作,如流水灯、闪烁等。实验结果显示,STM32能成功识别并响
    的头像 发表于 06-28 14:16 1888次阅读
    <b class='flag-5'>STM32F103</b>驱动LD3320语音识别模块

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料
    发表于 06-06 17:06 17次下载

    STM32F103C6T6 DCAC逆变器原理图

    STM32F103C6T6 DCAC逆变器原理图
    发表于 05-19 17:48 2次下载

    【硬核项目】STM32F103 智能小车全栈开发:红外循迹 / 避障算法 + WiFi 远程控制,附原理图与代码

    今天为大家推荐一款功能强大的STM32多功能智能小车——华清远见STM32F103智能云控小车。这款小车集红外遥控、远程物联控制、智能循迹、超声波避障和交互式显示屏五大核心功能于一体,融合了物联网云
    的头像 发表于 05-16 17:11 2460次阅读
    【硬核项目】<b class='flag-5'>STM32F103</b> 智能小车全栈开发:红外循迹 / 避障算法 + WiFi 远程控制,附原理图与代码

    CS32F103RB有无驱动例程,是否可用stm32F103的驱动代码?

    如果不能使用stm32F103驱动的话,请把驱动例程发送1830665518@qqcom
    发表于 05-15 10:54

    stm32f103c8t6主控芯片无人机原理图

    stm32f103c8t6主控芯片无人机原理图
    发表于 04-29 17:02 3次下载