你好,
我使用来自上述SDK的BLE外设示例代码,其中设备是基于连接的信标,使用特征交换数据,也以广告数据的形式。
我在基于连接的模式下收到大约200个字节的数据,就我在本地存储的特征,
现在我想在闪存上存储此数据,以便在重新供电后可以重新获得(恢复)此数据(即,关闭设备,然后再次打开设备)设备
我已经实现了这个Flash读写,当我检入调试所有的事情都工作良好,我已经测试如下所示的步骤
(1.我获取本地存储的特征的数据,然后在闪存上存储。
2.然后,我关闭了设备和Flash写入部分是从我的代码注释。
3.然后我再次运行代码,其中在外围_init函数本身,我读Flash)
在调试读/写Flash操作工作完美
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.启动和广告(flash编程后第一次)
2.通过BLE接收数据并写入闪存
3,读取和验证数据闪存
4.关闭/ HW重置
5.启动和宣传
6.验证数据仍在闪存上
嗨Qinjiny_Dialog,
我面临问题,
2.通过BLE接收数据并写入flash。
但现在我面临着不同的问题,我注意到DA14583具有内部闪存,它们已经保留,但如果我使用它们定义,我将获得GPIO引脚未保留GPIO引脚。
而且我也将目标80变为83,在DEV-套件上运行代码,设备广告在一段时间后停止。
并且我已经使用了DA14580 MCU代码ble_peripheral,并做了必要的改变来读写flash。你能帮我做错什么吗?
感谢致敬
rohit.
嗨rajapurerohit,
正如我在另一个帖子中所说的那样,请确保将该项目构建为DA14583目标,并且不会为闪存手动预留GPIO。
布罗尔,
秦金阳
秦金杨,
是的,我看到并将目标改为83,但正如我在你的帖子之前所说,将目标改为83,并在带有83 MCU的开发工具包上运行,设备在一段时间后停止广告。
因此,我在调试模式下保留了83个设备开发套件并转储代码并尝试使用BLE写入数据。我已经注意到,当调用storeflashdata()[我写入存储数据]函数时,代码正在输入nmi_handler。
接下来已经配置了保留的闪存引脚和烧录代码在调试模式,这是工作的,我的意思是代码没有进入nmi_handler。但如果我在我的定制板上闪现代码,并使用BLE分配数据,设备挂起意味着它断开和停止广告。请帮我解决这个我急需解决的问题。
请步骤,我遵循读/写闪光灯
1.根据您的建议,我已将目标设备更改为83。
2.没有手动保留别针
3.配置83中的已保留的闪存引脚在user_periph_setup.c文件中。附件是狙击手
/ ************* SPI Flash引脚配置**************************** /
GPIO_ConfigurePin(GPIO_PORT_2, GPIO_PIN_3, OUTPUT, PID_SPI_EN, true);
GPIO_ConfigurePin(GPIO_PORT_2, GPIO_PIN_0, OUTPUT, PID_SPI_CLK, false);
GPIO_ConfigurePin(GPIO_PORT_2, GPIO_PIN_9, OUTPUT, PID_SPI_DO, false);
GPIO_ConfigurePin(GPIO_PORT_2, GPIO_PIN_4, INPUT, PID_SPI_DI, false);
4.在调试模式下连接83开发套件并刻录上述配置的代码
5.能够使用BLE将数据分配给设备。
6.断开设备,再次上电并调试代码,并能够看到存储在闪存缓冲区上的数据。
7.调试测试后,烧。hex文件到我的自定义板测试。
8.自定义板开始广告,并已连接使用BLE app (BLE Scanner)
9.我使用BLE将数据分配给定制板,每当用户断开APP连接时,我都称为FlashStore函数。
10.然后我关闭设备,并在一分钟内再次启动设备[使用VCC和GND]。
11.设备停止广告,无法看到自定义板后。
感谢致敬
rohit.
嗨rajapurerohit,
感谢您提供以上的详细信息。所以我才问你到底哪里出了问题。该程序在RAM上运行良好,并从flash启动第一次没有问题,但停止工作后,您的flash写入操作。
您可能必须检查所写入的flash地址是否在代码大小之内,因为所写入的数据似乎以某种方式破坏了存储在flash上的代码,使其无法再次启动。
BR, Qinjin
嗨Qinjin,
我所做的是,首先使用SmartSnippet闪烁基本代码,然后注意到一个地址0x06E38并进一步使用此地址。
附件是我使用的代码片段。你能检查一下我做的是对的还是错的吗?
我观察到的一件事是代码没有进入spi_flash_block_erase();函数。
**************************************************************************************/
空白StoreintoFlash(空白)
{
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 (0 x06e38 SECTOR_ERASE);
spi_flash_write_data (wrflash_data,0 x06e38 write_size);
}
感谢致敬
rohit.
嗨Rajapurerohit,
请尝试使用其他地址,如0x7000,看看问题是否仍然存在。
嗨qinjiny,
感谢你的回复,
我会试试这个地址,然后告诉你结果。
还有一件事我观察到,如果我评论storeflashdata()和readflashdata()。并将.hex文件刻录到83开发套件中,然后设备也停止广告,一旦电源关闭并加电设备。
感谢致敬
rohit.
嗨rajapurerohit,
好的,请告诉我们,谢谢你的指示。如果您认为以上答案中有任何一个有用,请将其中一个标记为已接受。
谢谢,PM_Dialog
嗨qinjiny.
我改变了地址,现在我能够存储和阅读我的自定义数据。
我将再次测试,并更新相同的你。
非常感谢你一直以来的帮助,它真的帮助我度过了难关。
再次感谢你的帮助。
感谢致敬
rohit.
嗨rajapurerohit,
很高兴你识上你的问题。如果您认为以上答案中有任何一个有用,请将其中一个标记为已接受。
谢谢,PM_Dialog