21 posts / 0 new
Last post
young_dialog
离线
Last seen:3 years 7 months ago
加入:2016-05-10 07:14
SmartSnippets SPI Flash Programmer问题

大家好!

用SmartSnippets烧录外部SPI flash的时候发现一个很奇怪的问题:第一次烧录的时候一切正常,但第二次及以后烧录的时候发现点Connect按键根本就连不上,老是提示:

[信息@ 16-08-05 16:25:28]将固件文件下载到电路板上。
[INFO @16-08-05 16:25:28] Failed configuring SPI Flash ports and pins.
从第一次以后就没有再连上过一次。

这个时代换个方向式代码烧进ram里是提示

[info @ 16-08-05 16:33:47]将固件文件下载到电路板上。

环境:
硬件:我们自己的PCB,chip:14580
固件:基于SDK5.0.3 / BLE_APP_PERITIENTAL写的固件,开放了扩展睡眠模式,关键词开发/调试模式
软件:smartsnippets3.8及3.9是一定的
连接方式:JTAG方式

是什么问题导致的?是不是很为开放了延长睡眠模式的关心,而且是像论坛说的用jtag本来不稳定?
谢谢!

Young

Device:
Gongyu_dialog.
离线
Last seen:3 days 11 hours ago
加入:2016-04-27 07:07
1.首先你烧的image里有没有涉及到共用SPI的问题

1.首先你烧的image里有没有涉及到共用SPI的问题,即你的SPI总线上除了flash有没有挂其他的设备?如果有,找到SDK flash_programmer工程,加入拉低其它器件的CS线,重新把flash_programmer.bin和jtag_prgorammer.bin 拷贝到C:\Users\glu\SmartSnippets\resources

2.用UART烧烧写试试?

young_dialog
离线
Last seen:3 years 7 months ago
加入:2016-05-10 07:14
Hi Gongyu_Dialog,

Hi Gongyu_Dialog,

我的spi总线上有一个闪光灯♪,我改用UART后可以烧写成功,但为主用JTAG不行行不行,而且是不可能的,而且只用UART擦除芯片时每次要1分钟左右,log如下:

[INFO @16-08-08 15:54:09] SPI Memory erasing completed successfully.
[信息@ 16-08-08 15:54:09]阅读内存以验证其内容擦除...
[INFO @16-08-08 15:54:09] Connection to COM4 port has successfully opened.
[info @ 16-08-08 15:54:16]成功与COM4端口断开连接。
[INFO @16-08-08 15:54:16] Connection to COM4 port has successfully opened.
[info @ 16-08-08 15:54:23]成功与COM4端口断开连接。
[信息@ 16-08-08 15:54:23]与COM4端口的连接已成功打开。
[信息@ 16-08-08 15:54:29]成功断开了Port Com4端口。
[info @ 16-08-08 15:54:30]连接到COM4端口已成功打开。
[信息@ 16-08-08 15:54:36]成功断开了COM4端口。
[信息@ 16-08-08 15:54:36]与COM4端口的连接已成功打开。
[info @ 16-08-08 15:54:43]成功与COM4端口断开连接。
[信息@ 16-08-08 15:54:43]与COM4端口的连接已成功打开。
[INFO @16-08-08 15:54:50] Successfully disconnected from port COM4.
[信息@ 16-08-08 15:54:50]与COM4端口的连接已成功打开。
[信息@ 16-08-08 15:54:56]成功断开了COM4端口。
[INFO @16-08-08 15:54:57] Connection to COM4 port has successfully opened.
[INFO @16-08-08 15:55:03] Successfully disconnected from port COM4.
[INFO @16-08-08 15:55:03] Verification succeeded.
[info @ 16-08-08 15:55:03]阅读内存刷新其内容....
[信息@ 16-08-08 15:55:03]与COM4端口的连接已成功打开。
[信息@ 16-08-08 15:55:10]成功与COM4端口断开连接。
[info @ 16-08-08 15:55:10]阅读已完成。阅读32768字节。

为什么中间会有更多的连接与断开连接?(使用的是p0_4跟p0_5)。

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

整个代码的逻辑别为:

