你好,
我试图使用UART协议到DA14580设备引导我的代码。
我遵循了以下步骤:DA1458x引导从串行接口文档。
使用的引脚:P0_4和P0_5
常用的波特率:57600
跟着步骤:
1.发送重置请求。(RST的脉冲长度TC> 10美国)
2.从设备(0×02)读取响应。
3.发送SOH = 0x01至该设备。
4.发送代码的长度(LSB然后MSB)。
5.接收设备的ACK或NACK。
6.发送代码的字节到设备。
7.从设备接收CRC。
9.向设备发送ACK。
- 我的代码在第2步失败,我没有收到来自任何设备,我得到一个超时。
-当探测Rx时,我可以看到1
-当探测Tx时,我可以看到信号(请见附件图片)
这是对的Tx健康的信号?如果是的话,为什么我不recieving从设备0×02,我怎么能解决问题。
设备:
嗨Ezza,
那么在启动它开始扫描所有的外设(UART / I2C / SPI)没有变化或改变的引导程序的方式,设备,我可以告诉了TX它看起来像一个时钟信号,显然你会得到什么SCL从第10步的引导加载程序的I2C部分信号因此很明显,该设备是出了复位和引导加载程序执行,我不能够看到引导程序是如何执行的,但有TX引脚上没有0×02。
谢谢mt_dialog.
你好,
谢谢您的回复。
有什么能跳过的步骤5的原因是什么?
P0_4与右波特率设置UART。
我送复位,而我看不到P0_4信号第5步。
什么是没有看到的信号步骤5中可能explinations?
嗨Ezza,
像我上面提到的我不认为有一种跳跃的UART部分启动,如果你不看到UART STX信号的唯一合理的解释是,您正在使用的工具或任何连接,销驱动线。请查收附件TX线上引导加载程序的信号。
谢谢mt_dialog.
我在使用针p0-4 / p0-5同样的问题。我使用它使用对话框DA14580的pan1740模块。上电,并采取复位低后,在UART-TX,我得到一个重复序列显示在PDF附件的第一张照片。
如果我在秒杀的五个20ms的脉冲放大之前,我得到的PDF第二张照片。这看起来可能是0×02与启动/停止位,但是时间结束了。这似乎不是很接近57600波特运行。此外,电压在1.4V至空转。我的系统运行在3.3V。我认为这应该在0V或3.3V闲着,不是在中间。我在所连接的处理器开启弱上拉电阻,这闲置的电压没有改变。难道是被驱动到1.4V?
第二幅图实际上显示了0x02字节吗?
什么是波特率发生器的耐受性/可变性?
是位之间有额外的起搏时间?
为什么在空转1.4V?
任何帮助让这个工作将是伟大的!
谢谢,
JJ.
嗨JJay,
谢谢mt_dialog.
发现了我的问题。从以往的工作中,MCU必须连接到使用全局功率控制寄存器低功耗模式下,BT模块的UART。不正常的UART配置寄存器。当我发现这一点,我现在收到0×02字节。然而,需要注意的是,电压仍然在空转1.4V。
随着UART的工作,时间和信号发生了变化。接收到0x02之后,MCU接收线保持高电平大约60ms。然后下降到1.4v,持续3.9毫秒。这似乎是随后5组8组10位(时钟?)以高于57600波特USART正在使用的速率。我没有把这5个分组都放大来确定它们是否都是一样的。
各组间它在空转1.4V。然后,它绕一圈,并将为0x02再不断地重复此序列。
在这一点上我需要开始添加的响应代码和代码下载到蓝牙模块。
谢谢你!
嗨JJay,
其原因在于在1.4V行空转是因为外部设备的,对于其原因是因为,580的销被引导期间配置为输入下拉和外部设备的线明显地拉高时被配置为UART,所以因为之前配置了580的线路作为UART仍在拉下来,因为你有一个外部设备,将尽量拉那些线高电压将在0和3.3V中间的某个地方闲置(取决于所使用的电阻在引体向上),但这应该不会造成你的任何问题。
谢谢mt_dialog.