21个员额/0个新员额
最后一篇文章
young_dialog
离线
最后一次见到:4年1个月前
加入:2016-05-10 07:14
SmartSnippets SPI Flash程序员问题

大家好!

用智能代码片段烧录外部SPI闪光的时候发现一个很奇怪的问题:第一次烧录的时候一切正常,但第二次及以后烧录的时候发现点连接按键根本就连不上,老是提示:

[INFO @16-08-05 16:25:28]固件下载到单板失败。
[INFO@16-08-05 16:25:28]配置SPI闪存端口和引脚失败。
从第一次以后就没有再连上过一次。

这个时候换个方式把代码烧进RAM里也是提示失败:

[INFO @16-08-05 16:33:47]固件下载到单板失败。

环境:
硬件:我们自己的印刷电路板,芯片:14580
固件:基于SDK5.0.3 / ble_app_peripheral写的固件,开启了延长睡眠模式,关闭了开发/调试模式
软件:SmartSnippets3.8及3.9都是一样的现象
连接方式:JTAG方式

是什么问题导致的?是不是因为开启了延长睡眠模式的关系,还是像论坛说的用JTAG本来就不稳定吗?
谢谢!

年轻的

设备:
Gongyu_Dialog
离线
最后一次见到:1天2小时前
加入:2016-04-27 07:07
1.首先你烧的形象里有没有涉及到共用SPI的问题

1.首先你烧的形象里有没有涉及到共用SPI的问题,即你的SPI总线上除了闪光有没有挂其他的设备?如果有,找到sdkflash\u编程器工程,加入拉低其它器件的反恐精英线,重新把flash_程序员.bin和jtag_prgorammer.bin拷贝到C:\Users\glu\SmartSnippets\resources

2 .用UART烧写试试看吗?

young_dialog
离线
最后一次见到:4年1个月前
加入:2016-05-10 07:14
嗨,工友对话

嗨,工友对话

我的SPI总线上只有一个flash芯片,我改用UART后可以烧写成功,但为什么用JTAG方式不行呢,是不是目前还不稳定吗?还有就是用UART擦除芯片时每次都要1分钟左右,日志如下:

[INFO@16-08-08 15:54:09]SPI内存擦除已成功完成。
[INFO @16-08-08 15:54:09]读取内存以验证删除后的内容…
[INFO@16-08-08 15:54:09]与COM4端口的连接已成功打开。
[INFO @16-08-08 15:54:16]成功断开COM4端口连接。
[INFO@16-08-08 15:54:16]与COM4端口的连接已成功打开。
[INFO @16-08-08 15:54:23]成功断开COM4端口连接。
[INFO @16-08-08 15:54:23] COM4端口连接成功。
[INFO @16-08-08 15:54:29]成功断开COM4端口连接。
[INFO @16-08-08 15:54:30] COM4端口连接打开成功。
[INFO @16-08-08 15:54:36]成功断开COM4端口连接。
[INFO @16-08-08 15:54:36] COM4端口连接成功。
[INFO @16-08-08 15:54:43]成功断开COM4端口连接。
[INFO @16-08-08 15:54:43] COM4端口连接成功。
[INFO@16-08-08 15:54:50]已成功从端口COM4断开连接。
[INFO @16-08-08 15:54:50] COM4端口连接成功。
[INFO @16-08-08 15:54:56]成功断开COM4端口连接。
[INFO@16-08-08 15:54:57]与COM4端口的连接已成功打开。
[INFO@16-08-08 15:55:03]已成功从端口COM4断开连接。
[INFO@16-08-08 15:55:03]验证成功。
[INFO @16-08-08 15:55:03]阅读记忆刷新其内容....
[INFO @16-08-08 15:55:03] COM4端口连接成功。
[INFO @16-08-08 15:55:10]成功断开COM4端口连接。
阅读完毕。读取32768字节。

为什么中间会有这么多的连接与断开?(串口用的是P0_4跟P0_5)。

然后,代码烧进去后又发现另外的问题:

整个代码的逻辑为:

一上电设备会广播,等待连接,当连接建立后开启外挂模数转换器的中断(广播状态下不开启中断),模数转换器每4ms会给DA14580一个中断(有中断才会触发后面数据的发送),微控制器进行数据处理并发送给手机,这一切在开启调试模式下“35;定义CFG_开发_调试”都运行正常,但关闭后“#未定义CFG_开发_调试”发现可以连接但是没有数据发送,猜测是模数转换器没有中断来的原因,请问这个调试模式什么时候需要开启,什么时候需要关闭(我们的产品的最终形态应该会是应用层代码全放在闪光里面,因为检察官办公室空间已经不够了),关于这个调试模式究竟有什么需要注意的?谢谢!

BR,

年轻的

young_dialog
离线
最后一次见到:4年1个月前
加入:2016-05-10 07:14
补充:

补充:

