你好,
我正在使用来自上述SDK的BLE外围示例代码,其中设备是基于连接的基本标准,其使用特征和以广告数据的形式交换数据。
我收到大约200字节的数据在连接基于模式下,根据我在本地存储的特征,
现在我想在Flash上存储这些数据,以便我可以重新恢复(恢复)这些数据后,重新上电(即,关机设备,然后再次上电设备)设备
我已经实现了这个闪存读写,当我检查调试时,所有事情都在运行正常,我已经测试了以下步骤
( 1.我得到数据的特点,这是本地存储,然后我存储在Flash上。
2.然后我断电设备,闪存写成部分从我的代码中注释。
然后我再次运行Periph_init函数本身的代码我读取了闪存)
在调试中,读/写闪光操作正好工作
然而,当我闪现相同的代码(即。,在这个代码中,我写flash从BLE的请求和我读flash在边缘的init函数)在自定义板(DA14583 MCU)以及在DA14583开发套件,设备停止广告,可能它正在进入一些处理程序
所以请帮助我最早解决问题,我已经分享了以下代码下面的所需文件
感谢致敬
罗希特
设备:
嗨Rajapirerohit,
正如您所说,该程序在RAM调试阶段期间按预期运行。
在下面哪个步骤,它停止工作为您在flash编程后?
1.启动和宣传(闪存编程后第一次)
2.通过BLE接收数据并写入Flash
读取并验证数据是否在flash上
4.关机/ HW重置
5.启动并宣传
6.确认数据还在闪存里
嗨qinjiny_dialog,
我面临的问题是,
2.通过BLE接收数据并写入闪光灯。
但是现在我面临不同的问题,我注意到DA14583有内部闪存,它们已经被保留了,但如果我按照定义使用它们,我得到的GPIO引脚没有被保留。
我也改变了目标80到83,在开发工具包上运行代码,设备广告在一段时间后停止。
我使用了DA14580 MCU代码BLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PLE_PERAWAL,并对读/写闪存进行了必要的更改。你能在哪里做错了吗?
感谢和问候
罗希特
嗨Rajapurerohit,
正如我在另一篇文章中说的,请确保你构建的项目为DA14583目标,不要手动为flash保留GPIO。
BR,
Qinjin杨
嗨Qinjin杨,
是的,我看到并将目标更改为83,但正如我在帖子之前所说的那样,将目标更改为83并在DEV-套件上运行83 MCU,设备在某个时候停止广告。
所以我保持83设备开发套件在调试模式,转储代码,并尝试使用BLE写数据。我注意到,当storeflashdata()[我已经编写来存储数据]函数被调用时,代码进入nmi_handler。
接下来已配置保留的闪存引脚并在调试模式下刻录代码,这是它的工作,我的意思是代码没有进入NMI_Hanlder。但是如果我在我的自定义板中闪存代码并使用ble分配数据,则设备挂断方式意味着它断开并停止广告。请帮我解决这个问题,让我解决。
请按照我所遵循的步骤读写flash
1.按照你的建议,我已经将目标设备更改为83。
2.没有手动保留引脚
3.在user_外围_setup.c文件中配置已经预留的83的flash引脚。附件是代码片段
/************* 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分配数据到自定义板,我已经调用flashstore函数,每当用户断开从应用程序。
然后我断电,然后在分钟内再次通电设备[使用VCC和GND]。
11.设备停止广告,无法在此之后看到定制板。
感谢和问候
罗希特
嗨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);
}
感谢和问候
罗希特
嗨rajapurerohit,
请尝试使用其他地址,如0x7000,并查看问题是否仍然存在。
嗨Qinjiny,
感谢您的回复,
我会尝试这个地址,让你知道结果。
我还注意到一件事,如果我注释掉storeflashdata()和readflashdata()。将。hex文件刻录到83个开发套件中,然后设备停止广告,一旦它关闭并启动设备。
感谢和问候
罗希特
嗨Rajapurerohit,
是的,请让我们知道并感谢您的迹象。如果您发现任何上述答案有用,请将其中一个标记为已接受。
谢谢,PM_DIALOG.
嗨Qinjiny
我已经改变了地址,现在我可以存储和读取我的自定义数据。
我会再次测试一次并更新您的同样。
非常感谢你的不断帮助,它真的帮助我通过我发行。
再次感谢您的帮助。
感谢和问候
罗希特
嗨Rajapurerohit,
很高兴你解决了自己的问题。如果您发现任何上述答案有用,请将其中一个标记为已接受。
谢谢,PM_DIALOG.