我正在尝试用STM32通过UART编程DA14580。我遵循“DA1458x从串行接口启动”文档的介绍。
我将.hex文件转换为.bin文件,再转换为.h文件(这是一个.bin数据的简单数组)。bin文件工作正常,当我直接用SmartSnippets闪存到SRAM。
但通过闪烁与UART我有问题。我在做什么:
—从DA接收0x02
—从STM32发送0x01、LSB、MSB
—从DA接收0x06 (ACK)
从STM32发送SW编码字节(数组)
-接收CRC(正确/已检查)
—从STM32发送0x06 (ACK)
但是我看不到地检官的广告,它在那之后仍然发送0x02。
这是不是意味着闪光灯不对?有人知道为什么吗?
设备:
嗨christianrudmann,
我想说的是,设备按下重置,并进行另一轮引导加载程序,我想这就是为什么你看到一个额外的0x02字节后下载你的图像,也许fw,你正在下载580导致重置设备。
由于MT_dialog
我在系统ram中闪过那个。bin,还有一次在外部SPI-Flash中闪过。两者都有效。所以我不认为这是密码。
另外,我比较了syram的所有三种类型的闪烁的代码,他们是相同的。
我想DA14580不是重新映射和重启。这只是一个假设。
嗨christianrudmann,
ROM引导装载程序负责设备的重新映射sysram和sw重置设备尽快通过UART弗兰克-威廉姆斯下载,如果你得到一个0 x02一旦设备取得了弗兰克-威廉姆斯,然后我唯一合理的解释是,设备被重置。你能从SDK中的例子下载一个fw吗?或者外部MCU下载到580的二进制有什么问题?
由于MT_dialog
1.)是的,我试图从sdk编程一个修改的例子(只是编辑配置文件)。
2.)我比较了通过UART和SPI闪烁的DA14580的syram (SPI工作),所以我确保每个字节都是正确的。唯一的区别是SysRAM部分后面的4个字节,我正在闪烁。Uart: 6倍0x00;SPI: 0xEC 0x90 0x00 0x20 0x01 0x00。但是这些信息并没有存储在SPI flash中。
有可能知道上次重置的原因吗?也许是重置寄存器之类的?
嗨christianrudmann,
不,在580上没有这样的寄存器,以便最后一个重置原因被暴露。您是否尝试通过Smart Snippets UART引导程序下载图像,并检查是否能够通过UART成功下载?
额外的字节,你看到在实际的二进制文件的结尾是由Smart Snippets工具添加的,以便为引脚进行配置(仅由flash_programmer使用),这些字节不被实际的二进制文件使用,所以不必在字节头长度中添加这些字节,也不必在自定义加载器中发送这些字节。bin字节就足够了。
由于MT_dialog
你好,
是的,尽管闪烁SmartSnippets UART工作(在演示板上,因为我的板没有直接访问UART)。所以西南应该没问题。
我在我的板上有一个状态LED,所以我可以看到当我从DA14580得到一个正确的CRC。有一个作弊SW在我的板上工作。
—Keil(调试模式)复位DA
—运行DA,通过UART加载SW
- LED亮时停止DA(传输完成)
-在调试模式下修改SYS_CTRL_REG (0x50000012),设置Remap位(Bit 1)和SW复位位(Bit 15)(就像在SW传输后应该做的那样)并运行
-我能看到我的设备,所以软件在工作
你知道问题出在哪里吗?
嗨christianrudmann,
您可以尝试通过智能代码段下载代码到自定义板或比较程序的智能代码段下载时,通过UART与自定义下载通过外部MCU。由于fw的操作应该是这样的,那么必须有一个差异,无论是在自定义板的h/w或在下载过程之间的智能片段和外部MCU。
从您为设备运行而应用的技巧来看,代码确实被下载到sysram中(因为重新映射到sysram和sw重置使这个技巧生效),毫无疑问,引导加载程序会重新映射和重置设备。所以,如果通过重新映射和重置,你可以运行之前下载的fw,也许你应该检查580的电源,有一种情况是,当有不稳定的电压供应,设备将进入一个未定义的状态,您还可以检查引导加载程序在下载映像后是否正在执行(如果可能的话,请检查引导ROM正在使用的其他引脚,以确定设备是否确实在运行引导加载程序)。
由于MT_dialog