你好MT_dialog,
我使用DA14580开发工具包- basic和AN-B-023,我成功地将我的项目加载到闪存(W25X20CL)中,并使用SPI从它启动。
现在,我想用SPI将它连接到STMicroelectronics STM32F103R8,是否可以将我的项目加载到它的内部闪存中,并像我用DA14580那样从它启动?或者我应该在ST微控制器中实现一个启动协议,通过SPI将数据发送到我的BLE模块(从)?
非常感谢和问候,
——赛义夫
关键词:
设备:
嗨bensalemsaif,
我不知道你到底想做什么。当580引导时,主引导加载程序期望在特定端口(SPI主/ SPI从之间的其他接口)上的特定字节序列。请检查AN-B-001 -从串行接口引导有关引导顺序的更多信息。
由于MT_dialog
嗨MT_dialolog,
谢谢你的回答,事实上,我已经检查了AN-B-001,我的问题是:
我将把PAN1740模块集成到STMicroelectronics STM32F103R8中,我希望它使用SPI从ST微控制器的闪存引导,因此要做到这一点,我应该将我的数据发送到an - b -001中所述的580吗?
因为我之前所做的,只是使用Smartsnippets,我将我的Hex文件加载到SPI闪存中,580可以启动,它不可能与ST微控制器中的集成闪存相同?没有实现数据应该如何通过SPI发送…
谢谢你!
赛义夫
嗨bensalemsaif,
AN-B-001描述了所有580的接口中的引导过程,在电源上,580的引导加载程序将运行,您应该在您选择的接口上提供适当的数据(在您的情况下SPI主/从配置),以便开始引导序列。在SDK中有一个例子,在2 580之间,一个作为主设备,另一个作为从设备,通过SPI接口使用#define SPI_BOOTER,您可以选择您的主设备下载.bin到您的从设备。示例位于host_apps/da1458x/proximity/reporter目录下。
由于MT_dialog
嗨MT_dialog,
谢谢你的支持,记者的例子很有帮助!
所以现在要从一个。hex文件中提取图像数据,我删除了地址,然后CRC,我只保留了数据,我用0x00替换了空白,然后我把数据放入缓冲区,是正确的吗?
谢谢你!
赛义夫
嗨bensalemsaif,
要下载的文件是。bin文件而不是。hex文件,您可以从SDK中的utilities文件夹中的hex2bin工具将。hex转换为。bin,用编辑器打开。bin,复制并粘贴在您的。c文件中的数据,然后下载。
由于MT_dialog
嗨MT_dialog,
谢谢,我按照你说的实施了,现在为了确保我的引脚配置是OK的,我做了AN-B-001中描述的:P-0-0 <-> SCK, P0_3 <-> CS, P0_5 <-> MOSI和P0_6 <-> MISO,对于其他引脚,我应该放跳线吗?(TCK, TMS,蝙蝠)
第二点是关于时间,我应该在580中的boot算法在SPI上搜索数据时发送数据,那么在5次循环和JTAG启用之前需要多长时间?最好的方法是什么?
谢谢你!
嗨bensalemsaif,
TCK, TMS是调试引脚,如果你想通过keil下载你的。bin,你必须使用这些引脚,如果不是,你也可以省略它们,BATS引脚是开发工具包板上SPI内存的引脚。请检查您自己的开发工具包的原理图。同样是的,为了使下载成功,您应该在引导加载程序运行时发送数据,它应该立即开始,引导过程步骤的确切超时在AN-B-001文档中有描述。
由于MT_dialog
你好MT_dialog,
我仍然无法从我的SPI主微控制器启动,所以请您为我验证一下:
我通过用我的微控制器控制复位引脚来启动580,如“AN-B-01”所述等待103ms,然后像报告示例中所做的那样发送报头(启用CS并发送数据)。但是我从来没有收到过ACK或NACK,有时我在发送header的时候就得到了MISO上的数据,请查看附件中Saleae发送header分析的截图。
我错过了什么吗?
谢谢你!
嗨bensalemsaif,
在580上使用spi从机有点棘手,请确保主机提供的spi时钟至少是从机内部spi时钟配置的四分之一,也请尝试在spi总线上发送数据时在主机上设置一些延迟。此外,请检查您的连接,它们应该尽可能短,屏蔽和正确终止。
由于MT_dialog
你好MT_dialog,
谢谢你的回复,我会检查我的连接,时钟580上的内部频率是16MHz对吗?到目前为止,我用主时钟频率= 250KHz发送数据,所以应该没问题,对吗?
为了在发送数据时设置一些延迟,我尝试了,但似乎不符合逻辑,发送图像需要这么多时间,对于头部来说可以,但对于图像来说不行,所以请确认时钟频率,我将检查我的连接。
谢谢你!
——赛义夫
嗨bensalemsaif,
内部SPI时钟频率可以达到16MHz(最大/最小分频为1)。当580从SPI主控制器引导时,请检查an - b -001对SPI时钟的正确设置。因为你的主机发送数据的频率高达250KHz,你应该可以接受,因为500是发送字节之间没有任何延迟的限制。580中的SPI采样器非常敏感,电缆可能会导致很多问题,因为它可能会错误地接收小尖峰或反射作为脉冲。
由于MT_dialog
你好MT_dialog,
由于SPI不工作,我试图从UART启动,所以像以前一样,我重置了580,然后在我收到0x02 strat字节时开始发送数据,然后在发送SOH, LEN_LSB和LEN_MSB时,我得到了0x06 ACK,所以一切都OK,然后我开始发送图像,但之后我没有得到任何CRC。
同样的图像成功下载到SPI闪存(Smartsnippets), 580可以从它启动。
这里附上Saleae分析,我的十六进制和bin文件(大小是19236 =4B24)以及我如何发送数据:
1-像记者的例子:数据对齐(64),大小除以4,我使用相同的发送函数实现
2-数据没有对齐,只是一个正常的缓冲区的长度=大小的数据和发送它的内容一个字节一个字节
但结果总是一样的,是不是少了什么?
嗨bensalemsaif,
我无法打开UART引导。Logicdata文件(该文件似乎是空的)。只需要使用hex2bin程序生成的二进制文件,并通过UART下载它。如果你不等待一个CRC和发送一个0x06是580做什么?你也可以尝试运行辅助引导加载程序来调试它,你可以在keil上运行引导加载程序,模拟主引导加载程序并调试它。另外,您是否能够使用智能代码段通过UART下载文件?此外,如果可用,您可以尝试从不同的TX/RX对启动。我上传了一个UART下载图像的捕获。
由于MT_dialog
你好Mt_dialog,
事实上,我无法通过SPI/UART使用SmartSnippets下载文件(或任何文件),它只在JTAG上完成,否则,我无法擦除SPI闪存,这里附上了错误:
那么问题出在哪里呢?
谢谢,
嗨bensalemsaif,
因为你有一个基本的工具包,智能片段中唯一可用的选项是UART, UART/SPI仅适用于专业和专家工具包。要编程SPI Flash,您已经在基本套件上进行了正确的连接(它需要一个额外的连接),请按照SPI引脚旁边的图进行连接,此外,您必须连接P0_4跳线,并将P0_5与UART引脚连接。
由于MT_dialog