你好,
我正在使用来自上述SDK的BLE外围示例代码,其中设备是基于连接的基本标准,其使用特征和以广告数据的形式交换数据。
我在基于连接的模式下收到大约200个字节的数据,就我在本地存储的特征,
现在我想在闪存上存储此数据,以便在重新供电后可以重新获得(恢复)此数据(即,关闭设备,然后再次打开设备)设备
我已经实现了这个闪存读写,当我检查调试时,所有事情都在运行正常,我已经测试了以下步骤
(1.我获取本地存储的特征的数据,然后在闪存上存储。
2.然后我断电设备,闪存写成部分从我的代码中注释。
然后我再次运行Periph_init函数本身的代码我读取了闪存)
在调试中,读/写闪光操作正好工作
However when i flash the same code(i.e., in this code i Write to flash On request from BLE and i Read Flash in periph_init Function) on custom Board (DA14583 MCU) as well as on the DA14583 Dev Kit, The device stops advertising and may be it is entering into some Handler
所以请帮助我最早解决问题,我已经分享了以下代码下面的所需文件
感谢致敬
rohit.
设备:
嗨rajapiroerohit,
正如您所说,该程序在RAM调试阶段期间按预期运行。
在下面的一步是在闪存上编程后停止为您工作吗?
1.启动和宣传(闪存编程后第一次)
2.通过BLE接收数据并写入Flash
3,读取和验证数据闪存
4.关闭/ HW重置
5.启动并宣传
6.验证数据仍在闪存上
嗨qinjiny_dialog,
我面临问题,
2.通过BLE接收数据并写入闪光灯。
但现在我面临着不同的问题,我注意到DA14583具有内部闪存,它们已经保留,但如果我使用它们定义,我将获得GPIO引脚未保留GPIO引脚。
而且我也将目标80变为83,在DEV-套件上运行代码,设备广告在一段时间后停止。
我使用了DA14580 MCU代码BLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PERAWAL,并对读/写闪存进行了必要的更改。你能在哪里做错了吗?
感谢致敬
rohit.
嗨rajapurerohit,
正如我在另一个帖子中所说的那样,请确保将该项目构建为DA14583目标,并且不会为闪存手动预留GPIO。
布罗尔,
秦金阳
秦金杨,
是的,我看到并将目标更改为83,但正如我在帖子之前所说的那样,将目标更改为83并在DEV-套件上运行83 MCU,设备在某个时候停止广告。
因此,我在调试模式下保留了83个设备开发套件并转储代码并尝试使用BLE写入数据。我已经注意到,当调用storeflashdata()[我写入存储数据]函数时,代码正在输入nmi_handler。
接下来已配置保留的闪存引脚并在调试模式下刻录代码,这是它的工作,我的意思是代码没有进入NMI_Hanlder。但是如果我在我的自定义板中闪存代码并使用ble分配数据,则设备挂断方式意味着它断开并停止广告。请帮我解决这个问题,让我解决。
请步骤,我遵循读/写闪光灯
1.根据您的建议,我已将目标设备更改为83。
2.没有手动保留别针
3.配置83中的已保留的闪存引脚在user_periph_setup.c文件中。附件是狙击手
/ ************* SPI Flash引脚配置**************************** /
gpio_configurepin(gpio_port_2,gpio_pin_3,输出,pid_spi_en,true);
gpio_configurepin(gpio_port_2,gpio_pin_0,输出,pid_spi_clk,false);
gpio_configurepin(gpio_port_2,gpio_pin_9,输出,pid_spi_do,false);
gpio_configurepin(gpio_port_2,gpio_pin_4,输入,pid_spi_di,false);
4.在调试模式下连接了83个Dev套件,并使用上述配置刻录代码
5.能够使用BLE将数据分配给设备。
6.断开设备并再次启动并调试代码并能够在闪存缓冲区上查看存储的数据。
7.调试测试后,将.hex文件刻录到我的自定义板上进行测试。
8.定制板开始广告并已使用BLE应用程序(BLE扫描仪)连接
9.我使用BLE将数据分配给定制板,每当用户断开APP连接时,我都称为FlashStore函数。
然后我断电,然后在分钟内再次通电设备[使用VCC和GND]。
11.设备停止广告,无法在此之后看到定制板。
感谢致敬
rohit.
嗨rajapurerohit,
感谢您上面详细信息。这就是为什么我问你实际出错的地方。该程序在RAM上运行井,并从Flash靴子第一次没有问题,但在您的Flash写入操作后停止工作。
您可能必须检查您写入的闪存地址是否在代码大小内,因为它看起来像书面数据以某种方式损失了闪存上的存储代码,并使其无法再次启动。
BR,秦津
Qinjin,
我所做的是,首先使用SmartSnippet闪烁基本代码,然后注意到一个地址0x06E38并进一步使用此地址。
附加是我使用的代码片段。你能否检查它是正确还是错误的方式我在做什么?
我观察到的一件事是代码没有进入spi_flash_block_erase();功能。
************************************************************************************** /
void stortintoflash(空白)
{
spi_flash_init(spi_flash_default_size,spi_flash_default_page);
spi_flash_enable(gpio_port_2,gpio_pin_3);
spi_flash_set_write_enable();
spi_flash_block_erase(0x06e38,sector_erase);
spi_flash_write_data(wrflash_data,0x06e38,write_size);
}
感谢致敬
rohit.
嗨rajapurerohit,
请尝试使用其他地址,如0x7000,并查看问题是否仍然存在。
嗨qinjiny,
感谢你的回复,
我会尝试这个地址,让你知道结果。
还有一件事我观察到,如果我评论storeflashdata()和readflashdata()。并将.hex文件刻录到83开发套件中,然后设备也停止广告,一旦电源关闭并加电设备。
感谢致敬
rohit.
嗨rajapurerohit,
是的,请让我们知道并感谢您的迹象。如果您发现任何上述答案有用,请将其中一个标记为已接受。
谢谢,PM_DIALOG.
嗨Qinjiny.
我改变了地址,现在我能够存储和阅读我的自定义数据。
我会再次测试一次并更新您的同样。
非常感谢你的不断帮助,它真的帮助我通过我发行。
再次感谢你的帮助。
感谢致敬
rohit.
嗨rajapurerohit,
很高兴你识上你的问题。如果您发现任何上述答案有用,请将其中一个标记为已接受。
谢谢,PM_DIALOG.