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