嗨对话框
我使用一个外部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。这是不对的吗?
设备:

你好,
请查看SDK5中的peripheral_examples目录中的spi_flash示例,检查JEDEC_ID是如何从spi_flash_auto_detect()函数中读取的。示例代码能够读取一个W25X20 spi内存闪存,没有任何修改。
由于MT_dialog
你好,
我以“ble_app_peripheral”为例,并在代码中做了一些更改。现在我使用Keil uVision V5.17.0.0(试用版)和使用SDK (DA14583)
情况1:在RAM中工作,但不能在FLASH中工作
它在RAM(即开发模式)中工作良好。如果相同的代码我下载在FLASH中使用“SmartSnippets”工具,它是不工作。甚至我都不能看到BLE设备名称的移动端android应用程序(下载图像在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中,主引导加载程序代码和辅助引导加载程序代码将占用多少内存。
你好,
当通过SmartSnippets下载你的固件到flash时,请确保选择了“可启动”。或者还可以通过定义宏CFG_PRINTF来启用日志打印,以查看固件是否成功执行。
你好,
我在开发板上使用了LED指示,而不是使用CFG_PRINTF。我已经注释了我的代码,把LED相关的代码在BLE外围代码。我已经把应用图像(有LED代码+BLE外围代码)放在flash中。它在flash中工作。如果我包括我的代码(有我的应用程序代码+LED代码+BLE外围代码),两者都在RAM中工作。但是如果代码(我的应用程序代码+LED代码+BLE外围代码)下载在flash中,那么它是不工作的。连LED闪烁也不来。我怀疑代码大小可能会产生一个问题。我遵循正确的程序,并能够访问闪存写入应用程序的图像。我面临的问题是,只有更高的代码大小。 Please help to resolve the issue.
嗨的卖方,
在583中没有任何特殊的代码限制,它有点奇怪的代码从SYSRAM运行(我认为你通过keil下载),而不是通过flash由于代码大小。我认为代码根本不从flash启动出于某些原因,或者如果您使用睡眠,也许它永远不会醒来。可以检查你是否可以通过flash使用接近的例子,它有比你的自定义应用程序更大的代码(code =23636 RO-data=3220 RW-data=128 ZI-data=8008)。另外,为了检查应用程序是否正确启动,当系统启动时,你可以在外围_init函数中打开LED,以检查应用程序是否启动。
由于MT_dialog
你好,
我尝试以“prox_reporter”为例。Prox_reporter在RAM和Flash中工作,但代码大小是
程序大小:代码=22868 RO-data=3220 RW-data=128 ZI-data=8008(在uVision V5.17.0.0)。
我会按照你的建议进行检查。这里怀疑的是,我的应用图像是工作RAM,为什么它不工作在Flash。
有这样的背景吗?
你好,
是否可启动选择时,通过SmartSnippets将固件闪烁到flash ?另外,记得在写之前先擦除。
嗨
我擦除,然后烧应用程序图像。我选择了只能引导的..
嗨的卖方,
关于接近的例子,我一直在看一个修改过的接近程序,为什么我的接近代码更大,但即使如此,图像比您试图下载的自定义程序更大,所以我认为大小没有问题。一定是应用程序出了问题,在您的自定义代码中您是否与SPI进行了接口?另外,请确保您的代码从SPI启动,确保程序在580启动时下载,在外设初始化时试着用LED检查它。
由于MT_dialog
嗨
我有两个自定义应用程序(即custo雷竞技安卓下载m1和custom2)。在custom1中,我使用SPI从flash中获取特定于应用程序的数据。在custom2中,我根本不用SPI。对于custom1和custom2应用程序,我面临相同的问雷竞技安卓下载题(即工作在RAM(在开发模式)和不工作在Flash(即运行模式))。请给出信息,我需要做什么配置,以运行模式运行应用程序映像(即从闪存启动)。
嗨的卖方,
从SPI运行自定义应用程序没有特定的配置,您所需要做的就是烧掉应用程序,使用智能代码段并在SM要求时将图像标记为可启动的。因为你可以运行其他应用程序(参考设计等)通过SPI但不是您的自定雷竞技安卓下载义应用程序我觉得问题在于您的自定义应用程序代码(当你说自定义1,自定义2我假设你的意思应用程序配置文件中包含您的自定义代码)。因为你是与SPI内存和它的工作原理SRAM通过SPI我会怀疑,但当引导SPI访问你的代码有问题,你可以试着删除SPI从您的自定义应用程序的访问,并且试图从SPI引导。也许与您提到的特定于应用程序的数据存在某种冲突,这些数据是如何通过智能片段和适当的头程序员加载到SPI的?检查存储这些数据的偏移量。
由于MT_dialog
你好,
我使用智能代码片段工具编写的应用程序特定的数据在Flash。我正在编写从0x16000位置开始的应用程序特定数据。
你好,
我是否可以将应用程序图像和应用程序特定的数据保留在DA14583的内部Flash之外的任何内存区域。
每次我读取1024字节的应用程序特定的数据从Flash。对每次从flash中读取的数据大小有任何限制。
最初的5到6个周期的读取(即1024字节的读取从Flash),它是很快完成。但在此之后,对于每个读取周期,它大约需要10秒。我不明白,为什么要花这么多时间从Flash读取1024字节。只有当应用程序图像是用Flash编写时,才会花费这么多时间。在开发模式下,读取周期很快完成。我怀疑在两者之间会发生引导加载程序代码干扰。请给出解决阅读周期延迟的方法。
你好,
我们还需要缩小你首先遇到的问题的范围。
从那些长时间的读取中读取的值仍然如预期的正确吗?
什么是睡眠设置在您的项目,ARCH_SLEEP_OFF, ARCH_EXT_SLEEP_ON或ARCH_DEEP_SLEEP_ON?如果不是,请使用ARCH_SLEEP_OFF,只是为了简化问题。
你也可以监控SPI CS引脚吗?在长时间读取的情况下,应该观察到SPI CS引脚长时间保持在低水平。
你能连续读取更小的块吗,比如512/256字节等等,然后看看结果是什么?
SPI读取没有特别的限制。
当应用程序运行时,引导加载程序不存在。
你好,
它花费了很长时间,并且读取的值不是预期的值。
我们的项目中的睡眠设置仅为ARCH_SLEEP_OFF。
如何观察SPI CS状态。我需要把CRO探针连接到哪个针上。
我尝试在每次迭代中读取256字节,但仍然得到所有的0。
请帮我检查一下SPI CS引脚的状态,同时从内部Flash读取数据。
嗨的卖方,
听起来好像您的SPI处于关机模式,您是否在开始读取之前重新启用SPI,是否调用spi_flash_release_from_power_down();来解除SPI的供电?583 OTP中的辅助引导加载程序将在引导后关闭flash。CS引脚是583芯片上的2_3引脚。
由于MT_dialog
你好,
这些信息帮助我找到了问题所在。
我尝试了“spi_flash_release_from_power_down()”函数,但没有工作。后来我尝试了“spi_flash_enable()”函数,通过这个函数我能够正确地读取应用程序特定的数据。
非常感谢你提供的信息。
我需要一些信息,关于单个应用程序图像的最大大小,我可以在内部flash(这可以工作)。这意味着我想知道应用程序大小限制。
嗨的卖方,
在flash中刻写并从580运行的最大应用程序取决于580而不是flash。限制是可用的Sysram为42KB,因为你必须计算交换内存、堆等,关于这方面的更多信息,请检查UM-B-011内存映射和分散文件。还要注意,keil的评估许可证有一个32K的限制。
由于MT_dialog
你好,
我已经采取BLE外围代码和编辑。到目前为止,我可以在BLE外设中使用Write回调和Notify回调。但是我不能使用读取回调与BLE外围代码。请指导我在哪里可以得到读回。哪个文件和函数,我需要使用访问Readcall从BLE客户端(即移动设备)到BLE服务器(即Dialog Semiconductors)开发板。雷竞技电竞平台
嗨的卖方,
读回调?您的意思是一个回调,它将表明客户端已经从对等端读取数据,这种处理程序不存在,表明客户端从对等端读取数据没有达到应用程序级别。
由于MT_dialog
你好,
我用I2C从设备接口DA14583。有时我能够从I2C从设备读取数据。但有些时候,处理会受到打击
“WAIT_UNTIL_NO_MASTER_ACTIVITY()”(即在I2C驱动器中)。处理器被上述指令击中的具体原因。
请指导我解决这个问题。
嗨的卖方,
您可以为遇到的这个i2c问题创建另一个线程吗?这将使论坛用户更容易搜索类似的主题。谢谢您的理解。