嗨,团队,
我们正在使用一个定制的硬件,其中包括DA14580设备。我们想通过使用SPI协议通过另一个作为主的微控制器(ADuCM4050)引导它,所以我们已经实现了一些功能的应用说明文档(从串行接口引导)。发送的第一个包由前序、0x00和Length LS字节组成。如果一切正常,我们可能会在rx缓冲区(从0开始)的位置3收到一个ACK(它的值是0x02),但情况并非如此。事实上,我们得到的结果如附件中的pdf所示。
这里的问题是SPI应该发送数据,然后,接收来自DA14580的响应,但似乎rx缓冲区捕获[0xce, 0xc0, 0x02, 0xc0]安全,而不是[0xc0, 0xdc, 0xd4,0 x02]。SPI比特率设置最低。
有什么想法吗?
谢谢。
设备:
嗨,亚历杭德罗,
谢谢你的问题。让我查一下,然后再回复你。
问候,PM_Dialog
嗨,亚历杭德罗,
外部微控制器和DA14580之间的接线是否已经设置好了,或者两者都放在同一个PCB上?在第一种情况下,我建议使用较短的电线来减少噪音。在第二种情况下,请检查您的PCB是否正确终止了SPI线。通常我们使用33欧姆的终端电阻。关于灵敏度,由于峰值和反射,在大多数情况下,这是DA14580侧没有与主服务器进行任何通信的原因。
谢谢,PM_Dialog
嗨,团队,
谢谢你的回复。我们有两个组件在同一个PCB。我们已经按照建议将电阻放在SPI线中,但它还不能正常工作。很奇怪,因为DA14580将响应发送到微,所以我们认为这个问题是与时间有关(似乎微有问题,对话框发送答案比ADuCM4050之前完成它的问题,所以它不能把它检查如果ACK或NACK)。
DA14580是否可能配置了不同的比特率,主/从模式或其他,忽略了单片机的SPI配置?我们看不出有什么其他原因导致了这种情况。
谢谢。
嗨,亚历杭德罗,
让我检查你的问题,我会让你知道。
谢谢,PM_Dialog
嗨,亚历杭德罗,
就像之前提到的,这可能是由于SPI信号之间的尖峰、反射和噪声。这是DA14580与master之间没有任何通信的最常见原因。在比特率方面,由于DA14580作为slave,时钟由另一个单片机作为master产生。
谢谢,PM_Dialog
嗨,团队,
谢谢你的回复。最后,我们决定购买DA14580开发工具包基本工作和发现什么可能是问题。这似乎与微控制器的配置有关。当它试图与芯片通信读取或接收数据时,它先发送“X”,然后接收“Y”;但是,如果它尝试只写,它会通过这种方式接收响应,所以你可以通过在SPI接收功能中取消激活Read命令来访问Rx缓冲区中的ACK。和…如果我们运行代码,它接收两个第一个ACK,我的意思是,前置和长度+crc ACK(不总是),但不是最后的0xAA和0x02安全。我们检查了Flash内容,它是空的(满是0xFF)。
我们按照手册的说明将两台设备连接如下(SCLK, /CS, MISO和MOSI引脚属于微控制器):
-开发工具包的SCLK到P0_0。
- Dev-kit的/CS到P0_3。
- MISO到P0_6的开发套件。
- MOSI到P0_5的开发工具包。
我们已经插入了一个延迟函数(110毫秒),并尝试连接DA14580 Dev-kit (Flash)的SPI引脚,但它不能工作。还有什么别的问题我们可以考虑的吗?
如果我们找到了解决办法,就会公布出来。
谢谢。
嗨,团队,
最后,我们真的认为问题是由连接两个设备的电线引起的,就像你之前提到的,因为尖峰和反射。通过MISO线接收的数据与我们期望接收的数据类似,有时反映的值为0x70和/或0x50十六进制数据(它们都是用于初始化引导进程的数据)。
问题是我们需要用这些电线来连接其中的设备。我们如何避免这些影响?还有其他因素会影响到你吗?也许一个跳线,我们可以删除(或不)或任何引脚必须连接除了四个SPI线?
非常感谢。
嗨AlejandroCastillo,
事实上,你有一个定制的硬件和线连接没有飞线,这与你的PCB有关。通常我们使用33欧姆的终端电阻。
谢谢,PM_Dialog
嗨,团队,
我们找到了解决方案。该数据表有一个“非期望的影响”部分,它解释了可能与电压调节器和ADC相关的不良响应(一个引入了噪声影响到另一个),所以我们尝试使用屏蔽电缆来检查我们是否可以减少这一点和…它工作!
谢谢大家。
嗨AlejandroCastillo,
很高兴你发现了自己的问题谢谢你的暗示。如果您有任何其他问题,请创建一个新的论坛帖子!
谢谢,PM_Dialog