Hi,
I'm trying to boot my code using UART protocol into the DA14580 device.
I have followed the steps from: DA1458x Booting from serial interface doc.
used pins: P0_4 and P0_5
used baudrate: 57600
跟踪步骤:
1. Send reset request. (Length of RST pulse Tc > 10 us)
2. Read response from the device (0x02).
3. Send SOH = 0x01 to the device.
4. Send the code's length (LSB then MSB).
5.从设备接收ACK或NACK。
6. Send code's bytes to the device.
7.从设备接收CRC。
9.将ACK发送到设备。
- My code fails on step 2, I don't receive anything from the device and I get a timeout.
- 探测RX时,我可以看到1
- 当探测TX时,我可以看到信号(PLZ查看附加的图像)
Is this a healthy signal on the Tx? If yes, why I'm not recieving 0x02 from the device and how can I troubleshoot the issue.
Device:
Hi Ezza,
Well the device upon booting it starts scanning all the peripherals (UART/I2C/SPI) there is no way of changing or altering the bootloader, what i can tell for the TX it looks like a clock signal and apparently what you get is the SCL signal from the I2C part of the bootloader on step 10. So apparently the device is out of the reset and the bootloader is executing, i am not able to see how the bootloader is executing but there is no 0x02 on the TX pin.
Thanks MT_dialog
Hi,
谢谢回复。
What could be the reason for skipping on step 5?
P0_4 is configured UART with the right baudrate.
I'm sending the reset, and I can't see step 5 in p0_4 signal.
What are the possible explinations for not seeing step 5 in the signal?
Hi Ezza,
就像上面提到的那样,我不认为有一种方法是跳过启动的UART部分,如果你没有看到UART STX信号,那么你正在使用的工具或者在该引脚上连接的工具驾驶这条线也是如此。请在TX线上附上引导加载程序的信号。
Thanks MT_dialog
I'm having the same issue using pins p0-4/p0-5. I'm using the pan1740 module which uses the Dialog DA14580. After power on and taking reset low, on UART-TX I get a repeated sequence as show in the first picture in the attached PDF.
If I zoom in on the spike before the five 20ms pulses I get the second picture in the PDF. This looks like it could be a 0x02 with start/stop bits, but the timing is off. This doesn't appear to be running very close to 57600 baud. Also, the voltage is idling at 1.4v. My system runs at 3.3v. I would think this should idle at either 0v or 3.3v, not in the middle. I've turned on the weak pull-up resistors in the attached processor and this idle voltage did not change. Is it being driven to 1.4v?
第二张图片实际上是否显示了0x02字节?
What is the tolerance/variability of the baud rate generator?
Is there extra pacing time between bits?
Why is it idling at 1.4v?
有任何帮助让这个工作会很棒!
Thank you,
JJ
Hi JJay,
Thanks 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接收线保持高约60ms。然后下降到3.9ms的1.4V。这似乎是5组8组10位(时钟?),比57600波特USART使用的速度更高。我在这5个分组中的每一个都没有放大,以知道它们是否都是一样的。
Between each group it idles at 1.4v. It then loops around and sends to 0x02 again continually repeating this sequence.
At this point I need to start added the response code and download code to the BT module.
谢谢!
Hi JJay,
The reason that the line idles at 1.4V is because of the external device, the reason for that is because the pins of the 580 are configured as input pulldown during booting and the external device's lines are apparently pulled high when are configured as UART, so since before the 580's lines are configured as UART are still pulled down, and since you have an external device that will try to pull those lines high the voltage will idle somewhere in the middle of 0 and 3.3V (depending on the resistor that is used at the pull ups), but this shouldn't cause you any issues.
Thanks MT_dialog