亲爱的Dialog支持团队,
我使用带SPI的DA14580,我的.HEX大约是40KB,所以我必须使用外部闪存。
但是这个程序在这种情况下不工作,如果我测试一个程序不使用SPI,它就工作了。
所以我有以下问题:
1) 我是否可以使用SPI外部闪存,也可以在引导后使用SPI?
2) 如果我可以在引导后使用SPI,如何重新映射pin?
3) 如果我使用有足够OTP空间的DA14585,我可以随机重新映射管脚/或任何规则来重新映射管脚吗?
4) 现在我用的是DA14580,DA14585和DA14580在软硬件方面兼容吗?
非常感谢你的帮助。
本杰明
设备:
嗨BenjaminDu,
DA14580靴子采用标准别针。请检查AN-B-001文件中的“表1:外部设备的引脚分配和引导顺序”。您可以从我们的支持门户下载此文档。为方便起见,您也可以点击下面的链接。
https://support.dialog-semiconductor.com/resource/b-001-da14580581583-booting-serial-interfaces
启动程序完成后,您可以使用外部闪存来编写应用程序代码。你能澄清一下“重新映射”是什么意思吗?您是想从不同的引脚从标准引脚引导,还是您的意思是,您想改变SPI闪存引脚后引导程序?
谢谢,下午好
我的意思是,在引导之后,我的应用程序希望将spi用于其他用途(而不是r/w flash),例如,使用spi显示lcd。如果我使用jlink,它会工作,但是如果我使用flash,它不会。
关于da14585,你能帮我解答以上问题吗?
谢谢
嗨BenjaminDu,
抱歉,但我没有完全理解你的意思,如果你使用JLink它是工作的,但如果你使用flash它是不工作的。我需要一些关于这方面的澄清,请尝试理解你正在试图完成什么。如果我理解正确,你想用你的固件烧录SPI flash,从那里引导,然后在引导之后,你想重新映射连接到flash的相同SPI gpio以供其他使用?如果我不明白,请让我知道并纠正我。
根据数据表,DA14580有32KB的OTP,DA14585有64KB的OTP。如需任何补充信息,请参阅相应的数据表。我无法理解你所说的“我是否可以随机重新映射管脚/或重新映射管脚的任何规则”的确切含义。DA14580和DA14585有不同的硬件,它们运行不同的SDK。DA14580/1/2/3的SDK最新版本为5.0.4版本,DA14585/6的SDK最新版本为6.0.10版本。
谢谢,下午好
亲爱的Dialog支持团队,
谢谢你的快速回答,是的,在某种程度上你理解我的问题是正确的,我会更清楚地表达我的问题。
是的,我想用我的固件烧掉SPI闪存,从那里启动。
在引导之后,我需要使用SPI(其他gpio,对于CS)来控制其他组件(例如LCD)。
当我使用JLink(直接从Keil运行,固件没有烧到flash上)时,由SPI控制的LCD工作得很好。
但是如果我把固件烧到flash上并从那里引导,由SPI控制的LCD就不工作了(我还测试了其他没有使用SPI的程序,烧到flash上,从flash引导程序工作)
希望我能把我的问题表达清楚,希望你能告诉我原因。
谢谢。
本杰明
嗨BenjaminDu,
当从SPI闪存启动时,如果LCD不工作,请您探测SPI信号,然后告诉我结果好吗?您提到,在引导之后,您希望使用不同的gpio来控制其他组件。你配置了吗?
谢谢,下午好
亲爱的DIalog,
对不起,我不能探测信号。
附件是GPIOs的配置,有了这个配置,在调试的时候可以很好的工作,如果烧成flash,就会停止工作。
你能帮我看看我的配置吗?
我有个分析,
由于我的固件超过42KB,引导后,系统仍然需要与flash通信,这可能会导致与flash SPI和我的SPI冲突。
谢谢
本杰明
嗨BenjaminDu,
如果您能够探测到SPI信号,这将是非常有用的,因为我们可以提取有关您问题的更多信息。顺便说一下,没问题,你不能探测你的信号。您的配置似乎正确。如果我能正确理解你所说的,如果你的固件小于42KB,你的应用程序工作正常吗?
谢谢,下午好
亲爱的Dialog,
我将设法探测信号,稍后再回来。
我有一个固件小于42KB,它在闪存工作良好,但固件没有SPI。
我想知道,如果系统SRAM只有42KB,而固件不止这些,它是如何工作的?
非常感谢你的快速回答。
本杰明
嗨BenjaminDu,
你能澄清一下你的固件没有SPI是什么意思吗?那么,如果您将固件下载到外部SPI闪存并从那里引导,这是否正常工作?另外,请确保您的固件超过42KB,好吗?如果是的话,当您将它存储到系统内存中时,它是否正常工作就很奇怪了。
谢谢,下午好
亲爱的Dialog,
没有SPI意味着应用程序不使用SPI,但它有SPI连接到闪存,让我们忘记它,因为我有新的创始,请看下面。
我用SPI测试了另一个样本(我的SPI连接到Flash并连接到其他组件),该样本的固件是37KB,并且它在从闪存启动时工作。
那么如果固件超过42KB,DA14580就不能工作了吗?
如果固件超过42KB,我该怎么办?有什么方法可以使用DA14580吗?或者我必须选择其他芯片像DA14585?
谢谢
本杰明
嗨BenjaminDu,
由于您使用的是DA14580,如果固件大小超过42KB,您希望能够存储到SystemRAM中。请查看DA14580数据表,您会发现系统RAM为42KB。因为您有一个外部SPI闪存,所以您可以将固件存储在那里并从SPI闪存引导。为了烧录SPI Flash,您应该使用Smart Snippets工具箱,您可以从我们的支持门户下载它。如果您只想将固件下载到SystemRAM中,可以移动inti DA14585。根据DA14585数据表,有96KB的数据/保留系统RAM。如果您还没有从SmartSnippets工具箱下载它,您可以从DA14580支持页的“软件和工具”选项卡中找到它。也。我强烈建议你去看看UM-B-083 SmartSnippets工具箱用户手册以检查如何使用工具箱烧录SPI闪存。
谢谢,下午好
亲爱的Dialog,
在前面我说过我可以从flash启动,我已经知道如何将固件烧入flash。
我还有一个问题,如果我把固件烧成flash,程序能直接运行而不加载到SystemRAM吗(抱歉,我对芯片知之甚少,我认为引导是将固件加载到SystemRAM中并在那里运行)。
我问这个问题的原因是,如果我烧的固件超过42KB,带有SPI的程序就不能工作,如果我烧的固件小于42KB,那么带有SPI的程序就可以工作。
谢谢
本杰明
嗨BenjaminDu,
我强烈建议您看一看AN-B-001文档,以了解DA14580是如何启动的。我已经提供给你的链接,以便下载它。请检查图2:DA14581引导序列,您将看到在从外部设备引导序列之后,代码被下载到SysRAM。程序无法运行的原因是无法将固件下载到超过42KB的系统内存。
谢谢,下午好
亲爱的Dialog,
我读过AN-B-001,我找不到关于DA14580上可以运行多大固件的直接信息。
从你先前的回答中,我感到困惑的是以下两个问题。
1) 由于您使用的是DA14580,如果固件大小超过42KB,您希望能够存储到SystemRAM中。请查看DA14580数据表,您会发现系统RAM为42KB。因为您有一个外部SPI闪存,所以您可以将固件存储在那里并从SPI闪存引导。
2) 程序无法运行的原因是无法将固件下载到超过42KB的系统内存。
为了避免混淆,你能简单地回答我下面的问题是或否吗?
如果固件超过42KB,有没有办法在DA14580上运行程序?
嗨BenjaminDu,
对不起,我会尽力更具体。您无法编写超过42K Sysram的软件。此外,您不允许使用Sysram的所有42K,因为堆栈的部分是由堆栈的部件使用的,交换存储器等您不能将您的固件存储在SPI闪光灯中超过42K。请选中AN-B-001的图1:DA14580引导顺序。根据该图,您将看到从SPI闪存启动后,将代码下载到Sysram中,因此如果您的代码超过42K,则不会拟合进入RAM。总结,由于您使用的是DA14580,因此不允许您运行超过42K的固件。如果您希望具有更大的固件,则应进入DA14585产品。
谢谢,下午好
亲爱的Dialog,
谢谢,现在一切都清楚了。
本杰明
嗨BenjaminDu,
很高兴事情解决了。如果您发现以上任何答案有用,请在其中一个答案上注明为已接受。
谢谢,下午好