SmartSnippers Ver3.9擦除DA14580带16M(字节)Flash失败!但我可以擦除扇区

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
kurbylee.
离线
最后一次露面:3年6个月前
加入:2014-11-05 09:10
SmartSnippers Ver3.9擦除DA14580带16M(字节)Flash失败!但我可以擦除扇区

嗨,对话框:
我在我的项目中使用闪存(16m字节)使用da14580。订单以使其工作:
1> SPI_FLAH.h,我添加了代码,如下所示:
// 5. W25Q128JV(128MB / 16MB)
#define spi_flash_device_index_w25q128jv 4.
#define w25q128jv_man_dev_id 0xef17.
#define w25q128jv_jedec_id 0xef4018.
#define w25q128jv_jedec_id_matching_bitmask 0xffffff.
#define w25q128jv_total_flash_size 0x20000 // 0x40000 // 0xffffff // 0x1000000 // 16m = 0x1000000
#define w25q128jv_page_size 0x100.
#define w25q128jv_mem_prot_bitmask(0x1c)
#define w25q128jv_mem_prot_none 0.
#define w25q128jv_mem_prot_upper_quarter 4.
#define w25q128jv_mem_prot_upper_half 8.
#define w25q128jv_mem_prot_lower_quarter 36.
#define w25q128jv_mem_prot_lower_half 40.
#define w25q128jv_mem_prot_all 12.

2>在spi_flash.c中添加代码
const spi_flash_device_parameters_by_jedec_id_t spi_flash_known_devices_parameters_list [] =
{
{w25x10_jedec_id,w25x10_jedec_id_matching_bitmask,w25x10_total_flash_size,w25x10_page_size,w25x_mem_prot_bitmask,w25x10_mem_prot_none},
{w25x20_jedec_id,w25x20_jedec_id_matching_bitmask,w25x20_total_flash_size,w25x20_page_size,w25x_mem_prot_bitmask,w25x20_mem_prot_none},
{at25dx011_jedec_id,at25dx011_jedec_id_matching_bitmask,at25dx011_total_flash_size,at25dx011_page_size,at25dx011_mem_prot_bitmask,at25dx011_mem_prot_none},
{mx25v1006e_jedec_id,mx25v1006e_jedec_id_matching_bitmask,mx25v1006e_total_flash_size,mx25v1006e_page_size,mx25v1006e_mem_prot_bitmask,mx25v1006e_mem_prot_none},
{w25q128jv_jedec_id,w25q128jv_jedec_id_matching_bitmask,w25q128jv_total_flash_size,w25q128jv_page_size,w25q128jv_mem_prot_bitmask,w25q128jv_mem_prot_none},
};

3>编译程序员项目并获得flash_programmer.bin
4>将bin文件复制到d:\ app \ smartsnippets3.9 \ workspace \资源;
5>使用UART运行SmartSnippets3.9并连接DA14580
[动作@ 17-09-29 19:09:10]请按电路板上的硬件重置按钮开始下载过程。
[INFO @ 17-09-29 19:09:14]重置检测到
[info @ 17-09-29 19:09:16]成功与COM5端口断开连接。
[信息@ 17-09-29 19:09:16]与COM5端口的连接已成功打开。
[info @ 17-09-29 19:09:16]成功与COM5端口断开连接。
[info @ 17-09-29 19:09:16]成功下载了固件文件到电路板。
[info @ 17-09-29 19:09:16]成功配置了SPI闪存端口和引脚。

6>填充SmartSnippets3.9中的偏移0x0,然后单击按钮(擦除扇区),现在将0到0x07FFF的所有数据到0xFF
[信息@ 17-09-29 19:11:52]与COM5端口的连接已成功打开。
[info @ 17-09-29 19:11:52]成功与COM5端口断开连接。
[info @ 17-09-29 19:11:52] SPI记忆擦除成功完成。
[信息@ 17-09-29 19:11:52]阅读内存以验证其内容擦除后...
[信息@ 17-09-29 19:11:52]与COM5端口的连接已成功打开。
[info @ 17-09-29 19:11:53]成功与COM5端口断开连接。
[info @ 17-09-29 19:11:53]验证成功。
[info @ 17-09-29 19:11:53]阅读内存刷新表内容....
[信息@ 17-09-29 19:11:54]与COM5端口的连接已成功打开。
[信息@ 17-09-29 19:12:00]成功与COM5端口断开了连接。
[info @ 17-09-29 19:12:00]阅读已经完成了。阅读32768字节。

