大家好,
我们正在使用包括DA14580设备的自定义硬件。我们希望通过使用SPI协议通过另一个微控制器作为主(ADUCM4050)启动它,因此我们在应用程序注释文档(从串行接口启动)之后实现了一些功能。发送的第一个数据包由序言组成,A 0x00和长度LS字节组成。如果一切都很好,我们可能会在RX缓冲区的位置3(从0)的位置3中获得ACK(其值为0x02),但事实并非如此。实际上,我们获得了所附PDF中显示的结果。
The problem here is that the SPI should send data, and then, receive the response from DA14580, but it seems that rx buffer catchs the [0xce, 0xc0, 0x02, 0xc0] secuence instead of [0xc0, 0xdc, 0xd4,0x02]。SPI比特率集是最低的。
对此有任何想法吗?
谢谢。
设备:
嗨,亚历杭德罗,
感谢您的问题。让我检查一下,我将与您联系。
问候,pm_dialog
嗨,亚历杭德罗,
您是否在外部微控制器和DA14580之间进行了设置接线,或者两者都放置在同一PCB中?在第一种情况下,我建议使用较短的电线来减少噪音。在第二种情况下,请检查您正确终止SPI线路的PCB。通常,我们使用33欧姆终端电阻。关于敏感性,由于尖峰和反思,在大多数情况下,这就是DA14580方面没有任何沟通的原因。
谢谢,pm_dialog
大家好,
谢谢回复。我们在同一PCB中都有两个组件。推荐后,我们将电阻器放在SPI线上,但尚未正常工作。这很奇怪,因为DA14580发送了对微观的回答,因此我们认为问题与时机有关(似乎Micro提出了一个问题,并且对话框以前是ADUCM4050之前发送答案,因此不能接受。它可以检查ACK还是NACK)。
DA14580是否可能配置有不同的比特率,主/从模式或任何其他模式,并且它忽略了微控制器的SPI配置?我们看不到任何可能引起这种情况的事情。
谢谢。
嗨,亚历杭德罗,
让我检查您的问题,我会告诉您。
谢谢,pm_dialog
嗨,亚历杭德罗,
这有点奇怪……如前所述,这可能是由于SPI信号之间的尖峰,反射和噪音所致。这是最常见的原因,即DA14580方面没有任何通信。关于比特率,由于DA14580充当从属,因此时钟是由另一个微控制器生成的,该微控制器充当主机。
谢谢,pm_dialog
大家好,
谢谢回复。最后,我们决定购买DA14580 DEV-KIT基本的工作,并发现可能是什么问题。看来它与微控制器配置有关。当它试图与芯片通信以读取或接收数据时,它首先发送“ x”,然后接收“ y”;但是,如果它仅试图写作,它会通过方式接收响应,因此您可以通过在SPI接收函数中停用读取命令来访问RX缓冲区中的ACK。好吧...如果我们运行代码,它会收到两个第一个ACK,我的意思是,序言和长度+CRC ACK(并非总是),但最终不是0xAA和0x02 Secuence。我们检查了闪存内容,它是空的(满是0xff)。
我们遵循手册的说明,并将两个设备连接如下(SCLK, /CS,MISO和MOSI PIN属于微控制器):
-DEV-KIT的SCLK至P0_0。
- /cs到dev-kit的p0_3。
- Dev-Kit的P0_6味o。
-MOSI至DEV-KIT的P0_5。
我们已经插入了一个延迟功能(110 ms),并试图与DA14580 Dev-Kit(Flash)的SPI引脚连接,但它不起作用。我们还有其他要考虑的观点吗?
如果我们找到解决方案,我们将发布它。
谢谢。
大家好,
最后,我们真的认为问题是由于尖峰和反射而引用的,正如您先前所指的那样,连接两个设备引起的。通过MISO系列接收的数据类似于我们期望收到的数据,有时会反映为0x70和/或0x50 HEX数据(它们都是用于INIT引导过程的数据)。
问题是我们需要使用这些电线将它们之间的设备连接起来。我们如何避免这些效果?还有其他可能影响的因素吗?也许我们可以删除(或不)的跳线或除了四条SPI线外还必须连接的任何销钉?
非常感谢。
嗨,Alejandrocastillo,
实际上,您有一个自定义硬件,并且线路连接而没有飞线,这与您的PCB有关。通常,我们使用33欧姆终端电阻。
谢谢,pm_dialog
大家好,
我们找到了解决方案。该数据表具有“不谨慎的效果”部分,其中解释了与电压调节器和ADC相关的可能不良响应(一个向另一个引入噪声效应),因此我们尝试使用屏蔽电缆检查是否可以减少它。.. 有效!
感谢您的关注。
嗨,Alejandrocastillo,
很高兴您发现自己发行了,并感谢您的迹象。如果您还有其他问题,请创建一个新的论坛线程!
谢谢,pm_dialog