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