7>更改偏移量为0x20000,然后单击按钮(擦除扇区),似乎都很好。
[信息@ 17-09-29 19:15:19]与COM5端口的连接已成功打开。
[info @ 17-09-29 19:15:20]成功与COM5端口断开了连接。
[info @ 17-09-29 19:15:20] SPI记忆擦除成功完成。
[info @ 17-09-29 19:15:20]阅读内存以验证其内容擦除后...
[信息@ 17-09-29 19:15:20]与COM5端口的连接已成功打开。
[信息@ 17-09-29 19:15:21]成功与COM5端口断开连接。
[info @ 17-09-29 19:15:21]验证成功了。
[info @ 17-09-29 19:15:21]阅读内存以刷新表内容....
[信息@ 17-09-29 19:15:21]与COM5端口的连接已成功打开。
[Info @ 17-09-29 19:15:27]从COM5端口已成功断开连接。
[info @ 17-09-29 19:15:27]阅读已经完成。阅读32768字节。

8>将偏移量更改为0x0,然后单击“按钮擦除”,“红色错误”来自:(发生超时)
[信息@ 17-09-29 19:15:21]与COM5端口的连接已成功打开。
[Info @ 17-09-29 19:15:27]从COM5端口已成功断开连接。
[info @ 17-09-29 19:15:27]阅读已经完成。阅读32768字节。
[信息@ 17-09-29 19:17:26]与COM5端口的连接已成功打开。
[错误@ 17-09-29 19:17:36]超时等待收到数据包长度最高的字节(10000毫秒)
[Info @ 17-09-29 19:17:36]成功与COM5端口断开连接。
[错误@ 17-09-29 19:17:36] SPI内存擦除失败。

9>我尝试更改max_ready_wait_count,但没有什么不同。
#define max_ready_wait_count(0xffffffff)// 2000000 * 10

10>我删除了第一个扇区并将App_Image下载到Flash,然后将App运行正常。

11>我尝试将W25q128jv_total_flash_size的值重新定义为其他0x20000,400,80000等,我得到了相同的结果。

问题:
如何用一个单击擦除按钮擦除闪存,至少从0x0〜0x20000擦除?因为我有多映像(引导加载程序,app,font_resource)需要刻录到闪存。

谢谢!

设备:
mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨Kurbylee,

嗨Kurbylee,

也许你可以尝试使用新的智能片段工具箱,并试一试,我没有看到你在代码中所拥有的添加中的任何东西。还会在您不要推擦扇区时会发生什么,并且您在智能片段版本上点击擦除命令?也无论智能片段报告如何检查闪光灯是否被删除了?

谢谢mt_dialog.

kurbylee.
离线
最后一次露面:3年6个月前
加入:2014-11-05 09:10
谢谢!

谢谢!
我通过在函数spi_flash_chip_erase中添加一些代码来解决问题,如下所示:

INT8_T SPI_FLASH_CHIP_ERASE(void)
{
UINT8_T状态;

if(spi_flash_set_write_enable()!= err_ok)//发送[写入启用]指令
返回err_timeout;

if(spi_flash_size <0x40000)
{
spi_set_bitmode(spi_mode_8bit);
spi_transaction(chip_erase);//芯片擦除命令
status = spi_flash_wait_till_ready();
}
别的
{
UINT32_T地址= 0;
//虽然(address0x40000
而(地址<0x40000)
{
spi_flash_block_erase(地址,block_erase_64);
status = spi_flash_wait_till_ready();
如果(状态!= err_ok)中断;
地址+ = 64 * 1024;
}

}

返回状态;
}

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨Kurbylee,

嗨Kurbylee,

感谢您的表明,希望它将有助于很多用户。

最好的问候mt_dialog.