23个员额/ 0个新员额
最后发表
车道
离线
最后看到:2周6天前
加入:2015-07-14 14:21
SPI Flash读写失败

嗨对话框
我使用了一个外部Flash W25x20的数据存储,但当SPI初始化完成时,我不能读取JEDEC_ID由" JEDEC_ID = spi_read_flash_jedec_id(); "在函数spi_flash_auto_detect();
set_pad_functions()中的接口设置如下:

GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_0, OUTPUT, PID_SPI_CLK, false);
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_6, OUTPUT, PID_SPI_DO, false);
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_3, OUTPUT, PID_SPI_EN, true);
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_5, INPUT, PID_SPI_DI, true);

它在主循环之前初始化:
spi_flash_init (0 x40000, 0 x100);
spi_flash_enable (GPIO_PORT_0 GPIO_PIN_3);
/*
************************************************************************************
*主循环
************************************************************************************
*/
而(1)


我无法读取函数spi_flash_auto_detect()中的JEDEC_ID。这有什么不对吗?

设备:
MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
你好,

你好,

请查看SDK5中的peripheral_examples目录中的spi_flash示例,以检查如何从spi_flash_auto_detect()函数中读取JEDEC_ID。示例代码能够读取W25X20 spi内存闪存是,没有任何修改。

由于MT_dialog

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
我采用了“ble_app_peripheral”示例,并在代码中做了一些更改。到目前为止,我正在使用Keil uVision V5.17.0.0(试用版)和SDK (DA14583)

案例1:在RAM中工作,但在FLASH中不工作
它在RAM(即开发模式)中工作得很好。如果我使用“SmartSnippets”工具在FLASH中下载相同的代码,它是不工作的。即使是我也无法在移动端的android应用程序上看到BLE设备名称(在下载FLASH图像时)。

程序大小:Code=19784 RO-data=3276 RW-data=80 ZI-data=8924

情况2:不能同时在RAM和FLASH中工作
如果代码大小如下所述,则应用程序映像在RAM和FLASH中都不能工作。

程序大小:Code=21612 RO-data=3276 RW-data=80 ZI-data=9004

请帮我解决这个问题。
有任何内存限制。在DA14583中,主引导加载程序和辅助引导加载程序代码将占用多少内存。

LT_Dialog(未验证)
你好,

你好,
当通过SmartSnippets下载您的固件到flash时,请确保选择了'bootable'。或者,您也可以通过定义宏CFG_PRINTF来启用日志打印,以查看固件是否成功执行。

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
我没有使用CFG_PRINTF,而是使用了开发板上的LED指示。我已经注释了我的代码,把LED相关的代码放在BLE外围代码中。我把应用程序的图像(有LED代码+BLE外设代码)在闪光。它在闪光灯下工作。如果我包含我的代码(我的应用程序代码+LED代码+BLE外设代码),两者都在RAM中工作。但如果代码(有我的应用程序代码+LED代码+BLE外设代码)下载在flash中,那么它是不工作的。甚至LED闪烁也不会出现。我怀疑代码的大小可能会产生问题。我遵循正确的程序,能够访问闪存写入应用程序图像。我面临的问题是,只有较大的代码大小。 Please help to resolve the issue.

MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

在583中没有任何特殊的代码限制,由于代码大小的原因,代码从SYSRAM运行(我假设你是通过keil下载的)而不是通过flash工作,这有点奇怪。我想代码根本不会从flash中启动,因为某些原因,或者如果你使用sleep,它可能永远不会醒来。可以检查是否可以通过flash启动使用接近的例子,它有比您的自定义应用程序更大的代码(code =23636 RO-data=3220 RW-data=128 ZI-data=8008)。另外,为了检查应用程序是否正确引导和启动,可以在系统启动时通过peripher_init函数打开该LED,以检查应用程序是否启动。

由于MT_dialog

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
我尝试了“prox_reporter”的例子。Prox_reporter在RAM和Flash中工作,但代码大小是
程序大小:Code=22868 RO-data=3220 RW-data=128 ZI-data=8008(在uVision V5.17.0.0中)。
我会按照你的建议去检查。这里的疑问是,我的应用程序映像是工作在RAM,为什么它不工作在Flash。
有这样的背景吗?

LT_Dialog(未验证)
你好,

你好,
当通过SmartSnippets将固件刷新为flash时,是否选择了引导?另外,记得在写之前要擦除。

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03


我擦除然后烧应用程序图像。我只选择了可引导…

MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

关于接近的例子,我一直在寻找一个修改的接近程序,为什么我的接近代码更大,但即使这样,图像比您试图下载的自定义程序更大,所以我不认为有大小问题。一定是应用程序出了问题,在您的自定义代码中,您是否与SPI进行了接口?另外,请确保您的代码从SPI启动,确保程序在启动时在580中下载,尝试在外围初始化时用LED检查它。

由于MT_dialog

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03


我有两个自定义应用程序(即custo雷竞技安卓下载m1和custom2)。在custom1中,我使用SPI从flash中获取应用程序特定的数据。在custom2中,我根本没有使用SPI。对于custom1和custom2应用程序,我都面临着同样雷竞技安卓下载的问题(即工作在RAM(开发模式)和不工作在Flash(即运行模式))。请给出信息,我需要做什么配置,在运行模式下运行应用程序映像(即从闪存启动)。

MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

从SPI运行自定义应用程序没有特定的配置,您所需要做的只是刻录应用程序,使用智能片段并在SM要求时将映像标记为可引导的。因为你可以运行其他应用程序(参考设计等)通过SPI但不是您的自定雷竞技安卓下载义应用程序我觉得问题在于您的自定义应用程序代码(当你说自定义1,自定义2我假设你的意思应用程序配置文件中包含您的自定义代码)。因为你是与SPI内存和它的工作原理SRAM通过SPI我会怀疑,但当引导SPI访问你的代码有问题,你可以试着删除SPI从您的自定义应用程序的访问,并且试图从SPI引导。也许与您提到的特定于应用程序的数据有某种冲突,这些数据是如何通过Smart Snippets和适当的头文件程序员加载到SPI的?检查存储这些数据的偏移量。

由于MT_dialog

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
我使用Smart Snippet工具在Flash中写入应用程序特定的数据。我从0x16000位置开始写应用程序特定的数据。

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
我是否可以将应用程序图像和应用程序特定的数据保存在任何内存区域中,而不是DA14583的内部Flash。

每次我读取1024字节的应用程序特定的数据从Flash。是每次可从闪存读取的数据大小的任何限制。
初始的5到6个周期的读取(即1024字节从Flash读取),它正在快速完成。但在那之后,每个阅读周期大约需要10秒。我不明白为什么要花这么多时间从Flash读取1024字节。只有当应用程序映像是用Flash编程时,才会占用这么多时间。在开发模式下,阅读周期很快就结束了。我怀疑引导加载程序代码干扰发生之间。请给出解决阅读周期延迟的建议。

LT_Dialog(未验证)
你好,

你好,
我们还需要缩小你首先遇到的问题的范围。
从长时间读取的值是否仍然正确?
项目中的睡眠设置是什么,ARCH_SLEEP_OFF, ARCH_EXT_SLEEP_ON还是ARCH_DEEP_SLEEP_ON?如果不是,请使用ARCH_SLEEP_OFF,只是为了简化问题。
你也可以监控SPI CS引脚吗?在长时间读取的情况下,应该观察到SPI CS引脚长时间保持低电平。
你能不能用更小的块(比如512/256字节)进行连续读取,然后看看结果是什么?

对于SPI读取没有特别的限制。
当应用程序运行时,引导加载程序不存在。

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
它花费了很长时间以及读取值,而不是预期的值。
我们项目中的睡眠设置仅为ARCH_SLEEP_OFF。
如何观察SPI CS状态。我需要将CRO探针连接到哪个引脚上。
我试着在每次迭代中读取256字节,但仍然得到的都是零。

请帮我检查SPI CS引脚的状态,同时从内部Flash读取数据。

MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

这听起来好像你的SPI是在power down模式,你重新启用你的SPI开始读取,你调用spi_flash_release_from_power_down();为了从电源关闭释放SPI ?583 OTP中的辅助引导加载程序将在引导后关闭flash。CS引脚是583芯片上的2_3引脚。

由于MT_dialog

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
这些信息对我识别问题有很大帮助。
我尝试了“spi_flash_release_from_power_down()”函数,但没有工作。后来我尝试了“spi_flash_enable()”函数,使用这个函数我能够正确地读取应用程序特定的数据。

非常感谢你提供的信息。

我需要一些关于单个应用程序图像的最大尺寸的信息,我可以保持在内部flash(这可以工作)。这意味着我想知道应用程序大小限制。

MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

你在flash中刻录和从580运行的最大应用程序取决于580而不是flash。限制是42KB的Sysram可用,在那你将不得不计算交换的内存堆等,关于这方面的更多信息,请检查UM-B-011内存映射和分散文件。还要注意,keil的评估许可证有32K的限制。

由于MT_dialog

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
我已经采取BLE外设代码和编辑。到目前为止,我可以在BLE外设中使用写回调和通知回调。但我不能使用读回调BLE外围代码。请指导我在哪里可以得到读回。我需要使用哪个文件和函数来从BLE客户端(即移动设备)访问返回到BLE服务器(即Dialog Semiconductors)开发板的Readcall。雷竞技电竞平台

MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

读回调?您指的是一个回调,它将指示客户端已经从对等端读取数据,这种处理程序不存在,指示客户端从对等端读取数据没有达到应用程序级别。

由于MT_dialog

马赫什
离线
最后看到:3年3个月前
加入:2016-01-04 14:03
你好,

你好,
我正在将DA14583与I2C从设备接口。有时我可以从I2C从设备读取数据。但有时,加工过程会受到打击
“WAIT_UNTIL_NO_MASTER_ACTIVITY()”(即在I2C驱动器)无限期的时间。处理器在提到的指令上被攻击的任何特定原因。

请指导我解决这个问题。

LT_Dialog(未验证)
嗨的卖方,

嗨的卖方,
你可以为你遇到的i2c问题创建另一个线程吗?对于论坛用户来说,搜索类似的主题会更容易。谢谢您的理解。

主题锁定