你好,
我正在尝试使用UART协议将代码引导到DA14580设备中。
我遵循了以下步骤:DA1458x从串行接口启动doc。
使用过的引脚:P0\ U 4和P0\ U 5
使用波特率:57600
跟踪步骤:
1发送重置请求(RST脉冲长度(Tc>10 us)
2从设备读取响应(0x02)。
三。发送SOH=0x01到设备。
4发送代码的长度(LSB然后MSB)。
5.从设备接收ACK或NACK。
6将代码的字节发送到设备。
7.从设备接收CRC。
9.将ACK发送到设备。
-我的代码在第2步失败,我没有从设备收到任何东西,我得到一个超时。
- 探测RX时,我可以看到1
- 当探测TX时,我可以看到信号(PLZ查看附加的图像)
Tx上的信号正常吗?如果是,为什么我没有从设备接收0x02以及如何解决问题。
设备:
嗨,埃扎,
设备启动后,它开始扫描所有外围设备(UART/I2C/SPI)没有办法改变或改变引导加载程序,我能告诉你的是,TX看起来像一个时钟信号,显然你得到的是来自第10步引导加载程序I2C部分的SCL信号。所以很明显,该设备已超出复位和引导加载程序正在执行,我无法看到如何引导加载程序正在执行,但没有0x02的TX引脚。
谢谢你的对话
你好,
谢谢回复。
跳过第5步的原因是什么?
p0u4被配置为具有正确波特率的UART。
我正在发送重置,但在p0u4信号中看不到第5步。
没有看到信号中第5步的可能解释是什么?
嗨,埃扎,
就像上面提到的那样,我不认为有一种方法是跳过启动的UART部分,如果你没有看到UART STX信号,那么你正在使用的工具或者在该引脚上连接的工具驾驶这条线也是如此。请在TX线上附上引导加载程序的信号。
谢谢你的对话
我在使用引脚p0-4/p0-5时遇到了同样的问题。我使用的是pan1740模块,它使用DA14580对话框。上电后,采取复位低,在UART-TX我得到一个重复的序列,如所附的PDF中的第一张图片所示。
如果我在5个20毫秒脉冲前放大峰值,我会得到PDF中的第二张图片。这看起来可能是一个带有开始/停止位的0x02,但计时已关闭。这似乎不是运行非常接近57600波特。此外,电压在1.4伏时处于空转状态。我的系统是3.3伏。我认为这应该是在0V或3.3V,而不是在中间。我已经打开了连接的处理器中的弱上拉电阻,这个空闲电压没有改变。是开到1.4伏吗?
第二张图片实际上是否显示了0x02字节?
波特率发生器的容差/可变性是什么?
位之间是否有额外的起搏时间?
为什么它在1.4v时空转?
有任何帮助让这个工作会很棒!
谢谢您,
JJ公司
嗨,杰伊,
谢谢你的对话
找到我的问题了。在以前的工作中,MCU使用全局功率控制寄存器以低功率模式将UART连接到BT模块。不是普通的UART配置寄存器。一旦我找到这个,我现在收到0x02字节。但是,需要注意的是,电压仍然在1.4v时空转。
随着UART现在工作,时序和信号已发生变化。在收到0x02之后,MCU接收线保持高约60ms。然后下降到3.9ms的1.4V。这似乎是5组8组10位(时钟?),比57600波特USART使用的速度更高。我在这5个分组中的每一个都没有放大,以知道它们是否都是一样的。
每组之间的电压为1.4v。然后它循环并再次发送到0x02,不断重复这个序列。
在这一点上我需要开始添加响应代码和下载代码到BT模块。
谢谢!
嗨,杰伊,
线路在1.4V时空转的原因是因为外部设备,原因是因为580的引脚在引导期间配置为输入下拉,而外部设备的线路在配置为UART时明显被拉高,所以在580的线路配置为UART之前,仍然被拉低,而且,由于你有一个外部设备,将试图拉高这些线路的电压将闲置在0和3.3V(取决于电阻是在拉高使用),但这不应该引起你任何问题。
谢谢你的对话