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