您好,
我正在尝试使用DA14580出厂时提供的引导加载程序来加载我的代码(稍微修改过的DSPS central),我“几乎”成功了…
在一个开发工具包专家身上使用DA14580\u CB\u PXI\u QFN48模块,我测试了Keil项目及其生成的十六进制文件在各个方面都能按预期工作。
我现在正在给一个未编程的DA14580通电(上面的设置),将UART连接到GPIOA.4和GPIOA.5,并在其引导加载过程中与DA14580通信。在应用说明AN-B-001之后,我可以在UART上看到STX=0x02,
,我的回复是SOH=0x01,LEN\u LSB=0x00,LEN\u MSB=0x40。然后我得到ACK=0x06,开始向DA14580发送代码字节。
但是,我没有得到一致的CRC返回,如果我给出最后一个ACK=0x06,什么也没有发生
实际上,用示波器查看UART引脚可以发现GPIOA.4,DA14580 UART TX正在释放,并在代码字节传输过程中浮动。
我有点不确定的一点是十六进制文件转换为代码字节。我编写了一个C程序,它将sps_host.hex
转换成一个C头文件,其中包含一个const uint8\u t the code[16000]数组。有一件事我不知道如何处理,那就是在hex文件中有一些空白;ie“英特尔十六进制”文件格式指定每行16个代码字节的起始地址。但是我的sps_host.hex文件有4个代码区域,它们之间有3块不同长度的空白。使用SmartSnippets工具箱的OTP图像工具,我加载sps\u host.hex文件,并可以看到如何在hex字段中用“--”符号表示
空格。在我的转换程序中,我只是用“0”(零)填充这些字节。
另外,sps\u host.hex文件包含15360个字节,而我的程序用零填充的总长度高达16000个字节。
我感到非常卡住,希望您能给我一些提示,告诉我该怎么办?
BR
罗杰