你好,
我试图用UART协议引导我的代码进入DA14580设备。
我遵循了以下步骤:DA1458x从串行接口文档引导。
使用引脚:P0_4、P0_5
使用的波特率:57600
以下步骤:
1.发送重置请求。(RST脉冲长度Tc > 10 us)
2.从设备读取响应(0x02)。
3.将SOH = 0x01发送到设备。
4.发送代码的长度(LSB然后MSB)。
5.从设备接收ACK或NACK。
6.将代码的字节发送到设备。
7.从设备接收CRC。
9向设备发送ACK。
-我的代码失败在第2步,我没有收到任何东西从设备,我得到一个超时。
-探测Rx时,我可以看到1
-探测Tx时,我可以看到信号(请参见所附图像)
这是Tx上的正常信号吗?如果是,为什么我没有收到0x02从设备和我如何排除问题。
设备:
嗨Ezza,
设备启动时它开始扫描所有的外围设备(UART / I2C / SPI)没有办法改变或改变引导装载程序,我可以告诉什么TX它看起来像一个时钟信号,很显然你得到的是I2C的sci信号在第10步引导装载程序的一部分。所以显然设备是出了复位和引导加载程序正在执行,我不能看到引导加载程序是如何执行的,但在TX引脚上没有0x02。
由于MT_dialog
你好,
谢谢你的回复。
跳过第5步的原因是什么?
P0_4配置了正确的波特率UART。
我在发送重置信号,我在p0_4信号中看不到第5步。
没有在信号中看到第5步的可能解释是什么?
嗨Ezza,
就像我上面提到的,我不认为有一种方法可以跳过启动的UART部分,如果你没有看到UART STX信号,唯一合理的解释是你正在使用的工具或者连接在该引脚上的任何东西也在驱动线路。请在TX线上找到所附的引导加载程序信号。
由于MT_dialog
我在使用引脚p0-4/p0-5时遇到了同样的问题。我使用的是pan1740模块,它使用了Dialog DA14580。上电和复位低后,在UART-TX上我得到一个重复序列,如附件PDF中的第一张图片所示。
如果我放大5个20ms脉冲之前的尖峰,我会得到PDF中的第二张图片。这看起来像是一个带有开始/停止位的0x02,但是时间是关闭的。这似乎不是运行非常接近57600波特。而且,电压在1.4v时是空转的。我的系统在3.3v下运行。我认为这个应该在0伏或3.3伏空闲,而不是在中间。我已经打开了附加处理器中的弱上拉电阻,这个空闲电压没有改变。是开到1.4v吗?
第二张图片是否实际显示0x02字节?
波特率发生器的容限/可变性是什么?
位之间是否有额外的节奏时间?
为什么它在1.4v时空转?
任何有助于这项工作将是伟大的!
谢谢你!
JJ
嗨JJay,
由于MT_dialog
找到了我的问题。从…起previous work, the MCU had the UART connected to the BT module in a Low-Power mode using global power control registers. Not the normal UART config registers. Once I found this, I now receive the 0x02 byte. However, it is noted that the voltage still idles at 1.4v.
随着UART的工作,时间和信号发生了变化。接收0x02后,MCU接收线保持高位约60毫秒。然后下降到1.4v,持续3.9ms。这之后似乎会出现5组8组10位(时钟?),其速率高于57600波特USART使用的速率。我没有放大这5个分组中的每一个,以了解它们是否都是相同的。
在每组之间,它闲置在1.4v。然后循环并再次发送到0x02,不断重复这个序列。
此时我需要开始向BT模块添加响应代码和下载代码。
非常感谢。
嗨JJay,
线懒散地在1.4 v的原因是因为外部设备的原因是,因为针的580被配置为输入下拉在引导和外部设备的线路显然是把高时被配置为UART,所以自580年前的台词被配置为UART仍推倒,由于你有一个外部设备,将试图拉这些线高电压将闲置在0和3.3V(取决于电阻使用的上拉),但这应该不会给你造成任何问题。
由于MT_dialog