亲爱的对话框支持,
我需要非常紧急的闪存读写程序的帮助。
我使用DA14583 MCU设计了一个设备,并编写了代码,在按下按钮时,我切换LED灯泡组。
为了操作LED灯泡,创建一个数据包(包包括灯泡的数量和它们的地址),从BLEScanner分配到自定义设备。
固件中的下一件事是,我读取从应用程序发送的数据包,然后根据我的应用程序对其进行解析,并将值/数据存储到闪存中(数据存储正在完美进行)。
我从闪存读取数据时,系统上电休息(当设备启动时),读取也是完美的发生。
我在将.hex文件刻录到设备时遇到问题,
我已经为我的项目创建了一个.hex文件,并使用smart snippet工具将固件刻录到自定义设备中。成功编程设备后,我需要让设备停止播发和启动,在执行此操作时,如果我在buring.hex文件后停止设备,我将从闪存缓冲区获得“0xFF”,如果我再次(第二次)停止设备,我将从闪存缓冲区获得默认状态。
我不明白为什么设备需要两次休息才能从闪存缓冲区读取实际数据?
或者我遵循错误的方法从falsh得到默认数据。
我急需解决这个问题,请帮我解决。
感谢和问候
罗希特
设备:
嗨Rajapurerohit,
让我问你几个问题,以便了解你的成就。您烧伤SPI flash与您的固件与使用flash程序员的SmartSnippets工具箱,不是吗?当你下载你的代码并按下重置键后,你能确认你的设备是否正确的广告吗?您可以使用工具箱的Power分析器进行测试。你是否基于我们的SDK示例?如果我能够正确理解,在引导后你想从SPI flash读取一些数据,这是正确的吗?因为你有一个自定义的板和自定义的应用程序代码,这将是非常有帮助的提供我一些额外的输入或截图,以复制你的问题。
谢谢,下午好
你好PM_Dialog,
您烧伤SPI flash与您的固件与使用flash程序员的SmartSnippets工具箱-是的,
下载代码并按“重置”后,请确认您的设备是否正确进行了广告宣传-是的,设备广告
在引导之后,您想要从SPI flash读取一些数据,这是正确的吗?——是的,
在我的固件user_custs1_imple文件,我写了一个函数,我存储数据/读取/从flash。请找到我的文件附在闪存配置和闪存读写读写功能写入。
存储数据闪存缓冲功能-
1.作废设置(作废);
2.空白CombineBDAwithBrightness(无效);
从闪存功能读取数据-
1.空白ReadPIRSettings(无效);
2.空白ui8UpdateLocalDatabase(无效);
当与应用程序断开连接时,我将这些数据存储到闪存[void StoreintoFlash(void)],并在设备启动时从闪存[void ReadfromFlash(void)]读取数据(即,在用户设置文件void periph_init(void);函数中)。
因此,在。hex文件烧录之后,当reset按下我将在缓冲区中获得(255)0xFF,如果再次重置设备,我将获得0x00。在第二次重置后,我的设备工作得很好数据存储和读取也很好。
我想知道为什么这个设备需要两次休息才能正常工作。请帮助我哪里做错了,或者我遵循错误的步骤调试。
感谢和问候
罗希特
嗨Rajapurerohit,
我想你应该在用户应用程序中调用StoreintoFlash(),不是吗?因此,在断开连接之后。请检查您希望从SmartSnippets工具箱的flash编程器写入存储数据的地址,好吗?您是否能够看到仅显示0xFF的预期数据?如果看到0xFF,则表示尚未写入该值。另外,正如我从您发布的代码片段中看到的,您在ReadfromFlash()和StoreintoFlash()中初始化并启用了SPI闪存,但我看不到SPI初始化。请您查看SDK的spi_flash_peripheral示例的spi_flash_peripheral_init()函数,好吗?您是否遵循此示例作为参考?
谢谢,下午好
你好PM_Dialog,
是的,在断开连接后,我正在将数据存储到flash中,但我不明白您提到的遵循的步骤-[您能检查一下您想从SmartSnippets工具箱的flash程序员写入存储的数据的地址吗?你能看到你只看到0xFF的预期数据吗?
你能给我简单介绍一下上述建议的步骤吗?
是的,我遵循了spi_flash()代码,按照我的理解进行了更改,我在初始化步骤中是否做错了什么?
在一个更多的项目中,我面临不同的问题与flash,相同的程序,我已经遵循读/写什么,我正在遵循的当前项目。然而,
在这个项目(另一个项目)中,设备停止广告。
感谢和问候
罗希特Rajapure
嗨Rajapurerohit,
我的意思是从smart snippets工具箱的flash程序员中读取SPI flash。因此,在断开连接后,在不重置电路板的情况下,您可以检查数据是否已成功存储。关于第二个问题,您能在调试模式下运行代码吗?我需要将固件下载到系统RAM中,热连接调试器并检查代码是否卡在某个地方。
谢谢,下午好
嗨PM_Dialog,
感谢您的快速回复,
我已经做了以下步骤,为第一个计划-
1.首先,刻录。hex文件并重置设备[设备广告]
2.其次,我再次按下SmartSnippet工具上的connect选项,然后单击Read选项,看到7000以后的地址数据是0xFF[没有写入数据]
3.第三,我从App (BLE Scanner)分配数据,并重复步骤2,能够看到字段7000的地址
4.从USB断开(断电)设备,然后再次使用USB重新连接(通电),再次重复步骤2,我可以看到数据。
这是我所遵循的正确步骤吗?
关于我的第二个项目-
在调试模式下,代码在任何地方都不会被卡住。我把密码保存了半个小时。该设备仍然可以完美地进行广告宣传。
只有在烧录.hex文件并从应用程序分配数据后,如果我断开设备(USB)并再次接通设备电源(USB),我才能看到我的设备广告。
我的第一个项目,我认为我们可以解决它,但第二个项目,我需要紧急帮助,它是一个大问题。
所以,请帮助解决我的第二个项目广告问题。
感谢和问候
罗希特
嗨Rajapurerohit,
关于您的第一个项目,似乎数据没有写入SPI Flash。我将再次检查您的代码片段。
关于你的第二个项目,我认为你已经烧毁了SPI Flash与你的固件和设备从那里启动。断开后,如果你重置你的板,你能再次广告吗?
谢谢,下午好
你好PM_Dialog,
很抱歉迟了答复。
第一个项目:
这个问题解决了,断电和电源周期后,我的设备广告正常,没有任何问题。
对于第一个项目,问题在于通知功能。由于通知功能的多个副本,设备在断电后未进行广告。现在问题解决了,设备也正常工作。
在第二个项目中:
是的,在。hex文件燃烧和重置检测后,设备正在发布。
现在,对于这两个项目,我面临相同的问题,其中重置检测闪存字段为0xFF,第二个重置后的内存字段为0x00。
感谢和问候
罗希特
嗨Rajapurerohit,
很抱歉耽搁了,但我无法复制您的问题。在向flash写入数据时可能会出现错误。
谢谢,下午好