你好mt_dialog,
我使用DA14580开发工具包Basic和AN-B-023,我成功地将我的项目加载到闪存(W25X20CL)中,并使用SPI从中启动。
现在,我想用SPI把它连接到STMicroelectronics的STM32F103R8上,有没有可能像我用DA14580那样把我的项目加载到它的内部闪存中并从中引导呢?或者我应该在ST微控制器中实现一个引导协议,通过SPI向BLE模块(从)发送数据?
非常感谢和问候,
- 萨法夫
关键词:
设备:
嗨bensalemsaif,
我不完全究竟是什么想做的。当580靴子主引导程序期望特定端口上的特定字节序列(其他接口中的SPI Master / SPI从站)。请检查AN-B-001 - 从串行接口引导有关引导序列的更多信息。
谢谢你的对话
你好,迪亚洛格先生,
感谢您的答案,事实上,我已经检查了AN-B-001,我的问题是:
我将把PAN1740模块集成到一个STMicroelectronics STM32F103R8中,我希望它使用SPI从ST微控制器的闪存启动,所以要这样做,我应该按照an-B-001中的描述将数据发送到580吗?
因为之前所做的,就是使用SmartSnippet,我将我的十六进制文件加载到SPI闪存中,580可以启动,它不能与ST微控制器中的集成闪存相同?如果不实现数据应该如何通过SPI发送...
谢谢您,
赛义夫
嗨bensalemsaif,
AN-B-001描述了所有580个接口中的启动过程,开机,580的引导加载程序将运行,您应该在您选择的接口上提供适当的数据(案例主/从配置中的SPI)以便开始引导seqence。SDK中有一个例子在2 580的一个作为主站和另一个用#define spi_booter的SPI接口中的奴隶,您可以选择您的主设备下载.bin到您的从站。该示例位于host_apps / da1458x / proximity / Reporter下。
谢谢你的对话
嗨mt_dialog,
谢谢你的支持,记者的例子很有帮助!
所以现在要从.hex文件中提取图像数据,我删除了地址,然后crc和我只保留了数据,我替换了0x00的空白,然后我把数据放入缓冲区,是正确的?它是正确的吗?
谢谢您,
赛义夫
嗨bensalemsaif,
要下载的文件是.bin文件不是.hex文件,可以从SDK中的实用程序文件夹中从Hex2bin工具转换.hex到.bin从SDK中的Utilities文件夹,使用编辑器,复制和粘贴数据.bin在您的.c文件中,下载。
谢谢你的对话
嗨mt_dialog,
谢谢,我实现了你说的,现在要确保我的引脚配置是好的,我没有在AN-B-001中描述:P-0-0<->SCK,P0\U 3<->CS,P0\U 5<->MOSI和P0\U 6<->MISO,和其他引脚,我应该把跳线(TCK、TMS、BATS)
第二点是关于时间的,我应该在580中的引导算法搜索SPI上的数据时完全发送数据,因此在循环和JTAG之前的5次之前需要多长时间?这是什么最好的方法?
谢谢您,
嗨bensalemsaif,
TCK,TMS是调试器引脚如果您想通过Keil下载您的.bin,你必须使用那些引脚,如果不是,你也可以在蝙蝠引脚是开发套件上的SPI内存的引脚。请检查您拥有的开发套件的原理图。此外,您应该在启动加载程序运行时发送数据,以便下载要成功,它应该开始默认,在AN-B-001文档中描述了引导过程的步骤的确切超时。
谢谢你的对话
你好mt_dialog,
我仍然无法从我的SPI主微控制器启动,因此请您帮我验证一下:
我开始使用MicroController的RESET引脚启动了580,如“AN-B-01”中所述等待103ms,然后在记者示例中策略发送报头(使能CS和发送数据)。但是我从来没有收到ACK或NACK,有时候我在STRINCE发送标题时拍摄了MISO的数据,请附上Saleae的标题发送分析的屏幕截图。
我错过了什么吗?
谢谢您,
嗨bensalemsaif,
使用580上的spi从机有点棘手,请确保主机提供的spi时钟至少比从机上的内部spi时钟配置小四倍,还请在通过spi总线发送数据时尝试在主机上设置一些延迟。也请检查您的连接,他们应该尽可能短,屏蔽和正确终止。
谢谢你的对话
你好mt_dialog,
谢谢你的回复,我会检查我的连接,至于时钟,580的内部频率是16MHz,对吗?到目前为止,我发送的数据与主时钟频率=250KHz,所以它应该是正确的?
为了在发送数据时增加一些延迟,我尝试了一下,但似乎没有逻辑意义,因为发送图像要花这么多时间,可以对标题进行处理,但对图像没有影响,因此请确认时钟频率,我将检查连接。
谢谢您,
- saif.
嗨bensalemsaif,
内部SPI时钟频率可以达到16MHz(最大/最小分频器为1)。当SPI Master中的580靴子时,请检查AN-B-001是否有适当的SPI时钟设置。由于您的主人在频率上发送数据到达250khz,因此您应该可以正常,因为500只有在没有发出发送字节之间的任何延迟的限制。580中的SPI采样器是非常敏感的,电线电缆可能导致批次问题,因为它可能错误地接收小尖峰或脉冲的反射。
谢谢你的对话
你好mt_dialog,
由于SPI不起作用,我正在尝试从UART启动,所以像以前一样,我重置了580,然后在接收0x02 strat字节时开始发送数据,然后在发送SOH、LEN\ U LSB和LEN\ U MSB时,我得到了0x06 ACK,所以一切正常,然后开始发送图像,但之后我没有得到任何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,
事实上,我无法通过SPI/UART使用SmartSnippets下载文件(或任何文件),只能通过JTAG进行下载,否则,我无法擦除SPI闪存,下面附上错误:
那么问题可能是因为什么呢?
谢谢,
嗨bensalemsaif,
由于您有一个基本的工具包,所以在智能代码段中唯一可用的选项是UART,UART/SPI仅适用于pro和expert工具包。要编程SPI闪存,如果您在基本套件上建立了正确的连接(它需要额外的连接),请按照您的引脚旁边的图连接SPI,此外,您还必须连接P0\U 4跳线,并将P0\U 5与UART引脚连接。
谢谢你的对话