Iniciando em BLE com o Nordic nRF51822

Resolvi me aventurar no chip nRF51822, segue abaixo o relato dos testes que estou fazendo.

Eu não tenho o kit de desenvolvimento da Nordic, mas “banquei” o desenvolvimento do Stick’n’Find e recebi dois buttons. Após abri-lo, notei que haviam alguns test-points grandes nos pinos 23 e 24 do chip (SWD), isso simplifica muito na hora de soldar os fios para o programador.

Infelizmente, até onde sei, este chip não funciona com os programadores open-source suportados pelo OpenOCD. Então o jeito será usar um J-Link.

Como não tenho um J-Link, resolvi comprar a versão estudante na Digikey.

A ligação do programador foi simples: TMS (pino 7) do JLink no pino 23 do nRF51822; TCK (pino 9) no pino 24; VTref (pino 1) no pino 12; GND (pino 20 ou qualquer pino par) no pino 13.

Instalei as ferramentas do J-Link (http://www.segger.com/jlink-software.html) no Ubuntu.

Ao executar o comando JLinkExe, o chip não foi reconhecido. A solução foi simplementes dar um rápido curto-circuito entre o VDD e GND para reiniciar o chip. Após isso o chip foi reconhecido:

J-Link>si 1
Selecting SWD as current target interface.
Setting target interface speed to 1MHz. Use "Speed" to change.

J-Link>selemu
J-Link[0]: Connection: USB, Serial number: 268006167, ProductName: J-Link EDU
Select emulator index: 0
Emulator with USB serial number 268006167 selected.
DLL version V4.80, compiled Dec 20 2013 19:40:51
Firmware: J-Link ARM V8 compiled Nov 25 2013 19:20:08
Hardware: V8.00
S/N: 268006167 
OEM: SEGGER-EDU 
Feature(s): FlashBP, GDB 
VTarget = 2.601V
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
No devices found on JTAG chain. Trying to find device on SWD.
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Cortex-M0 identified.
Target interface speed: 100 kHz

O próximo passo foi apagar a flash:

J-Link>device nrf51822
J-Link>speed 1000

# erase the entire flash
J-Link>w4 4001e504 2
J-Link>w4 4001e50c 1
J-Link>w4 4001e514 1

Após isso, basta executar o comando diretamente via terminal que o chip é identificado:

$ JLinkExe 
SEGGER J-Link Commander V4.80 ('?' for help)
Compiled Dec 20 2013 19:40:54
DLL version V4.80, compiled Dec 20 2013 19:40:51
Firmware: J-Link ARM V8 compiled Nov 25 2013 19:20:08
Hardware: V8.00
S/N: 268006167 
OEM: SEGGER-EDU 
Feature(s): FlashBP, GDB 
VTarget = 2.627V
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
No devices found on JTAG chain. Trying to find device on SWD.
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Cortex-M0 identified.
Target interface speed: 100 kHz
J-Link>

O próximo passo será a instalação do SDK da Nordic e a criação do meus primeiros programas, para quem não tem paciência de esperar, pode tentar instalar as ferramentas seguindo estas dicas:
http://www.funwithelectronics.com/?id=168
http://hg.cmason.com/nrf

Fonte: http://www.segger2.com/index.php?page=Thread&postID=4072

Update: SDK Nordic modificado para compilar com o GCC: https://github.com/finnurtorfa/nrf51
Dicas de desenvolvimento: http://robolabwiki.sdu.dk/mediawiki/index.php/Nordic_Semiconductor_nRF51822_development
BLE Stack Open Source: https://github.com/pauloborges/blessed/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s