你好,
我正在为DA14531开发一种带有两个SPI设备的定制板。两者都在频率,敏感边缘,芯片选择极性方面使用相同的设置。
一个是外设,另一个是来自Macronix的闪存,它已经是DA14531的开发套件专业版。
我用keil测试了我的软件,通过重写一些细节来重用SPI代码示例,编写我的特定处理程序并正常工作。现在,下一阶段:我想从Macronix Flash引导。所以我需要一个新的芯片选择信号。我知道序列储备,初始化,用于I / O引脚。
但我第一次尝试有2个信号和2个库函数失败。
所需要的是一个单独的芯片选择信号。flash的示例代码使用了带有设置的数据结构。
现在,我需要一个提示,我如何确保,SPI控制器能够从闪存和我的程序中启动,我可以在闪存中使用自由单元格,在一个相当明显的阶段,另一个时隙,使用我的外围设备的SPI控制器。
如何编写/修改/重用,以便操作2个独特但在SPI总线上以某种方式类似的设备?
感谢帮助
joachim.
设备:
嗨Joachim,
谢谢你的问题。请你尝试解释问题是什么?我可以理解您计划从外部SPI闪存启动并使用空单元格存储您自己的数据。另外,将使用另一个SPI外围设备。DA14531正在从标准引脚启动 - 请检查表38:从数据表中启动序列步骤。外部SPI从站引导是步骤5,表38演示了应使用特定引脚。BootRom将在P01上切换SCS将闪光灯与来自那里的应用程序代码和设备靴子进行编程。
关于使用“自由空间”的热,您应该使用从SmartSnippet Toolbox中编程的闪存进行读取SPI Flash,并在存储应用程序固件的地址检查。在这些地址之后,您可以存储自己的数据。
但是我第一次尝试使用2个信号和2个库函数失败了。
你能说明吗?
谢谢,PM_DIALOG.
你好,谢谢你的回复!
在我的第一次尝试中,我使用了示例代码,它验证了与SPI flash的某些交换。然后,我将其中一些代码移动到一个蓝牙应用程序中,并在flash中重用了这些引脚。我使用电线连接我的外设从板到板,并编写SPI处理代码。它现在正在工作,值是通过蓝牙发送的。
现在,挑战是,两个SPI设备附有。我制作了简单的假设,重用代码,但仅使用不同的PIN芯片选择我的外围设备。Miso,Clk,MOSI一直并行(这是一个Aproach OK吗?)在第一步不起作用,即使整个蓝牙分数也死了。
两者,Macronix和我的外围设备都适用于相同的设置。
我需要建议,扩展基于RAM的代码,因此DA14531将从Flash引导。我基本上理解了PIN使用率,而不是SPI库。
你好,
joachim.
嗨Joachim,
外设连接在哪个gpio ?如果你想在BLE项目中拥有SPI flash功能,请查看SDK的prox_reporter示例。
要从SPI Flash启动,您只需需要将与正确GPIO连接的共享,然后使用应用程序映像将其刻录。设备上电后,Flash的代码将被复制到系统RAM,然后将其复制到设备靴子。
为了与SPI外设进行交互,您需要使用正确的参数进行init和配置它,与之交互,然后释放它。
谢谢,PM_DIALOG.
感谢您的回答。
我将使用的GPIO只是免费的GPIO,仅用于控制额外的SPI芯片选择。我将使用一个,它连接到套件基板上的标题。
我会看看prox_reporter示例代码。
我理解,将哪些引脚用于闪光灯 - 只能在Pro套件的交付时跳跃。
为了烧录它,我理解为使用RAM操作二进制(bin)文件。使用智能工具箱。
我需要保留我额外的GPIO,然后初始化那个I/O单元格作为一个用于flash。为了使用我的外围设备,我需要我自己的chip_select功能,使用我的新GPIO,使用设备和任何使用后,我必须返回新的GPIO引脚与chip_select回到非活动。
我可以使用完全相同的库函数进行传输(例如,SPI控制器队列)。
如果我的SPI设备与相同的参数交谈,则只需要SPI库(?)另一个控制结构。
那是对的吗 ?
我尝试过这种方法,但可能在某个地方出了问题。我需要再做一次。
问候,约阿希姆
嗨joachimkr,
您需要选择和配置每次将在哪个设备“谈话”中。诚实地说,我尚未以粗体正确理解您的陈述,但该概念是您应该选择每次使用SPI总线的设备。
谢谢,PM_DIALOG.