在连接上之后,微控制器会通过I2C给外挂的模数转换器芯片发数据以配置参数,之后模数转换器才会周期地采集信号,我刚才又做了一个测试,发现外挂模数转换器根本没有收到微控制器的配置数据,是不是开启了
调试模式之后I2C的配置需要修改?谢谢!

BR,

年轻的

白雪梦1
离线
最后一次见到:11个月,2个星期前
工作人员
加入:2014-08-17 14:25
我的建议是你在SDK里面找到flash

我的建议是你在SDK里面找到flash_programming的工程,在periph_init函数里面,加入对于其他外设GPIO状态设定的操作,使外设都不起作用。然后分别编译基于JTAG和UART的版本。
覆盖C:\Users\XXXX\SmartSnippets\resources下的flash_程序员.bin和jtag_programmer.bin然后再下载试试。

关于这个CFG\u开发\u调试宏,主要是帮助你检查,不要重用GPIO另外,就是深度睡眠模式下,开了这个宏SRAM是不断电的。
I2C配置和开不开这个宏没关系~

young_dialog
离线
最后一次见到:4年1个月前
加入:2016-05-10 07:14
嗨snowdream1,

嗨snowdream1,

按照你的建议加入对其他外设GPIO状态设定的操作,使外设都不起作用,但结果还是一样的,怎么回事,还有就是用通用异步收发器烧为什么要花那么长时间?

BR,

年轻的

Gongyu_Dialog
离线
最后一次见到:1天2小时前
加入:2016-04-27 07:07
我这里UART擦除和烧写都很快的。

我这里UART擦除和烧写都很快的。

另外,就是P05你应该是和SPI共用的吧?

[INFO @16-08-15 14:54:39] Header记录已经从hex文件ble_app_barebone_580.hex中删除。
[INFO@16-08-15 14:54:39]从ble_app_barebone_580.hex文件中读取20820字节。

[INFO @16-08-15 14:54:56]固件文件C:\Users\glu\SmartSnippets\resources\flash_programmer.bin已被选择下载。/ /开始连接
[INFO @16-08-15 14:54:56] COM28端口连接已成功打开。
[INFO @16-08-15 14:54:56]开始下载程序…
[ACTION@16-08-15 14:54:57]请按主板上的硬件重置按钮开始下载过程。
[INFO @16-08-15 14:55:00]已检测到复位
[INFO @16-08-15 14:55:01]成功断开COM28端口连接。
[INFO@16-08-15 14:55:02]与COM28端口的连接已成功打开。
[INFO@16-08-15 14:55:02]已成功从端口COM28断开连接。
[INFO @16-08-15 14:55:02]成功下载固件文件到单板。
[INFO @16-08-15 14:55:02]成功配置SPI Flash接口和引脚。

[INFO@16-08-15 14:55:23]与COM28端口的连接已成功打开//擦除
[INFO @16-08-15 14:55:23]成功断开COM28端口连接。
[INFO@16-08-15 14:55:23]SPI内存擦除已成功完成。
[INFO@16-08-15 14:55:23]读取内存以刷新内存内容。。。。
[INFO @16-08-15 14:55:23] COM28端口连接打开成功。
[INFO @16-08-15 14:55:23]成功断开COM28端口连接。
阅读完毕。读取32768字节。

[INFO@16-08-15 14:55:30]开始烧录地址0x00000处21144字节的内存//开始烧写
[INFO@16-08-15 14:55:30]与COM28端口的连接已成功打开。
[INFO @16-08-15 14:55:34]成功断开COM28端口连接。
[INFO @16-08-15 14:55:34]内存燃烧成功完成。
[INFO @16-08-15 14:55:34]读取内存刷新内存内容....
[INFO @16-08-15 14:55:34] COM28端口连接成功打开。
[INFO@16-08-15 14:55:41]已成功从端口COM28断开连接。
[INFO@16-08-15 14:55:41]读取已完成。读取32768字节。

[INFO@16-08-15 14:56:15]与COM28端口的连接已成功打开//擦除
[INFO@16-08-15 14:56:15]已成功从端口COM28断开连接。
[INFO @16-08-15 14:56:15] SPI内存擦除成功。
[INFO @16-08-15 14:56:15]读取内存刷新内存内容....
[INFO@16-08-15 14:56:15]与COM28端口的连接已成功打开。
[INFO@16-08-15 14:56:15]已成功从端口COM28断开连接。
阅读完毕。读取32768字节

young_dialog
离线
最后一次见到:4年1个月前
加入:2016-05-10 07:14
嗨,工友对话,

嗨,工友对话,
P05确实是和SPI共用的,有问题么,它们任何时候都只有一方在用而已啊,应该不会互相影响,现在用Jlink烧倒是挺快的,就是只能烧一次。

BR,

年轻的

Gongyu_Dialog
离线
最后一次见到:1天2小时前
加入:2016-04-27 07:07
共用没问题。JLINK只能烧一次,第二次烧不了

