Custom RSL10 board is not detected by RSL10 IDE software

I have made a custom RSL10 board and I have connected it in buck mode using this circuit from the datasheet as the basis

The power supply used is 2.7 V and the antenna part is not yet connected (a single wire on the RF pin). The circuit was constructed by hand-soldering discrete components to the RSL10 chip using thin litz wires. Analog and digital grounds are connected to the same point. For programming connections I have used Figure 8 in the RSL10 development board datasheet (EVBUM2529-D.PDF) as my basis.

I have connected components to the pins as shown by the highlighted yellow marker (SW2 is not connected, resistor R2 is replaced by a short) for programming, and I use a segger Jlink EDU programmer. VBAT_DUT, VDDO, VTref, etc are all connected to the same 2.7 V +ve terminal of the power supply. In the RSL10 IDE software I have selected SWD as the programming method, and all the settings I use are the same default values used when programming the evaluation board.

This custom board was initially detected by the RSL10 IDE and it even seemed to download the compiled firmware. However, when I tried to connect to the board again it stopped getting detected. I get this error, as if the board is not correctly powered

This is the Jlink error message in the console:

SEGGER J-Link GDB Server V6.96 Command Line Version

JLinkARM.dll V6.96 (DLL compiled Feb 19 2021 09:55:51)

Command line: -if swd -device RSL10 -endian little -speed 1000 -port 2331 -swoport 2332 -telnetport 2333 -vd -ir -localhostonly 1 -singlerun -strict -timeout 0 -nogui
-----GDB Server start settings-----
GDBInit file:                  none
GDB Server Listening port:     2331
SWO raw output listening port: 2332
Terminal I/O port:             2333
Accept remote connection:      localhost only
Generate logfile:              off
Verify download:               on
Init regs on start:            on
Silent mode:                   off
Single run mode:               on
Target connection timeout:     0 ms
------J-Link related settings------
J-Link Host interface:         USB
J-Link script:                 none
J-Link settings file:          none
------Target related settings------
Target device:                 RSL10
Target interface:              SWD
Target interface speed:        1000kHz
Target endian:                 little

Connecting to J-Link...
J-Link is connected.
Firmware: J-Link V9 compiled Feb  2 2021 16:34:10
Hardware: V9.30
S/N: redacted
Feature(s): FlashBP, GDB
Checking target voltage...
Target voltage: 2.90 V
Listening on TCP/IP port 2331
Connecting to target...
ERROR: Could not connect to target.
Target connection failed. GDBServer will be closed...Restoring target state and closing J-Link connection...
Shutting down...

If I try to erase flash memory using FlashLoader.exe, I get this error:

Connecting to device
Device "RSL10" selected.
Setting speed to max
Actual speed: 200 kHz
Error: Cannot halt DMA channels
Error: Internal error 100
Error: Connect failed

I have made the same circuit with two RSL10 chips and I have encountered the same problem with both. In one of the circuits I tried using the LDO mode biasing method and had the same problem. Why isn’t my board getting detected? Is it possible the RSL10 chip itself is damaged, or might it have anything to do with the external circuit around the RSL10? Is there any way to recover the RSL10 chip through software? Is there any different procedure I need to follow when downloading program in an empty RSL10 for the first time? Is there any way to confirm if the chip is damaged?

Also, an extra question. I am using a tantalum 1 uF capacitor for the charge pump (cap1 - cap0) shown in the first figure above. Which pin is the +ve leg of the capacitor connected to? Currently I have connected cap0 → +ve and cap1 → -ve, but doing the opposite is not working either. What is the correct polarity for the charge pump capacitor?

Which code did you program the board with?

The chip may have been put in the sleep mode by the application in which case the debugger can no longer connect. If this is what happened, the way to reconnect is to hold DIO12 low, then reset the part. The RSL10 examples will stall when they see DIO12 held low during the initialization sequence. This prevents the part from going to sleep and allows you to connect with the debugger or flash loader.

As for the capacitor, I’d suggest using a ceramic capacitor as used in the reference design. If you must use tantalum, the voltage on C1 is positive with reference to C0.

Thank you for using our community forum.

1 Like

This is blinky sample program. Does it go into sleep mode? Is there any other way to confirm if RSL10 chip is broken? Is the circuit diagram I followed correct?

I have tried this from RSL10_getting_started_guide.pdf. Using type 0 or type 1 reset did not make any difference.

Here, is it trying to say Flash Loader should be able to replace previous firmware even if the chip is in sleep mode/cannot be detected by the RSL10 IDE? Or is it saying Flash loader is supposed to be used after DIO12 is connected to ground and RESET is pressed?

“Blinky” doesn’t use sleep mode, so that shouldn’t be the root of the issue. Since it seemed like you were able to initially program the part before it became unresponsive to the debugger, one way to test if the part is good is to check if it is indeed “blinking” the LED. If DIO12 is pulled high, then DIO6 should toggle once a second.

Regarding the instructions for Downloading Firmware in Sleep Mode, Step 2 says “Press the RESET button…” This means to press and release, not press and hold. So be sure you’re releasing the RESET while holding DIO12 low before attempting to connect via the SWD port again. (The flash loader response you’re getting is identical to the response seen when RESET is held low.)

Do the DIO’s need to be pulled high externally? Currently I haven’t connected DIO6, DIO12 to anything. The schematic in the Evaluation board datasheet (EVBUM2529-D.PDF) doesn’t show the empty DIO’s connected to anything.

The voltage on the RESET pin is 2.9 V (power supply)

