你好,
一块带有DA14585和闪存AT25XE011的定制板通过JTAG连接连接到开发板DA14580-DEVKT-PïVC。
使用SmartSnippetStudio V1.6.3.918 KielIDE,我可以在调试模式下运行固件。
我试图编程的外部闪存和它抛出我们的错误。我附上2个屏幕截图。希望你能看到他们的问题。
1) 我打开SmartSnippets工具箱,选择了JTAG序列号和芯片版本DA14585\U 00
2) 按下connect,工具显示已成功配置SPI闪存端口和引脚
3) SPI\u CLK:P0\u 0;SPI\u EN:P0\u 3;SPI\u DI:P0\u 5;SPI\u DO:P0\u 6
JTAG引脚连接为VBAT=3.2V;GND;SW\ U CLK;和SWDIO
4) 当我按“擦除”时,它会给出一个错误
[错误SPI闪存@18-05-08 13:14:00]SPI内存擦除失败。
5) 当我试图燃烧时,我得到:
[ERROR SPI Flash@18-05-08 13:15:10]JTAG地址0x81FEC处的附加错误信息(MSB优先):FF F8
[错误SPI闪存@18-05-08 13:15:10]内存刻录失败。
谢谢你的帮助
设备:
设备编号:
DA14585和AT25XE011
嗨,阿努希亚,
SmartSnippets工具箱使用flash\u程序员项目来烧录SPI flash。默认闪存编程器不支持Adesto 25XE011 SPI闪存。为了使用这种类型的内存,您应该修改flash编程器并添加SPI闪存的配置。您可以在SDK的以下路径中找到flash programmer项目:
DA1458x\U SDK\5.0.4\utilities\flash\U编程器
当您构建flash\u程序员项目时,您有两个选择,将其构建为程序员\u jtag或程序员\u uart。在您的情况下,您应该将其构建为程序员jtag。在修改和构建flash程序员项目之后,您应该复制jtag_程序员.bin从Out\jtag文件夹中,将其粘贴到SmartSnippetsStudio\Toolbox\common\u resources路径中(同名),该路径位于工具的安装文件夹中。之后,您可以将固件下载到ADESTO25XE011 SPI闪存中
谢谢,下午好
非常感谢你的建议。我做了修改,编译并复制了jtag_程序员.bin从Out\jtag文件夹将其粘贴到SmartSnippetsStudio\Toolbox\common\u resources路径中作为jtag_程序员.bin以及jtag\u programmer\u585.bin,因为该文件夹最初包含这两个文件。但同样的错误正在出现。我已经附上了flashu程序员项目文件和word文件与我所做的所有更改。
你能告诉我我犯了什么错误吗?
嗨,阿努希亚,
我无法复制你的问题,因为我们没有这种类型的SPI闪存,所以我们无法测试你的代码。请试着调试你的代码以找出错误的原因。我建议您将flash\u programmer项目构建为programmer\u uart,在调试模式下运行它,然后尝试通过uart从SmartSpippets连接SPI flash。通过这个过程,您可以找到您的代码所在的位置。
谢谢,下午好
你好,
我不是要求你实时调试代码。
由于Dialog的工作人员对flash程序员代码很有经验,Dialog的工作人员将知道为了添加不同的flash内存,到底需要在哪里添加信息。
我只是想让你目测一下我是否在所有相关的地方添加了信息。顺便说一句,我们选择AT25XE011作为第22页(共24页)上的文件AN-B-055,该文件表示支持。
另一方面,如果您可以给我一个flash程序员模板代码,其中包含关于要包含哪些信息的注释,并用一个公共标记(比如TODO,在TODO行上方有一个示例),那么当用户尝试引入不同的flash内存时,将更容易识别要包含的所有信息。
谢谢你
关于我所做的改变,我心中的一些问题是
包含在spi\u flash.c中
{AT25XE011\u JEDEC\u ID、AT25XE011\u JEDEC\u ID\u MATCHING\u BITMASK、AT25XE011\u TOTAL\u FLASH\u SIZE、AT25XE011\u PAGE\u SIZE、AT25XE011\u MEM\u PROT\u BITMASK、AT25XE011\u MEM\u PROT\u NONE},
作为清单中的第七项
const SPI \u FLASH \u DEVICE \u PARAMETERS \u BY \u JEDEC \u ID \u t SPI \u FLASH \u KNOWN \u DEVICES \u PARAMETERS \u LIST[]
这就需要改变
1) 在spi\u flash.h中从6数到7
//各种SPI闪存设备的定义
#define SPI\u FLASH\u DEVICES\u SUPPORTED\u COUNT(7)//AK:6之前的7
2) 然后include(索引从0开始,所以我不得不使用6。但是在SPI Flash设备定义中已经使用了6和6之后的数字。所以我很困惑。
//阿克。AT25XE011、AT25DF011
#在25xe011 6//?处定义SPI闪存设备索引??
#定义AT25XE011\u JEDEC\u ID 0x1F4200
#定义AT25XE011\u JEDEC\u ID\u匹配\u位掩码0xFFFF00
#定义AT25XE011\总\闪存\大小0x20000
#定义AT25XE011页面大小0x100
#定义AT25XE011\u MEM\u PROT\u位掩码4
#定义AT25XE011\u MEM\u PROT\u NONE 0
#定义AT25XE011内存保护整个内存保护4
我还在user\u periph\u setup.h中包含了以下几行
#define AT25XE011\u MANF\u DEV\u ID(0x1F42)//AK:AT25XE011 Manufacturer and ID
#define AT25XE011\u SIZE 131072//AK:SPI闪存大小(字节)
#define AT25XE011\u PAGE 256//AK:SPI闪存页大小(字节)
我是否正确地将所有配置信息包含在flashprogrammer项目的正确位置,或者我是否遗漏了任何内容或包含了错误的信息?
嗨,阿努希亚,
SDK和文档不支持闪存AT25XE011,在表6中提到了所有支持的内存,来自adesto系列的AT25DN011、AT25DF011、AT25DS011,而不是AT25XE011(文档在表7中只提到了该类型的闪存:支持的SPI内存的性能我将尝试找出我们提到的原因文档中的flash,因为我在flash程序员中没有看到该flash类型的引用)。关于您在代码中添加的内容,您是正确的(您不必更改periph\u setup.h文件中更改的内容,但即使更改了,也无所谓,因为没有使用这些定义,而是使用spi\u flash.h中的值),关于您使用的索引,这取决于您将在SPI\u flash\u KNOWN\u DEVICES\u PARAMETERS\u LIST[]中为flash分配的位置,在您的示例中,这是您插入的6。因此,如果您正在使用的flash与程序员中已经使用的adesto命令相同(检查spi\u flash.h)、WRITE\u ENABLE、READ\u DATA等,并且连接正确,您应该可以。如果没有,你将尝试访问闪存和调试固件,以了解为什么你不能与闪存接口。据我所知,从数据表的闪存,你提到的我看到,使用的命令是相同的,闪存应该工作,即使没有增加一个新的闪存模块,因为侦察的闪存发生通过JEDEC的ID是相同的,已经存在的Adesto的闪存程序员。
谢谢你的对话
正如PM\u对话框所确认的,在编译flash\u编程器和jtag时,smart snippets toolbox接受flash\u编程器中的AT25XE011配置更改_程序员.bin从Out\jtag文件夹复制并粘贴到SmartSnippetsStudio\Toolbox\common\u resources路径中,名称为jtag\u programmer\u 585.bin。
VCC和nCS电压正常。但所面临的问题是,由于加速度计LIS2DH12TR(未通电)与AT25XE011共用SPI线SI、SO和SCK,SI和SCK的电压降至1.5V以下,导致闪存对命令没有反应。一旦加速计LIS2DH12TR从定制板上卸下,闪存就可以编程了。
非常感谢您的帮助。