嗨,团队,
我们使用的是定制硬件,其中包括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中?在第一种情况下,我建议使用较短的电线来降低噪声。在第二种情况下,请检查您正确终止SPI行的PCB。通常我们使用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