No external pull-up should be needed on DIO12. The “Blinky” example enables a weak pull-up on that pin. DIO6 is driven high/low to blink the LED. Do you measure a high on DIO12 and is DIO6 toggling high/low about once a second?

Can you try probing the SWD pins 33 and 34? Maybe the absence of the series resistor on the clock is causing reflections or there are other signal integrity issues on the SWD connection.

I ended up making a new circuit because the old circuit was getting too cumbersome to repair. The circuit diagram is essentially same with shorter wires between capacitors and the chip. I am seeing the following behaviours:

  1. In a desktop PC with the RSL10 IDE, I get the following error when I try to download the “ble_android_asha” sample program.

Break at address "0xdeadbeee" with no debug information available, or outside of program code.

When the IDE successfully downloads a program it is supposed to show a long status message in the console which it doesn’t show. Only thing shown in the console is this:

SEGGER J-Link GDB Server V6.96 - Terminal output channel

Sometimes this error message pops up
RSL10 download error information box
after a while, but most of the time there is nothing.

On the other hand, the Standalone flash loader program seems to read/erase/write firmware without any errors. However, the firmware itself doesn’t seem to be working because the BLE scanner on my smartphone does not detect the RSL10. The circuit currently does not have any LED’s because I was trying to minimize external wire connections, so the only way I can test it at the moment is by scanning it from a smartphone.

What does this tell me about the state of the chip? I am assuming the JTAG/SWD connection is correct, since flash loader does not show any errors. What is wrong with the IDE? The IDE works as expected with the RSL10 evaluation board. I have already reinstalled (that is, repaired) the IDE using the ON semiconductor IDE installer msi file.

  1. On a different laptop running off a battery, when I try to download firmware through the IDE, I can see the long status messages in the console. Sometimes firmware download seems to complete normally, and sometimes it throws a “Could not read register while the chip is running” type error (sorry I don’t have the laptop with me, this is all paraphrased. It is the long list of error messages, something like this, “ERROR: Cannot read register 0 (R0) while CPU is running”). In either case, the firmware does not seem to be running in the chip itself since I cannot find it using my smartphone BLE scanner. What could be going on here?

Do you have an antenna connected on the newest circuit? There was not one one the original design.

Have you tried setting the SWD speed slower in the IDE? I’d also suggest making sure there is a ground wire in the cable from the debugger to your circuit close to the TMS/TCK wires to provide good signal integrity and ensure the logic levels are correct.

Looking back at some of the older posts I see you had applied 2.7V to the target but the debugger measured 2.9V. That may imply a poor ground connection between the debugger and the device resulting in bad logic levels.

The Blinky example you were using originally may be easier to start with since it does not rely on the 48MHz oscillator and is a pretty minimal configuration to ensure your circuit is good.

1 Like

That was a mistake on my part while writing this post, I apologise for that. The main thing is VTRef on the debugger always showed the correct value based on what power supply I used. If I used 2.7 V it showed 2.7 V and if I used 2.9 V it showed 2.9 V. I had tried a bunch of power supply values to see if any worked, but I never exceeded 3.1 V.

Almost all the boards I made showed similar behaviour: firmware download seems to work the very first or the first few times, then if I keep doing it for a while the board stops getting detected by the computer. If I mess around with the flash downloader software sometimes the board seems to get detected randomly, and sometimes not at all. In some of the boards I made, the firmware I downloaded first (ble_android_asha) seems to be running (can see the LED signal on DIO6 on an oscilloscope), but my BLE scanner app doesn’t detect the board (this is both with and without the antenna), or it detects it but doesn’t connect to it. Due to the nature of the problem I had assumed this should have something to do with improper grounding, rather than one of the discrete components being damaged. But I have tried using short wires, long wires, capacitors close to chip, capacitors close to power supply, distributing the ground line around the circuit to increase ground area, but the end result is the same.

Is the RSL10 chip this sensitive to the external circuit around it? I have been assuming none of the RSL10 chips themselves are damaged, since I have been careful to keep the power supply voltage below 3.3 V. I have even tried using two 1.5 V AAA batteries to generate 3.0 V instead of using a regular power supply, to remove possible noise from the AC supply. But is it a possibility that the RSL10 chip can get damaged due to improper grounding related noise? Is it really this sensitive? I would like to hand solder a working prototype first to make sure it works before getting a PCB printed.

It is difficult to say exactly whether the issue is damage to the RSL10 or other signal integrity issues with the setup. The RSL10 is not especially sensitive - it should operate if kept within the specification limits. That being said, like all semiconductors it can be damaged by ESD or operation outside the specified limits.

The PCB layout guidelines have several recommendations that are hard to duplicate with a hand-wired circuit. RF performance is especially difficult to achieve and this may explain difficulty in communicating with the device over the radio once programmed.

There are evaluation boards available that demonstrate recommended layout and are useful for development before building your own PCB. If there are specific modifications you’d like to test out for your own development, perhaps it is better to try starting with the evaluation board.

Hi Mahaju,
did you solve the issue on flashing the device? I’m having the same experience on brand new RSL10 Sim modules… Thank you.

What is an RSL10 sim module? Is that a hand soldered module? It didn’t end up working for me I think the RSL10 chip is too sensitive to noise generated in the circuit board. I haven’t had any problems with prefabricated evaluation boards. If you meant RSL10 SIP then I didn’t have this problem too many times with the SIP chip. Try to reduce the length of wires and keep the capacitors close to the chip and power supply.

Sorry I was meaning RSL10 Sip module. it is soldered on my board but I still have stability issues on SWD communication.