嗨,团队,
我们使用的是定制硬件,其中包括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的一方到主人。在比特率方面,由于DA14580作为一个从机,时钟是由另一个作为主机的微控制器产生的。
谢谢,PM_Dialog
嗨,团队,
谢谢您的回复。最后,我们决定购买DA14580开发工具包基础工作,并发现可能的问题。这似乎与微控制器的配置有关。当它试图与芯片通信读取或接收数据时,它先发送“X”,然后接收“Y”;然而,如果它尝试只写,它接收响应的方式,所以你可以访问在Rx缓冲区的ACK通过取消激活SPI接收功能的Read命令。和…如果我们运行代码,它接收两个第一个ACK,我的意思是,序言和长度+crc ACK(不总是),但不是0xAA和0x02安全在最后。我们检查了Flash内容,它是空的(充满0xFF)。
我们按照说明书的说明,将两个设备连接如下(SCLK, /CS, MISO, MOSI引脚属于单片机):
- sck到P0_0的开发套件。
- /CS到P0_3的Dev-kit。
- MISO到P0_6的开发套件。
- Dev-kit的MOSI到P0_5。
我们已经插入了延迟功能(110毫秒),并试图连接DA14580 Dev-kit (Flash)的SPI引脚,但它不工作。还有什么问题我们可以考虑的吗?
如果我们找到了解决方案,就会发布出来。
谢谢。
嗨,团队,
最后,我们真的认为这个问题是由连接两个设备的电线引起的,正如你之前提到的,因为尖峰和反射。通过MISO线接收的数据与我们期望接收的数据类似,有时显示为0x70和/或0x50十六进制数据(它们都是用于初始化引导过程的数据)。
问题是我们需要用这些电线来连接它们之间的设备。我们如何避免这些影响?还有其他影响因素吗?也许是一个跳线,我们可以删除(或不)或任何引脚,除了四个SPI线必须连接?
非常感谢。
嗨AlejandroCastillo,
事实上,你有一个定制的硬件和线路连接没有飞线,这与你的PCB有关。通常我们使用33欧姆的终端电阻。
谢谢,PM_Dialog
嗨,团队,
我们找到了解决办法。该数据表有一个“非期望的影响”部分,其中解释了可能的不良响应与电压调节器和ADC(一个引入噪声效应的另一个),所以我们试图使用屏蔽电缆,以检查我们是否可以减少这一点和…它工作!
谢谢您的关注。
嗨AlejandroCastillo,
很高兴你明白了,谢谢你的暗示。如果您有任何其他问题,请创建一个新的论坛帖子!
谢谢,PM_Dialog