UART引导 - 无法从设备接收数据

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
8 posts / 0 new
最后一篇
Ezza.
离线
最后一次露面:6个月前1年
加入:2017-09-07 11:33
UART引导 - 无法从设备接收数据

你好,
我正在尝试使用UART协议引导我的代码到DA14580设备中。
我从串行接口Doc引导了我的步骤:da1458x引导。

使用引脚:P0_4和P0_5
二手拟波特:57600

Followed steps:
1.发送重置请求。(RST脉冲TC> 10 US的长度)
2.从设备(0x02)的读取响应。
3.向设备发送SOH = 0x01。
4.发送代码的长度(LSB然后MSB)。
5. Receive ACK or NACK from the device.
6.将代码的字节发送到设备。
7. Recieve CRC from the device.
9. Send ACK to the Device.

- 我的代码在步骤2上失败,我没有从设备收到任何东西,我得到超时。
- When probing the Rx I can see 1
- When probing Tx I can see signals (Plz see the attached images)

这是Tx上的健康信号吗?如果是,为什么我没有从设备中回收0x02,以及如何处理问题。

附件:
设备:
mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨Ezza,

嗨Ezza,

嗯,启动它在启动时启动扫描所有外围设备(UART / I2C / SPI)无法更改或更改引导加载程序,我可以告诉TX它看起来像时钟信号,显然你得到的是scl来自STEP 10的引导加载程序的I2C部分的信号。因此,所以可以显然,设备超出了重置,引导加载程序正在执行,我无法看到引导加载程序是如何执行的,但TX引脚上没有0x02。

谢谢mt_dialog.

Ezza.
离线
最后一次露面:6个月前1年
加入:2017-09-07 11:33
你好,

你好,
Thanks for the reply.
什么可能是跳过第5步的原因?
P0_4配置了UART,具有右波特率。
我发送重置,我看不到p0_4信号中的步骤5。

在信号中没有看到步骤5的可能探索是什么?

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨Ezza,

嗨Ezza,

Like i ve mentioned above i dont think that there is a way of skipping the UART section of the booting, if you dont see the UART STX signal the only reasonable explanation is that the tool that you are using or anything that is connected on that pin is driving the line as well. Please find attached a signal of the bootloader on the TX line.

谢谢mt_dialog.

附件:
jjay.
离线
最后一次露面:3年2个月前
加入:2017-08-28 19:53
我有同样的问题

我使用引脚PIN P0-4 / P0-5有同样的问题。我正在使用使用对话框DA14580的Pan1740模块。在开机后和重置为低电平,在UART-TX上,我在附加的PDF中的第一张照片中获得重复序列。

如果我在五个20ms脉冲之前放大尖峰,我将在PDF中获得第二张照片。这看起来可能是一个0x02,开始/停止位,但时间关闭。这似乎没有非常接近57600波特。此外,电压在1.4V时空转。我的系统在3.3V时运行。我认为这应该在0V或3.3V处空闲,而不是在中间。我在附加处理器中打开弱的上拉电阻,这个空闲电压没有改变。它被驱动到1.4V吗?

Does the second picture actually show the 0x02 byte?
波特率发生器的容差/可变性是多少?
位之间有额外的起搏时间吗?
为什么它在1.4V时空闲?

Any help getting this working would be great!

谢谢,
JJ.

附件:
mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨jjay,

嗨jjay,

  1. Yes, it seems that its a 0x02 byte except that the fact that indeed the line idles at 1.4 Volt, which something that should not occur, at least i dont see something like this on my side.
  2. 580不能产生57600的波特拉特,但生成的实际波特率是58823.529,这意味着您将出现2.124%的错误
  3. 关于额外的节奏,没有there is no extra pacing, with the error the baud rate generation should give about a period of 17us per transmited bit.
  4. 如上所述,我没有看到1.4V的任何既闲垂,当在我的侧面检查时,线路在0V和3.3V之间切换,我想别的东西导致这一点,你是否确定了从外向上的上拉配置没有任何区别?

谢谢mt_dialog.

jjay.
离线
最后一次露面:3年2个月前
加入:2017-08-28 19:53
找到了我的问题。From

找到了我的问题。从以前的工作,MCU使用全局电源控制寄存器以低功耗模式连接到BT模块的UART。不是正常的UART配置寄存器。一旦我找到了这个,我现在就接收0x02字节。但是,有人指出,电压仍然在1.4V时闲置。

With the UART now working, the timing and signal has changed. After the 0x02 is received, the MCU receive lines stays high for roughly 60ms. It then drops down to 1.4v for 3.9ms. This appears to be followed by 5 groups of 8 sets of 10-bits (clocks?) at a higher rate than the 57600 baud USART is using. I've not zoomed in on each of these 5 groupings to know if they are all the same.

在每个组之间,在1.4V时闲置。然后它循环循环并再次发送到0x02,不断重复此序列。

此时,我需要开始将响应代码添加到BT模块中的响应代码和下载代码。

Thank you!

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨jjay,

嗨jjay,

在1.4V时的线路怠速是因为外部设备,原因是因为580的引脚被配置为在引导期间的输入下拉,当外部设备的线条被配置为UART时,显然会拉高,所以由于在580的行配置为UART之前,仍然被拉下来,并且由于您的外部设备将尝试拉出这些线路,因此电压将在0到3.3V的中间空闲(取决于所使用的电阻在拉起起来),但这不应该导致你有任何问题。

谢谢mt_dialog.