spi flash偶尔出现写入错误的情况

spi flash W25Q128会偶尔出现写入错误的情况,会发现读出的值和写入的值不一致,需加入2次读出比较判断。

W25QXX_Read(&temp_date_count,0x000000,1);
	//W25QXX_Write((u8*)&temp_date,0x400000,135);
	//W25QXX_Read((u8*)&temp_data_test,0x400000,135);

	W25QXX_Write((u8*)&temp_date,(temp_date_count*135+1),135);
	W25QXX_Read((u8*)&temp_data_test,(temp_date_count*135+1),135);
	if(memcmp(&temp_date,&temp_data_test,135)!=0)
	{
		W25QXX_Write((u8*)&temp_date,(temp_date_count*135+1),135);
		W25QXX_Read((u8*)&temp_data_test,(temp_date_count*135+1),135);
		if(memcmp(&temp_date,&temp_data_test,135)!=0)
		{
			W25QXX_Write((u8*)&temp_date,(temp_date_count*135+1),135);
		}
	}
	temp_date_count=temp_date_count+1;//Each time a structure is written
	if(temp_date_count==60) 
	{
		temp_date_count=0;
	}
	W25QXX_Write(&temp_date_count,0,1);

  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
索奥科技中心倾情奉献 1 第2讲 AVR单片机软件开发环境 一、实验目的 1.熟悉CodeVision AVR集成开发环境 2.掌握单片机C语言开发 二、实验内容 1.在CodeVision AVR软件开发平台下创建一个工程并编译下载。 三、实验所用仪表及设备 硬件:PC机一台、AVR_SA_11实验板 软件:CodeVision AVR集成开发软件、progisp下载软件 四、实验步骤 使用CodeVision AVR软件的CodeWizardAVR功能,创建一个简单的工程,编译并下载。 新建项目 (1)打开CodeVision AVR(版本V2.03.4),打开File->New,选择Project->OK,弹出一个Confirm对话框,选择Yes。如图2.1所示。 图2.1 (2)在弹出的CodeWizardAVR窗口中进行选择。在Chip选项卡中:Chip->ATmega16,Clock->1MHz。在Port选项卡中:选择PortA,修改Bit0为Out,Output Value改为1。如图2.2所示。 索奥科技中心倾情奉献 2 图2.2 (3)在CodeWizardAVR窗口中,File->Generate,Save and Exit,创建新工程。如图2.3所示。 图2.3 将新生成的源程序(.c),工程文件(.prj),CodeWizardAVR文件(.cwp),保存在一个新建文件夹下。如图2.4所示新生成的源程序。 索奥科技中心倾情奉献 3 图2.4 (4)修改源程序 在源程序在开始处添加 #include 。 在while(1)处添加四句语句。如图2.5所示。 图2.5 (5)保存。 编译项目 选择Project->Build All(Ctrl + F9),弹出Information窗口,其中No errors,No warnings表示编译成功。如图2.6所示。如果出现错误,根据错误提示修改源程序。 索奥科技中心倾情奉献 4 图2.6 下载程序 由于CodeVision AVR自带的下载软件Code Programmer修改熔丝位不够灵活,我们选用progisp下载软件进行程序下载。 (1)打开progisp,USBASP彩色表示使用USBASP方式下载,PRGISP彩色表示USBASP下载器连接成功,选择芯片型号。最终配置成图2.7的样子。 图2.7 (2)点击“调入Flash”选项,在工程文件夹下找到Exe文件夹,选择xx.hex文件,点击确定。如图2.8所示。 索奥科技中心倾情奉献 5 图2.8 (3)编程选项修改。按照图2.9进行选择。(注意“编程熔丝”选项,一定不要选择) 图2.9 (4)将下载器与PC机USB口相连,另一端连接实验板ISP接口。使用杜邦线将任意一个LED灯与PA0相连。 (5)点击“自动”,如图2.11所示为编程成功。观察LED,发现它在一闪一闪。 图2.11 五、思考题 1.用CodeWizardAVR创建工程的有什么优点? 2.创建工程的过程中应注意哪些问题? 索奥科技中心倾情奉献 6 附一:关于 avr的熔丝的使用和设置 (马潮) 对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。 (1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状“0””。 (2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。 (3)使用CVAVR中的编程下载程序时应特别注意,由于 CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“all”选项,应先使用“read->fuse bits”读取芯片中熔丝位实际状态后,再使用“all” 选项。 (4)新的AVR芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。 (5)AVR芯片加密以后仅仅是不能读取芯片内部Flash和E2PROM中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其它熔丝位的状态。 (6)正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的锁定位。 (7)使用ISP串行方式下载编程时,应配置SPIEN熔丝位为“0”。芯片出厂时SPIEN位的状态默认为“0”,表示允许ISP串行方式下载数据。只有该位处于编程状态“0”,才可以通过AVR的SPI口进行ISP下载,如果该位被配置为未编程“1”后,ISP串行方式下载数据立即被禁止,此时只能通过并行方式或 JTAG编程方式才能将SPIEN的状态重新设置为“0”,开放ISP。通常情况下,应保持 SPIEN的状态为“0”,允许ISP编程不会影响其引脚的I/O功能,只要在硬件电路设计时,注意ISP接口与其并接的器件进行必要的隔离,如使用串接电阻或 断路跳线等。 (8)当你的系统中,不使用 JTAG接口下载编程或实时在线仿真调试,且 JTAG接口的引脚需要作为I/O口使用时,必须设置熔丝位JTAGEN的状态为“1”。芯片出厂时JTAGEN的状态默认为“0”,表示允许JTAG接口,JTAG的外部引脚不能作为I/O口使用。当JTAGEN的状态设置为“1”后,JTAG接口立即被禁止,此时只能通过并行方式或ISP编程方式才能将JTAG重新设置为“0”,开放JTAG。 (9)一般情况下不要设置熔丝位把RESET引脚定义成I/O使用(如设置ATmega8熔丝位RSTDISBL的状态为“0”),这样会造成ISP的下载编程无法进行,因为在进入ISP方式编程时前,需要将 RESET引脚拉低,使芯片先进入复位状态。 (10)使用内部有RC振荡器的AVR芯片时,要特别注意熔丝位CKSEL的配置。一般情况下,芯片出厂时CKSEL位的状态默认为使用内部1MHz的RC振荡器作为系统的时钟 索奥科技中心倾情奉献 7 源。如果你使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置CKSEL熔丝位,否则你整个系统的定时都会出现问题。而当在你的设计 中没有使用外部振荡器(或某钟特定的振荡源)作为系统的时钟源时,千万不要误操作或错误的把CKSEL熔丝位配置成使用外部振荡器(或其它不同类型的振荡源)。一旦这种情况产生,使用ISP编程方式则无法对芯片操作了(因为ISP方式需要芯片的系统时钟工作并产生定时控制信号),芯片看上去“坏了”。此时只有使用取下芯片使用并行编程方式,或使用JTAG方式(如果JTAG为允许时且目标板上留有JTAG接口)来解救了。另一种解救的方式是:尝试在芯片的晶体引脚上临时人为的叠加上不同类型的振荡时钟信号,一旦ISP可以对芯片操作,立即将 CKSEL配置成使用内部1MHz的RC振荡器作为系统的时钟源,然后再根据实际情况重新正确配置CKSEL。 (11)使用支持IAP的AVR芯片时,如果你不使用BOOTLOADER功能,注意不要把熔丝位BOOTRST设置为“0”状态,它会使芯片在上电时不是从Flash的0x0000处开始执行程序。芯片出厂时BOOTRST位的状态默认为“1”。 (关于ATMega16的熔丝位的使用和设置更详细的内容请参考《AVR单片机嵌入式系统原理与应用实践》附录A或者数据手册。) 附二:CVAVR编程下载配置 下载环境配置 (1)选择“Settings——>Programmer”,其中AVR Chip Programmer Type选择“Kanda Systems STK200+/300”;Printer Port(并口号)根据电脑的实际情况选择,如图2.12所示。 图2.12 (2)然后就可以在“Tools”中选择“Chip programmer”进行程序的下载和熔丝位的修改等。(比较麻烦,不建议初学者使用)
在最近两个月的维修中碰到正常使用的 4S 出现基带未知以及抹掉所有内容和设置出现无基 带的故障率甚高,那么下面我将为大家解释这其中的原因: 上图的 U12_RF(MX25U8035MI-10G)我想修过笔记本的同行应该都不陌生,它是一颗容量 1M 的 25 系列 SPI FLASH 闪存芯片,用来存储基带数据的,在手机行业中我们常称它为基带 码片,码片数据的损坏率如此之高就好比笔记本行业的 bios 爱坏一样,但是苹果自 4S 起的 基带通讯部分就从 4 代的英飞伦方案转到了高通方案,并且基带 CPU 和码片数据之间采用 了加密方式[ 码片数据与基带 IMEI 加密区:4S(8000-8260), 5 5C 5S(8000-8290)] ,这两个芯片其中任何一个物理损坏都不能单换,必须整套换,在刷机过程中也增加了对它 的验证。 在刷机过程中:a.若基带工作条件缺失或基带本身损坏,那必定会出现“发生未知错误 1” 的报错, b.若基带和码片通讯出了问题,常见的报错代码有-1,3,9,48。 下面切入正题,针对 4S 码片数据损坏导致的刷机出现报错“发生未知错误 48”,我个人把 这一情况定义为码片数据中的EFS模块数据错乱所导致(EFS在码片数据的区域20000-FFFF0), 那么修复方法就很简单,老手对单拆码片有一定把握的可直接拆了码片读出码片资料,将码 片资料受损的 EFS 区替换成 4S 通用的 EFS(在附件中) 写入装回主板刷机(对于单拆码片 没把握的可拆了基带 CPU 用免拆码片座读写,温馨提示:建议新手用免拆座读写,码片是 很脆弱的八脚 BGA 玻璃管,哪怕碎一点点都有可能读不出数据)
软件介绍: 特斯拉TOUCH电子烟升级工具  一,升级工具软件安装  将下载好的升级文件以及升级工具包进行解压  ②选择安装固件升级工具  ④打开安装固件升级软件“TeslacigsISP Install V1.01”  ⑤打开安装主题升级软件 “TeslacigsScribe Install V1.03.2”  二,固件程序升级  ①使电子烟主机进入联机界面  ②使用原装usb数据线连接电脑和电子烟主机,点击“Firmare Upgrade”屏幕将进入黑屏状态③在PC端打开固件升级工具 “Teslacigs ISP ToolV1.01”,点击“connect”进行连接④写入程序  1.点击“UpdataFile”选择已下载好文件,打开名称格式为“Touch 150W TC Upgrade  File-16”的文件夹,然后选择语言种类,再选择文件夹名称格式为USB_update_ZYP150W_V02T_V3.1文件名为USB_update的程序文件2.注意核对文件路径和名称,  3.点击开始,更新过程约20S左右时间,显示PASS后更新完毕4.1 若升级过程中USB线连接断开导致升级失败,请重新连接或是将电池取下后再用USB线连接电脑,然后重新启动运行TeslacigsISP Tool V1.01工具进行升级,更新完成后会出现两种现象如下:  4.2由于固件程序升级完成后与原主机内的主题程序不匹配,导致主机无法开机进入系统,这种现象主要发生在低版本升高版本时出现,此时只需将主题程序升级至匹配版本即可解决,具体操作方法见后面主题升级教程。  4.3更新完成后,重新开机进入查看系统版本界面确认是否更新成功三,主题包程序升级  ①使电子烟主机进入连接界面  ②使用原装usb数据线连接电脑和电子烟主机,点击“壁纸更新”屏幕将进入数据连接模式注意 升级新版固件程序后有可能出现无法正常进入桌面情况,开机后显示画面如下图,此时可直接用数据线将电子烟主机和PC端连接待显示下图画面时表示数据连接成功  ③电子烟主机进入连接模式后,在PC端打开固件升级工具 “Teslacigs Scribe V1.03.2”然后电脑软件界面上点击“Connected”字体由红转绿后表示连接成功,若连接失败,请等待5S时间,重试点击连接(3分钟未做任何操作,系统将自动断开连接并进入关机状态)④进入连接状态后按照下面序号步骤设置操作  点击连接 Connect 字体由红转绿后表示连接成功如果弹出窗口提示连接失败,等5秒后重试点击连接方框里选择 “updata all”升级主题包  选择为升级模式  选择擦除原始文件  打开已下载好,将要更新的主题包文件,选择使用的语种再选择文件夹名称格式为ZYP150W_FlashImage_Fix_V6.0文件名为SpiFlash_1_Fix的程序文件6.核对主题包文件的文件名和路径  7.点击开始,升级过程约5-10分钟,待显示PASS后表示操作成功,断开数据后重启,更新完毕四,壁纸添加和替换  ①先将主题更新软件Teslacigs Scribe V1.03.2在电脑打开,按照升级主题包的方法将电子烟主机和PC端连接好进入到联机模式④进入连接状态后按照下面序号步骤操作  点击连接 Connect 字体由红转绿后表示连接成功如果弹出窗口提示连接失败,等5秒后重试点击连接方框里选择 “updata Theme”添加或替换壁纸3.选择为升级模式  4.选择将要添加或替换的图片文件的路径(要求图片分辨率为320*240,每次添加1张,支持JPG,PNG,TIF,BMP格式图片,选择图片的时候注意勾选“All Files”显示出所有类型格式的图片。 )5.方框内选择将要添加或者替换的图片位置(系统可存放8张图片,前4张图片为内置图片,用户无法替换,第5到第8张用户可添加或替换,方框内对应选择0-3号位置)6.添加图片文件后,在窗口里可预览,确认图片是否为将要添加或替换的图片)7.点击开始,待显示PASS后表示添加成功  ⑤成功添加一张图片后可继续重复以上步骤添加或替换其他图片⑥图片添加写入完毕后,重启电子烟主机,开机后等待更新...,进入桌面可以在墙纸选择页面查看和选择使用新的墙纸。升级问题解答:现象:报Read Date File Error错误显示。原因:         TeslacigsISP Tool V1.01是升级USB_update.bin文件的工具,不能打开SpiFlash_1_Fix.bin,选择错误的文件时就报Read Date File Error错误显示。解决方案:使用工具选择正确的文件,请选择USB_update.bin升级。现象:报Get the SPI Size too Big…错误显示。原因:  Teslacigs Scribe V1.03.2是升级SpiFlash_1_Fix.bin文件的工具,需要在开机屏亮时升级的,造成这样的现象1.关机时连机,2.在选择界面时选择错误,不应该选 择Firmware upgrade而应该选 择Wallpaper Update解决方案:开机连机选择正确的Wallpaper Update操作

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值