一上电设备会广播,等待连接,当连接建立后开启外挂ADC的中断(广播状态下不开启中断),ADC每4ms会给DA14580一个中断(有中断才会触发后面数据的发送),MCU进行数据处理并发送给手机,这一切在开启debug模式下“#define CFG_DEVELOPMENT_DEBUG”都运行正常,但关闭后“#undef CFG_DEVELOPMENT_DEBUG”发现可以连接但是没有数据发送,猜测是ADC没有中断来的原因,请问这个debug mode什么时候需要开启,什么时候需要关闭(我们的产品的最终形态应该会是应用层代码全放在flash里面,因为OTP空间已经不够了),关于这个debug mode究竟有什么需要注意的?谢谢!

布罗尔,

Young

young_dialog
离线
Last seen:3 years 7 months ago
加入:2016-05-10 07:14
补充:

补充:

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

布罗尔,

Young

snowdream1
离线
Last seen:4 months 3 weeks ago
工作人员
加入:2014-08-17 14:25
我的♥是你在SDK里面♥闪光灯

我的念头是你在SDK里奇♥Flash_Programming的工程,在Periph_init唱片里,加入对于の外设gpio状态设定的的作品,使外设都不代表作用。
覆盖C:\Users\XXXX\SmartSnippets\resources 下的flash_programmer.bin和jtag_programmer.bin。然后再下载试试。

关于这个CFG_DEVELOPMENT_DEBUG宏,主要是帮助你检查,不要重用GPIO;另外,就是deep sleep模式下,开了这个宏SRAM是不断电的。
i2c配置和开不起不开这个关键词〜

young_dialog
离线
Last seen:3 years 7 months ago
加入:2016-05-10 07:14
嗨snowdream1,

嗨snowdream1,

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

布罗尔,

Young

Gongyu_dialog.
离线
Last seen:3 days 11 hours ago
加入:2016-04-27 07:07
我觉里有UART擦除和烧写都很快的。

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

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

[info @ 16-08-15 14:54:39]报头记录已从十六进制文件BLE_APP_BAREBONE_580.HEX中删除。
[INFO @16-08-15 14:54:39] Read 20820 bytes from file ble_app_barebone_580.hex.

[info @ 16-08-15 14:54:56]固件文件c:\ users \ glu \ smartsnippets \资源\ flash_programmer.bin已被选中以下载。//开始连接
[信息@ 16-08-15 14:54:56]与COM28端口的连接已成功打开。
[info @ 16-08-15 14:54:56]开始下载程序...
[ACTION @16-08-15 14:54:57] Please press the hardware reset button on the board to start the download process.
[info @ 16-08-15 14:55:00]重置检测到
[信息@ 16-08-15 14:55:01]成功与COM28端口断开连接。
[INFO @16-08-15 14:55:02] Connection to COM28 port has successfully opened.
[INFO @16-08-15 14:55:02] Successfully disconnected from port COM28.
[info @ 16-08-15 14:55:02]成功下载了固件文件到电路板。
[信息@ 16-08-15 14:55:02]成功配置了SPI闪存端口和引脚。

[信息@ 16-08-15 14:55:23]与COM28端口的连接已成功打开。//擦除
[info @ 16-08-15 14:55:23]成功断开了COM28端口。
[INFO @16-08-15 14:55:23] SPI Memory erasing completed successfully.
[INFO @16-08-15 14:55:23] Reading memory to refresh memory contents....
[信息@ 16-08-15 14:55:23]与COM28端口的连接已成功打开。
[info @ 16-08-15 14:55:23]成功断开了COM28端口。
[信息@ 16-08-15 14:55:23]阅读已完成。阅读32768字节。

[INFO @16-08-15 14:55:30] Started burning memory with 21144 bytes of data at address 0x00000. //开始烧写
[INFO @16-08-15 14:55:30] Connection to COM28 port has successfully opened.
[信息@ 16-08-15 14:55:34]成功断开了COM28端口。
[信息@ 16-08-15 14:55:34]记忆刻录成功完成。
[info @ 16-08-15 14:55:34]阅读内存以刷新内存内容....
[信息@ 16-08-15 14:55:34]与COM28端口的连接已成功打开。
[INFO @16-08-15 14:55:41] Successfully disconnected from port COM28.
[INFO @16-08-15 14:55:41] Reading has finished. Read 32768 bytes.

