打印
[其它应用]

中颖sh79f1611芯片的EEPROM怎么存取和读写?C语言

[复制链接]
998|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FBIII|  楼主 | 2020-1-2 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
中颖sh79f1611芯片的EEPROM怎么存取和读写?C语言

有没有例程或者应用实例参考一下

使用特权

评论回复
沙发
QGQ2008| | 2021-1-15 15:48 | 只看该作者
本帖最后由 QGQ2008 于 2021-1-15 16:09 编辑

关于SH79f1611芯片的EEPROM读写和擦除

读取成功,扇区擦除和字节编程失败,不知什么原因。
程序如下

#include "Define.H"
#include "intrins.h"
#include "Eeprom.h"
#include "Absacc.H"
/*****************************************************************************************************
*  Function Name: u8 EEPromByteRead(UINT8 nAddrH,UINT8 nAddrL)  
*  Created By:    GQ.quan
*  Created Date:  2021.01.05
*  Input:         nAddrH, nAddrL
*  Output:        无
*  Return:        nTemp
*  Description:   从指定地址处读取1个字节返回
*  History:      
*  Others:                        
*****************************************************************************************************/
unsigned char EEPromByteRead(u8 nAddrH,u8 nAddrL)// 字节读
{unsigned char nTemp;
unsigned int nInt;
_push_(IEN0);//
IEN0 &= 0x7F ;//关闭总中断
FLASHCON = 0x01;//访问EEPROM
nInt = nAddrH ; //读取地址为[nAddrH,nAddrL]
nInt <<= 8 ;nInt += nAddrL ;
nTemp = CBYTE[nInt];//将CBYTE[nAddrH+nAddrL]内数据存入nTemp变量
FLASHCON = 0x00 ;//将操作区域切换回Main Block
_pop_(IEN0);//
return (nTemp);//将读取值作为函数返回值
}
// 一个扇区256个字节,共8个扇区(EEPROM = 8*256B,总共 2KB)
/*****************************************************************************************************
*  Function Name: void EEPromByteProgram(UINT8 nAddrH,UINT8 nAddrL, UINT8 nData)   
*  Input:         nAddrH, nAddrL,nData
*  Output:        无
*  Return:        无
*  Description:   向指定地址处写入1个字节
*  History:
*  Others:                        
*****************************************************************************************************/
void EEPromByteProgram(u8 nAddrH,u8 nAddrL, u8 nData)  // 字节编程
{
_push_(IEN0);//
IEN0 &= 0x7F;  
FLASHCON = 0x01;//访问EEPROM
XPAGE =(nAddrH);//个扇区256个字节,共8个扇区
IB_DATA = nData;
IB_OFFSET = nAddrL;
IB_CON1 = 0x6E;//开始编程操作
IB_CON2 = 0x05;
IB_CON3 = 0x0A;
IB_CON4 = 0x09;
IB_CON5 = 0x06;
_nop_() ;                                
_nop_() ;
_nop_() ;
_nop_() ;
XPAGE = 0 ;
FLASHCON = 0x00 ;//将编程区域切换回Main Block
_pop_(IEN0);//

}
/*****************************************************************************************************
*  Function Name: void EEPromSectorErase(UINT8 nAddrH)   
*  Input:         nAddrH
*  Output:        无
*  Return:        无
*  Description:          擦除指定扇区   
*  History:
*  Others:                        
*****************************************************************************************************/
void EEPromSectorErase(u8 nAddrH)//扇区擦除
{
_push_(IEN0);//
IEN0 &= 0x7F ;
FLASHCON = 0x01 ;                                                                                
XPAGE = (nAddrH);//个扇区256个字节,共8个扇区                                         
IB_CON1 = 0xE6 ;        
IB_CON2  = 0x05 ;
IB_CON3 = 0x0A ;
IB_CON4 = 0x09 ;
IB_CON5  = 0x06 ;
_nop_() ;                                
_nop_() ;
_nop_() ;
_nop_() ;
XPAGE = 0 ;
FLASHCON = 0X00 ;
_pop_(IEN0);//
}


使用特权

评论回复
板凳
嵌入小菜菜| | 2021-1-15 16:56 | 只看该作者
二楼介绍的很详细,我也学到了一些知识。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

20

帖子

0

粉丝