我正在尝试通过STM32通过UART编程DA14580。我按照引入“从串行接口启动的DA1458X”文档。
我将.hex文件转换为.bin文件到.h文件(这是一个简单的.bin数据数组)。当我直接用SmartSnippet进入SRAM时,将.bin文件正常工作。
但是通过闪烁,我有问题。我在做什么:
- 从da接收0x02
- 发送0x01,LSB,STM32的MSB
- 从da接收0x06(ACK)
- 从STM32发送SW代码字节(数组)
- 接收CRC(正确/检查)
- 从STM32发送0x06(ACK)
但是,我看不到DA广告,它之后就会发送0x02。
这意味着闪烁不正确吗?任何人都想知道为什么不呢?
设备:
嗨Christianrudmann,
我会说该设备击中重置并转到另一轮引导加载程序,我想这就是为什么你在完成下载图像后看到一个额外的0x02字节,也许你在580中下载的FW会导致重置设备。
谢谢mt_dialog.
我在Sysram中闪过了那个.bin在外部SPI-Flash中的另一个时间。它既工作。所以我认为这是代码。
另外,我比较了所有三种类型的闪烁的Sysram代码,它们是相同的。
我假设da14580没有重新映射和重启。这只是一个假设。
嗨Christianrudmann,
ROM引导加载程序负责从SYSRAM和SW重置设备的重新映射,只要通过UART下载FW,如果您在设备获得FW时立即获得0x02,那么我的只有合理的解释只是设备以某种方式重置。您是否能够从SDK中的示例下载FW?或者,二进制文件中的外部MCU下载到580的任何问题?
谢谢mt_dialog.
1.)是的,我尝试从SDK编写修改的示例(刚刚编辑了Config文件)。
2.)我通过UART和SPI(SPI Works)闪烁了DA14580的Sysram,因此我确保每个字节都正确。唯一的区别是SysRAM部分直接在SysRAM部分后面的4个字节,我正在闪烁。UART:0x00的6次;SPI:0xEC 0x90 0x00 0x20 0x01 0x00。但该信息未存储在SPI闪存中。
是否有可能看看是什么导致最后一个重置?也许是一个重置寄存器或类似的东西?
嗨Christianrudmann,
不,在580上没有这样的寄存器,以便曝光最后一个重置原因。您是否尝试过智能代码段UART Booter下载图像,并检查您是否能够通过UART成功下载?
在实际二进制二进制文件结束时看到的额外字节由智能代码段工具附加,以便为要配置的引脚(仅由flash_programmer使用),实际二进制文件不使用这些字节,因此没有要在字节标题长度中添加那个字节,并且您不必在自定义加载器中发送这些字节.bin字节足够。
谢谢mt_dialog.
你好,
是的,虽然SmartSnippets Uart Works(在演示板上,所以我的电路板没有直接访问UART)。所以SW应该没问题。
我的电路板上有一个状态LED,所以我可以看到当我从DA14580获得正确的CRC时。用骗局骗局我的董事会。
- 在keil中重置da(调试模式)
- 运行DA并通过UART加载SW
- 当LED亮起时停止DA(传输完成)
- 在调试模式下修改sys_ctrl_reg(0x50000012),并设置REMAP位(位1)和SW复位(位15)(如在SW传输之后应该执行)并运行
- 我可以看到我的设备,所以SW正在工作
你有什么问题是什么问题吗?
嗨Christianrudmann,
您可以尝试通过Smart Scippets将代码下载到自定义板,或者在通过UART通过外部MCU下载自定义下载时比较智能片段的过程。由于FW应操作,然后在自定义板的H / W上或在智能片段和外部MCU之间的下载过程中时,必须存在差异。
从您申请的诀窍才能运行,似乎确实将代码下载到Sysram(因为重新映射到Sysram和Sw Reset,因此毫无疑问,引导加载程序倒退并重置设备。因此,如果通过重新映射和发出重置,您可以运行先前下载的FW,也许您应该检查580的电源,有一种情况下是否有不稳定的电压供应,设备将处于未定义状态,也可以检查映像后是否正在执行引导加载程序(如果它可能检查引导ROM正在使用的其他引脚,以便确定设备是否确实运行引导加载程序)。
谢谢mt_dialog.