[INFO @16-08-15 14:56:15] Connection to COM28 port has successfully opened. //擦除
[INFO @16-08-15 14:56:15] Successfully disconnected from port COM28.
[信息@ 16-08-15 14:56:15] SPI内存擦除成功完成。
[info @ 16-08-15 14:56:15]阅读内存以刷新内存内容....
[INFO @16-08-15 14:56:15] Connection to COM28 port has successfully opened.
[INFO @16-08-15 14:56:15] Successfully disconnected from port COM28.
[info @ 16-08-15 14:56:15]阅读已经完成。阅读32768字节

young_dialog
离线
Last seen:3 years 7 months ago
加入:2016-05-10 07:14
Hi Gongyu_Dialog,

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

布罗尔,

Young

Gongyu_dialog.
离线
Last seen:3 days 11 hours ago
加入:2016-04-27 07:07
共用没问题.jlink只只能烧,第二次烧不了

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

young_dialog
离线
Last seen:3 years 7 months ago
加入:2016-05-10 07:14
Hi Gongyu_Dialog,

Hi Gongyu_Dialog,

是不行。

布罗尔,

Young

young_dialog
离线
Last seen:3 years 7 months ago
加入:2016-05-10 07:14
Hi Gongyu_Dialog,

Hi Gongyu_Dialog,

我是用电我自己的板子,我可以在开发诗人上做一下测试。

布罗尔,

Young

smdzjl007
离线
Last seen:3年8个月前
加入:2015-08-04 15:07
我也遇到类似问题,请问最后有没有解决办法?

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

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

smdzjl007
离线
Last seen:3年8个月前
加入:2015-08-04 15:07
是不是因为设备设置了EXT_SLEEP_ON

是不是因为设备设置了EXT_SLEEP_ON,所以烧写一次之后,再连 JTAG 的时候,CPU 处于休眠模式,所以无法连接成功?

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

qinjiny_dialog.
离线
Last seen:6天前1周
工作人员
加入:2016-11-01 05:47
你好,

你好,

麻烦提供一下你有用的工程师一下你在练习工程时会遇到状况,我们好测试一下

谢谢

smdzjl007
离线
Last seen:3年8个月前
加入:2015-08-04 15:07
请问能否提供一个邮箱?网上上传很慢

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

qinjiny_dialog.
离线
Last seen:6天前1周
工作人员
加入:2016-11-01 05:47
测试的话可以只上传一个hex,或者打包后使用网盘链接来分享

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

smdzjl007
离线
Last seen:3年8个月前
加入:2015-08-04 15:07
非常感谢qinjiny,hex文库上传,请测试。如需代码

非常感谢qinjiny,hex文档上游,请测试。如需代码,还还请,谢谢!

附件:
qinjiny_dialog.
离线
Last seen:6天前1周
工作人员
加入:2016-11-01 05:47
你好。。我这边测试了一下你的hex文件

你好。。我这边测试了一下你的hex文件,烧写以后跑起来有一个广播名为BAXIAN_BLE几秒后消失。然后重新打开smartsnippets,JTAG模式,可以正常连接,擦除flash,重新烧写。

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

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

smdzjl007
离线
Last seen:3年8个月前
加入:2015-08-04 15:07
非常感谢!我遇到了也其它解决方法方法

非常感谢!我遇里也找到其它逆机方法。在加电力的时代,按重置按键,快速在Smartsnippets里面点击连接,就可以连接得上。感觉进入睡眠之象无法连接,重置之后如果手速比较快,就可以连接成功。连接成功之后,就可以软件

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

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

smdzjl007
离线
Last seen:3年8个月前
加入:2015-08-04 15:07
您好,

您好,

我的同事告诉我,我们的设计是从 Dialog 官网提供的 wechat IOT 参考设计改过来的.
https://support.dialog-semiconductor.com/connectivity/reference-designs?...

我把这个参考设计下载下来,打开睡眠模式:const static sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON; 在 user_config.h 文件。同时,关闭MD5和加密,只采用 EAM_macNoEncrypt 在mpbledemo2.h文件。

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

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

谢谢您的帮助!

smdzjl007
离线
Last seen:3年8个月前
加入:2015-08-04 15:07
qinjiny_dialog.

qinjiny_dialog.

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

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

附件: