历史上的今天
返回首页

历史上的今天

今天是:2024年09月08日(星期日)

2018年09月08日 | stm8s103f3p EEPROM的读写

2018-09-08 来源:eefocus

/**********************************************************************

/* MAIN.C file
 * 
 * Copyright (c) 2002-2005 STMicroelectronics
 */
//EEPROM的读写
//先对)0x40000写入0x12
//在读出来写的数据
//如果是0x12,就使得PD的前4位输出颠倒
#include "stm8s103f.h"
unsigned char ch;
main()
{
 unsigned char *p;
 PD_DDR=0x0f;
 PD_CR1=0x0f;
 PD_CR2=0x00;
 PD_ODR=0x00;
 p=(unsigned char *)0x4000;//指针P指向EEPROM的第一个单元
 do
 {
   FLASH_DUKR=0xae;//写入第一个密钥
   FLASH_DUKR=0x56;//写入第一个密钥
 }while((FLASH_IAPSR&0x08)==0);//若解锁未成功,则继续写
 *p=0x12;//写入第一个字节
 while((FLASH_IAPSR&0x04)==0) ;//等待写操作成功
 ch=*p;
 
 while (1)
 {
   if(ch==0x12)
   { 
     PD_ODR^=0x0f;  
   }
 }
}

/**********************************************************************

 在用STVP烧写程序的时候会出现如图所示的警告

引用http://www.51hei.com/bbs/dpj-25357-1.html的解决办法

个人总结:延迟21毫秒后再操作EEPROM,延迟20毫秒烧录都会报错。(STM8S003F3)
我上个月也出现了这样的问题,对出现问题的的工程进行分析。
发现,在main函数中直接解除EEPROM的锁定,然后对特定的EEPROM地址进行赋值,只要赋的值不是0,就会报错,
直接插入CLR或者LD指令操作EEPROM地址,发现CLR指令不会报错,LD的会报错。也就是说,清零没问题,赋值会有问题。


今天,使用STVP下载的时候再次出现这样的问题,对多处修改进行分析。发现原来是我用的配置初始化函数中ConfigInit(),
有类似这样的语句*EEP_Config =ROM_Config(两个都是结构体,其中前面一个指向EEP,后一个在定义的时候带有const)。

今天早上之前都没有这个错误的,经查出现错误的原因是:以前我是在菜单状态机的第一个状态,在启动后一秒钟调用ConfigInit(),
而今天早上我是将ConfigInit()函数放到了第一个状态的入口动作上,也就是说在菜单状态机被初始化的时候,ConfigInit()函数就会被调用。
同时我是将初始化菜单状态机的函数,直接放在main函数中的,即上电后马上调用ConfigInit()!
将ConfigInit()函数延后执行后,程序下载恢复正常。

我才猜测是这样的:启动后的一段时间内不能对EEPROM进行赋值,要不然就会被报错。
结合在STVP下载的时候,能看到LCD狂闪,推论如下:
STVP在下载的时候,程序是可以断断续续的运行的,而在期间如果执行了赋值EEPROM的动作,那么STVP在随后对EEPROM的
检测的时候,发现并非全是0,就会将不是0的那个地址用下面的语句报错:
Verify failed at address0xXXXX
希望能帮到以后遇到这个问题的人~~

/************************************************************************************************************************************


推荐阅读

史海拾趣

AEM [ American Electronic Materials]公司的发展小趣事

在电子行业的发展过程中,AEM始终保持着对技术创新的追求。公司不断投入巨资进行技术研发,引进先进的生产设备和制造工艺,致力于提升产品的性能和品质。通过多年的努力,AEM成功突破了多项技术难题,取得了一系列重要的技术成果。

此外,AEM还积极与产业上下游的企业进行合作,共同推动电子行业的发展。通过与供应商和客户的紧密合作,AEM不断优化供应链和销售渠道,提高了公司的运营效率和市场竞争力。

Aptos Technology公司的发展小趣事

近年来,Aptos将业务重心逐渐转向区块链领域。在经过长时间的研发后,公司成功推出了主网测试环境。在测试中,Aptos实现了惊人的3万TPS峰值以及超20亿笔日交易的处理能力,这一性能突破在行业内引起了广泛关注。

歌普(GEPU)公司的发展小趣事

为了加速发展,Aptos积极寻求与行业内外的合作伙伴建立合作关系。通过与微软、阿里云等知名公司的合作,Aptos获得了更多的技术支持和市场资源。这些合作伙伴关系的建立,不仅提升了Aptos的技术实力和市场竞争力,还为其未来的发展奠定了坚实的基础。

DBS Microwave Inc公司的发展小趣事

DBS Microwave Inc公司起源于XXXX年,当时由几位志同道合的电子工程师创立。他们共同意识到,随着无线通信技术的飞速发展,微波器件的市场需求将会急剧增长。于是,他们凭借丰富的专业知识和对市场趋势的敏锐洞察,决定专注于研发和生产高质量的微波射频器件。起初,公司面临着资金紧张、市场竞争激烈等诸多挑战,但创始人团队凭借坚韧不拔的精神和对技术的执着追求,逐步在市场上崭露头角。

HANA Micron公司的发展小趣事

为了更好地服务全球客户,Hama积极实施国际化战略,在全球范围内设立了多家子公司。这些子公司不仅负责当地市场的销售和服务工作,还积极参与技术研发和产品创新活动。通过全球子公司的协同作战,Hama成功实现了资源的优化配置和市场的深度覆盖。目前,Hama在全球拥有约2500名员工、5亿欧元的业务和19家全球子公司,已成为国际知名的电子配件供应商之一。未来,随着全球市场的不断变化和发展,Hama将继续加强全球子公司的建设和布局,为公司的长远发展奠定坚实基础。

智烽维(CDA)公司的发展小趣事

智烽维(CDA)于2007年成立,专注于超级电容器(法拉电容)的研发和生产。在创立初期,公司面临着资金短缺、技术挑战和市场认知度低等多重困难。然而,凭借对技术的执着追求和对市场的敏锐洞察,智烽维成功推出了卷绕型超级电容器产品,并逐渐在市场上建立起了一定的知名度。

问答坊 | AI 解惑

关于TI 6000系列DSP优化经验(转帖)

看到网上很多网友对TI 6000系列DSP优化工作感到苦恼,在此我总结下我的优化经验,希望对大家有帮助。 一、首先考虑从系统结构上优化,比如尽量减少待处理数据的无谓搬移,考虑你DSP片内存储量和每次处理数据量对系统结构优化,这部分的优化应该最 ...…

查看全部问答>

【ATMEL技术问题】关于KEIL下AT91R40008启动代码问题

用KEIL 软件建立一个工程,自动生成一个启动代码STartup.S ; 但是问题来了,这个代码有点不知所云,编译出错哦啊,请大侠指点!下面是代码 /*****************************************************************************/;/* STARTUP.S: Start ...…

查看全部问答>

菜鸟提问:SHBrowseForForlder()不能用,怎么代替

我是个初学者,我这个平台不能使用SHBrowseForForlder()这个方法,想找另外一个方法来代替SHBrowseForFolder,达到相同的效果, 或者可以不用打开浏览文件夹着个对话框,直接可以保存文件到指定目录也可以。劳驾各位帮忙啊…

查看全部问答>

求助:蓝牙和WIFI共存的问题

关于BT与WIFI共存时的设计,小弟有些问题,实在是不太明白,请教各位高手。 1. 我在网上看到有人说如果蓝牙和WIFI的物理隔离达到30dB以上,则两者之间的相互影响可以基本忽略。请问如果才能做到物理隔离达到30dB以上呢?是否天线距离远一些就可以 ...…

查看全部问答>

关于pc104总线驱动的制作

小弟刚刚做了一块基于pc104总线的DA板卡,但是现在要与基于pc104总线的3350主板进行交互,主要是对pc104总线的数据进行读取,需要制作驱动,小弟第一次开发,有那位大侠能够给一个例子或其他的资料,多谢…

查看全部问答>

螺纹的检测技术

各位大虾,有什么方法可以检测孔内的螺纹?只要检测孔内是否有螺纹就可以了。…

查看全部问答>

向大家请教一下uc/os-II多任务的运行机制?

有一个如下的uc/os-II源代码,就是采用信号量机制使两个任务共享一个串口com1,去打印一条字符串。 [code] #include \"config.h\" #define        Task0StkLengh        64       ...…

查看全部问答>

【课后练习】LaunchPad课后练习七之定时器

课后练习七之定时器   (定时器看起来简单,却搞了好久,和之前的430定时器不太一样,看了很多次,还有很多没弄出来的地方,有几个地方还是没懂) 1.TIMER_A由以下部分组成 [1] 计数器部分 输入的时钟源具有4种选择,所选择的时钟源又可 ...…

查看全部问答>

4位半的AD达到5位半分辨率的讨论,欢迎跟进一起探讨。

5位半的数字万用表没有一千块RMB是拿不下来的,本帖想讨论能否设计一种廉价的方案实施一个5位半表呢? ICL7135是4位半AD转换器,价格低廉,才4块钱多些,如果采用过采样编程技术,是否可以做出一个5位半分辨率的万用表呢? 欢迎讨论。 如果经研 ...…

查看全部问答>