共用没问题。JLINK只能烧一次,第二次烧不了,我想是不是因为代码直接已经从SPI那里靴子起来了。因为JTAG是在通用异步收发器和SPI引导都没有成功的情况下才打开的。
你试着在刚开始烧写的时候,把SPI的几个跳线去掉,跳过SPI引导这一阶段,然后把跳线再插上试试?

young_dialog
离线
最后一次见到:4年1个月前
加入:2016-05-10 07:14
嗨,工友对话

嗨,工友对话

结果还是不行。

BR,

年轻的

young_dialog
离线
最后一次见到:4年1个月前
加入:2016-05-10 07:14
嗨,工友对话,

嗨,工友对话,

我是用我自己的板子,没有做跳线处理,我可以在开发板上做一下测试先。

BR,

年轻的

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
我也遇到类似问题,请问最后有没有解决办法?

我也遇到类似问题,请问最后有没有解决办法?

JTAG只能烧写一次,第二次就再也连接不成功。

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
是不是因为设备设置了 外接睡眠

是不是因为设备设置了 继续睡吧所以烧写一次之后,再连 JTAG的时候,中央处理器处于休眠模式,所以无法连接成功?

请问如何配置,可以在下载的程序打开 外接睡眠的情况下,JTAG依然可以连接成功?否则无法更新程序也太痛苦了。

Qinjiny_Dialog
离线
最后一次见到:3个月3周前
工作人员
加入:2016-11-01 05:47
你好,

你好,

麻烦提供一下你使用的工程或者告知一下你在使用哪个工程时会遇到这个状况,我们好测试一下

谢谢

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
请问能否提供一个邮箱?网页上传很慢

请问能否提供一个邮箱?网页上传很慢

Qinjiny_Dialog
离线
最后一次见到:3个月3周前
工作人员
加入:2016-11-01 05:47
测试的话可以只上传一个十六进制,或者打包后使用网盘链接来分享

测试的话可以只上传一个十六进制,或者打包后使用网盘链接来分享

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
非常感谢Qinjiny,十六进制文件上传,请测试。如需代码

非常感谢Qinjiny,十六进制文件上传,请测试。如需代码,还请告知,谢谢!

附件:
Qinjiny_Dialog
离线
最后一次见到:3个月3周前
工作人员
加入:2016-11-01 05:47
你好。。我这边测试了一下你的十六进制文件

你好。。我这边测试了一下你的十六进制文件,烧写以后跑起来有一个广播名为八仙沟几秒后消失。然后重新打开智能代码片段模式,可以正常连接,擦除闪光重新烧写。

我这边使用的是官方的580开发板专业版,smartsnippets版本3.8

建议你在进行烧写操作前确认一下板子的引脚跳线连接是否有问题,进行新的烧写活动前可以先断开通用串口总线连接线再重新上电然后再打开智能代码片段理论上进入睡眠不会影响连接的操作。我反复烧写了几次并没有任何问题。

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
非常感谢!我这里也找到其它处理方法

非常感谢!我这里也找到其它处理方法。在加电的时候,按按重置键,快速在smartsnippets里面点击连接,就可以连接得上。感觉是进入睡眠之后就无法连接,重置之后如果手速比较快,就可以连接成功。连接成功之后,就可以擦写软件

另外,请问一个问题,进入 延长睡眠时间模式之后,通过配置那个 计时器可以调整 睡眠==>唤醒的定时器 计时器现在的问题就是进入睡眠之后,就无法起来了。感觉唤醒计时器好像不起作用,很奇怪。

SDK 504是不是支持通过 JTAG调试睡眠模式下的程序?

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
您好,

您好,

我的同事告诉我,我们的设计是从 对话官网提供的 微信物联网参考设计改过来的.
https://support.dialog-semiconductor.com/connectivity/reference-designs?...

我把这个参考设计下载下来,打开睡眠模式:const static sleep\u state\u t app\u default\u sleep\u mode=ARCH\u EXT\u sleep\u ON;在 user_config.h文件。同时,关闭MD5和加密,只采用 EAM_macNoEncrypt在mpbledemo2.h文件。

发现遇到和我一样的问题。DA14580休眠之后就无法被手机发现。我用的是 安卓手机,AirSyncDebugger应用程序去扫描蓝牙设备

有两个问题需要请教:
对话框——官网上提供的这个微信物联网参考设计,有没有测试过休眠模式?
-微信物联网参考设计里面内置的 DA14580 SDK如果我想替换为最新的 5.0.4 SDK应该如何替换?

谢谢您的帮助!

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
Qinjiny_Dialog

Qinjiny_Dialog

您好,我尝试了SDK 5.0.4里面的 BLE_应用程序_睡眠模式样例,在我的板子也是一样的结果。打开休眠模式,手机蓝牙就无法扫描到设备。请问这样正常吗?

或者哪里我可以查到官方开发板的原理图,就可以做个比对?谢谢您

附件: