你好,
我无法执行OTP程序。可能是由于在发送到OTP的头数据和实际写入的数据之间发现了差异。正如您在附加的屏幕截图中所看到的,发送的数据和写入的数据之间存在差异。看来烧录的数据和我指定的不一样。
现在这个装置已经被烤焦了。
有什么发现吗?谢谢。
艾德
嗨edlofau,
我不认为我听说过任何关于OTP燃烧的问题,从你读的图像中我可以看到不同偏移的OTP NVDS,一个是40000,另一个是44000,同时在NVDS部分有一个标志,允许数据插入到NVDS区域,这个标志是CFG_INITIALIZE_NVDS_STRUCT。如果你用这个标志集刻录了那个图像,那么你就用那个数据刻录了NVDS区域,而不仅仅是你用OTP NVDS刻录器设置的数据。
由于MT_dialog
谢谢你的回复。
我找不到这面旗帜,正如你在图片中看到的,它没有出现。
无论如何,我理解这个问题可能是由补偿引起的。
对如何编程OTP有一个简短的总结将非常有帮助。我使用的是你为DA14580提供的原始样例DSPS,没有变化。该映像是用调试标志= 0构建的。我附上了我想编程的数据,也许如果你能快速看一下确定一些问题…
我的主要疑问是两个可用的偏移量(图像和nvds),我应该放哪个值?
为了成功地执行编程,我还需要注意其他参数吗?
非常感谢,艾德
我所说的标志位于SDK中,而不是在OTP NVDS或Header中。如果你刻录的图像在SDK中启用了这个标志,那么NVDS结构区域已经被SDK的值填充了。当你在OTP中烧录NVDS数据时,你将OTP中已经准备好的数据与你想在OTP NVDS中烧录的数据进行了or操作。NVDS不是OTP映像的独立部分。当你刻录SDK创建的没有我前面提到的标志的图像时,NVDS区域应该有零,以便你从OTP NVDS工具刻录该区域的空白作为NVDS区域。NVDS与OTP起始地址0x4000的偏移量为0x340。
我在DSDP例子中找不到这个标志,我也在SDK中找不到DSDP。
我发现标志在SDK的例子有写,在文件DA1458x_config_advanced.h,但这个文件不存在DSDP。
谢谢,
在SDK 5 DSPS中,这个标志,据我所知,位于第36行da1458x_config_advanced.h中,这将初始化或不初始化位于第41行NVDS .c文件中的NVDS结构。
我从这里下载了SDK5https://support.dialog-semiconductor.com/download/file/fid/2759我找不到一个叫DSDP的项目。放在哪里?这是keil5项目还是??感谢和抱歉,艾德
该项目被称为DSPS,位于支持站点的参考设计部分之下。
我看到我用的是旧版本的DSDP。我下载了最后一个,最后找到da1458x_config_advanced.h文件和标志…非常感谢您的耐心。问候,艾德
你好再次,
我有DSPS代码运行OK在RAM(通过智能snippet -booter),它使BLE串行桥所需要的。现在,为了放入OTP,我想有一种清单,以便正确地燃烧OTP,据我所知:
1)在Keil5中使用以下标志编译:#定义CFG_BOOT_FROM_OTP#定义CFG_INITIALIZE_NVDS_STRUCT
2)在SmartSnippets中,在OTP部分,我用之前的。hex(offset = 0)刻录OTP映像3)没有为NVDS OTP做什么(因为OTP映像照顾它由于CFG_INITIALIZE_NVDS_STRUCT)4)OTP头—>许多疑问:我想我需要把第一个标志(应用在OTP)都设置为yes。但是其他参数呢?对于DSPS,我需要在这里加载更多的东西吗?
谢谢!
你提到的步骤是正确的,关于最后一步,通过燃烧国旗你的应用程序都将迫使580年从OTP,不会扫描启动外围设备寻找一个图像,通过这样做,DMA长度为1 fc0 (OTP的长度形象的话,你应该设定,为了完整的OTP sysram被复制,以防)你应该能够从OTP运行应用程序。关于其他参数,您可以查看智能片段用户指南。pdf,以检查OTP头的其他字段做什么。也有相当多的论坛帖子关于OTP头烧程序,请随意搜索论坛。
嗨,对话框中,
我期望燃烧头与以下值:
o应用程序标志1和2在0x47F00和0x47F04 = YESo 32KHz源段(4字节)在0x47F74。外部晶体o DMA长度(4字节)在0x47FF8 = 1FC0
我不会对剩下的值进行编程。有道理吗?
最后一个问题。我观察到,对于深度睡眠模式,我没有通信主机<->设备。而在扩展模式下,我有了通信,但是在传输过程中丢失了很多字符。为了配置它们,例如在deep中使用:# undef CFG_MEM_MAP_EXT_SLEEP#定义CFG_MEM_MAP_DEEP_SLEEPapp_default_sleep_mode = ARCH_DEEP_SLEEP_ON;(user.config.h)
我错过什么了吗?我是否应该在OTP编程中负责任何其他配置?
非常感谢!艾德
是的,它是这样的,确保重新映射标志有SRAM在0(这是默认的,但只是以防万一),并保持JTAG启用标志(这也是默认的),以便能够通过JTAG重新连接到设备。
DSPS只支持用户手册上的扩展睡眠模式,不支持深度睡眠。我没看到任何东西丢失,在扩展睡眠模式下用DSPS fw烧坏你的设备。关于字符丢失检查,您已经启用了HW流控制,并确保它也在您的PC终端上启用,也检查您与RTS/CTS的连接与您的板。
非常感谢您的回复。
我把它代入扩展。你知道当设备没有配对时,当前的消耗是多少吗?顺便说一下,如果睡眠模式是关闭的,且设备没有配对,那么当前是多少?
我没有RTS/CTS线从我的MCU,所以我不使用流量控制。这会是一个问题吗?
谢谢,艾德
你可以在功耗FAQ中找到关于580功耗的信息(休眠功耗,传输,接收)。DSPS的消耗并没有什么不同,在整个系统中造成差异的是广告间隔和连接间隔(它们越短,消耗的电量越多)。此外,在dsp中,功耗取决于传输的数据量,当设备传输时,睡眠模式被取消,设备保持清醒,直到缓冲区中没有数据。当设备未休眠时,它消耗约0.6mA,而不是休眠时的1.4uA。此外,由于不是所有的中心设备都有相同的行为(接受不同的广告间隔,每个连接间隔中不同数量的包,等等),功耗也取决于您所使用的中心。
对于RTS/CTS,是的,流量控制是设备为了操作而需要的东西,因为它睡着了,它必须有一种方式来通知外部MCU,它是醒着的或它已经睡着了,这样外部MCU就知道什么时候发送数据,什么时候停止。没有它,你就无法在睡眠模式下工作。
嗨edlofau,
我不认为我听说过任何关于OTP燃烧的问题,从你读的图像中我可以看到不同偏移的OTP NVDS,一个是40000,另一个是44000,同时在NVDS部分有一个标志,允许数据插入到NVDS区域,这个标志是CFG_INITIALIZE_NVDS_STRUCT。如果你用这个标志集刻录了那个图像,那么你就用那个数据刻录了NVDS区域,而不仅仅是你用OTP NVDS刻录器设置的数据。
由于MT_dialog
你好,
谢谢你的回复。
我找不到这面旗帜,正如你在图片中看到的,它没有出现。
无论如何,我理解这个问题可能是由补偿引起的。
对如何编程OTP有一个简短的总结将非常有帮助。我使用的是你为DA14580提供的原始样例DSPS,没有变化。该映像是用调试标志= 0构建的。我附上了我想编程的数据,也许如果你能快速看一下确定一些问题…
我的主要疑问是两个可用的偏移量(图像和nvds),我应该放哪个值?
为了成功地执行编程,我还需要注意其他参数吗?
非常感谢,
艾德
嗨edlofau,
我所说的标志位于SDK中,而不是在OTP NVDS或Header中。如果你刻录的图像在SDK中启用了这个标志,那么NVDS结构区域已经被SDK的值填充了。当你在OTP中烧录NVDS数据时,你将OTP中已经准备好的数据与你想在OTP NVDS中烧录的数据进行了or操作。NVDS不是OTP映像的独立部分。当你刻录SDK创建的没有我前面提到的标志的图像时,NVDS区域应该有零,以便你从OTP NVDS工具刻录该区域的空白作为NVDS区域。NVDS与OTP起始地址0x4000的偏移量为0x340。
由于MT_dialog
你好,
谢谢你的回复。
我在DSDP例子中找不到这个标志,我也在SDK中找不到DSDP。
我发现标志在SDK的例子有写,在文件DA1458x_config_advanced.h,但这个文件不存在DSDP。
谢谢,
艾德
嗨edlofau,
在SDK 5 DSPS中,这个标志,据我所知,位于第36行da1458x_config_advanced.h中,这将初始化或不初始化位于第41行NVDS .c文件中的NVDS结构。
由于MT_dialog
我从这里下载了SDK5https://support.dialog-semiconductor.com/download/file/fid/2759我找不到一个叫DSDP的项目。
放在哪里?这是keil5项目还是??
感谢和抱歉,
艾德
嗨edlofau,
该项目被称为DSPS,位于支持站点的参考设计部分之下。
由于MT_dialog
我看到我用的是旧版本的DSDP。
我下载了最后一个,最后找到da1458x_config_advanced.h文件和标志…
非常感谢您的耐心。
问候,
艾德
你好再次,
我有DSPS代码运行OK在RAM(通过智能snippet -booter),它使BLE串行桥所需要的。现在,为了放入OTP,我想有一种清单,以便正确地燃烧OTP,据我所知:
1)在Keil5中使用以下标志编译:
#定义CFG_BOOT_FROM_OTP
#定义CFG_INITIALIZE_NVDS_STRUCT
2)在SmartSnippets中,在OTP部分,我用之前的。hex(offset = 0)刻录OTP映像
3)没有为NVDS OTP做什么(因为OTP映像照顾它由于CFG_INITIALIZE_NVDS_STRUCT)
4)OTP头—>许多疑问:我想我需要把第一个标志(应用在OTP)都设置为yes。但是其他参数呢?对于DSPS,我需要在这里加载更多的东西吗?
谢谢!
嗨edlofau,
你提到的步骤是正确的,关于最后一步,通过燃烧国旗你的应用程序都将迫使580年从OTP,不会扫描启动外围设备寻找一个图像,通过这样做,DMA长度为1 fc0 (OTP的长度形象的话,你应该设定,为了完整的OTP sysram被复制,以防)你应该能够从OTP运行应用程序。关于其他参数,您可以查看智能片段用户指南。pdf,以检查OTP头的其他字段做什么。也有相当多的论坛帖子关于OTP头烧程序,请随意搜索论坛。
由于MT_dialog
嗨,对话框中,
我期望燃烧头与以下值:
o应用程序标志1和2在0x47F00和0x47F04 = YES
o 32KHz源段(4字节)在0x47F74。外部晶体
o DMA长度(4字节)在0x47FF8 = 1FC0
我不会对剩下的值进行编程。有道理吗?
最后一个问题。我观察到,对于深度睡眠模式,我没有通信主机<->设备。而在扩展模式下,我有了通信,但是在传输过程中丢失了很多字符。为了配置它们,例如在deep中使用:
# undef CFG_MEM_MAP_EXT_SLEEP
#定义CFG_MEM_MAP_DEEP_SLEEP
app_default_sleep_mode = ARCH_DEEP_SLEEP_ON;(user.config.h)
我错过什么了吗?我是否应该在OTP编程中负责任何其他配置?
非常感谢!
艾德
嗨edlofau,
是的,它是这样的,确保重新映射标志有SRAM在0(这是默认的,但只是以防万一),并保持JTAG启用标志(这也是默认的),以便能够通过JTAG重新连接到设备。
DSPS只支持用户手册上的扩展睡眠模式,不支持深度睡眠。我没看到任何东西丢失,在扩展睡眠模式下用DSPS fw烧坏你的设备。关于字符丢失检查,您已经启用了HW流控制,并确保它也在您的PC终端上启用,也检查您与RTS/CTS的连接与您的板。
由于MT_dialog
你好,
非常感谢您的回复。
我把它代入扩展。你知道当设备没有配对时,当前的消耗是多少吗?顺便说一下,如果睡眠模式是关闭的,且设备没有配对,那么当前是多少?
我没有RTS/CTS线从我的MCU,所以我不使用流量控制。这会是一个问题吗?
谢谢,
艾德
嗨edlofau,
你可以在功耗FAQ中找到关于580功耗的信息(休眠功耗,传输,接收)。DSPS的消耗并没有什么不同,在整个系统中造成差异的是广告间隔和连接间隔(它们越短,消耗的电量越多)。此外,在dsp中,功耗取决于传输的数据量,当设备传输时,睡眠模式被取消,设备保持清醒,直到缓冲区中没有数据。当设备未休眠时,它消耗约0.6mA,而不是休眠时的1.4uA。此外,由于不是所有的中心设备都有相同的行为(接受不同的广告间隔,每个连接间隔中不同数量的包,等等),功耗也取决于您所使用的中心。
对于RTS/CTS,是的,流量控制是设备为了操作而需要的东西,因为它睡着了,它必须有一种方式来通知外部MCU,它是醒着的或它已经睡着了,这样外部MCU就知道什么时候发送数据,什么时候停止。没有它,你就无法在睡眠模式下工作。
由于MT_dialog