BL652 Lチカ& GPIO Input

 BL652-SA-01のなんちゃんって評価ボードを作成して、SEGGER Embedded Studioからファームの書き込みをしてみた。

XAIOでLチカ(https://funasover.blogspot.com/2023/02/nrf-l.html)をしているのでまずはやる事は同じ。

【BL652-SA-01】


BLE搭載のマイコンで、小さい!かつ安い!450円。Nordicの52832が使われている。半導体不足が叫ばれる中で中華Arduinoでさえ値段が上がっている中では技適もあって安い!


【開発ボードの作製】

ブレークアウトボードキット

https://akizukidenshi.com/catalog/g/gK-15567/

が売っているがこれを使わずに、ユニバーサル基板を使って開発ボードを作る。

① ユニバーサル基板の端に、絶縁のためのカプトンテープを張って、両面テープで固定する。アンテナの部分はユニバーサル基板からはみ出るようにしている。接着剤できっちり止めてもよいと思う。(すぐに出っ張っている部分を触ってしまうので)。

② ピンソケットを半田で固定する。
わかりやすく、BL652-SA-01のパッドと同じ配列で、コの字になるようにピンソケットを半田する。半田する前に表側に紙を両面テープで張ってあげてから半田をした。


③ 配線エナメル線を使って BL652-SA-01モジュールの足と、ソケットの足を接続していく。全部で39本半田すると大変なので、まずは使う所だけ。


26、27は電源とGND
5,6はSWDで書き込みするため
30は、nRF52832のP0.17に接続されているのでGPIOのテストに使うため配線
同じく9、これはP0.18に接続されている。

正規のNordicの評価ボード

とピン配列を同じにしておくと、サンプルプログラムがそのまま動くから30と9をまず配線している。


正規ボードは、LED1、2がそれぞれP0.17とP0.18に接続されている。
のBL652のデータシートをみて、P0.17は30ピンにアサインされている事が確認できる。
同じように正規ボードの配置としてみた。


LEDでも用意しないと動作しているか確認もできないので、LEDを2色分つけて、BL652の30と9ピンに接続、先はGNDへ。

【接続のチェック】
J-LINKとボードを接続する。
J-Link 20 pin debug interfacePin on board pads
Pin 4 (GND)25:GND
Pin 9 (TCK)6:SWCLK
Pin 7 (TMS)5:SWIO
Pin 1 (VTref)26:VDD



J-Link Commanderを立ち上げる。connectとタイプしてEnter。Deviceを聞かれるので”?”を入力してダイヤログを立ち上げる。


Nordicでフィルタをしてあげて、nRF52832_xxABを選択


接続方式を聞かれるのでSWDとタイプ、通信速度4000を入力してエンター。
上手く接続されていると使っているMUPの情報が見える。

【ファームの書き込み】
smartBasicという言語を使って開発するらしく、そのライセンスを書き込みすると消失する。事前にメモするなどしておくのが良いらしいが・・・。ライセンスは破棄して通常のNordicのSEGGER Embedded Studioで開発できれば、特に困らない。


...\examplesの下に、myprojectsというフォルダを作ってあってそこで作業をする。

\examples\peripheral\blinkyをmyprojectsにコピーする。
フォルダの名前を”1_BL652_blinky”とでも変更する。
pca10040のフォルダの中、
\pca10040\blank\sesにある、blinky_pca10040.emProjectをEmbedded Studioで開く。flash_placement.xmlも開いて

<ProgramSection alignment="4" load="Yes" name=".text" size="0x4" />
<ProgramSection alignment="4" load="Yes" name=".rodata" size="0x4" />

size="0x4"の記述を削除して上書き保存。


ピンを合わせあるのでデフォルトのまま、このサンプルをビルトして、書き込みしてやる。


無事にLチカに成功!

続いてスイッチも。

本家の評価ボードは、いくつもスイッチがついているが、1つをつけてみる。
純正は、BUTTON1 = SW1 = P0.13に接続されているのであわせる。(別にどこでもよい)
P0.13は28番目のピンなので、28ピンースイッチーGNDで押し釦スイッチの配線を半田をしてスイッチをつける。


と同じソースで番号をあわせてあげる。

#include <stdbool.h>
#include <stdint.h>
#include "nrf_gpio.h"

int main(void)
{
 
 //configration of pins

 nrf_gpio_cfg_output(17);
 nrf_gpio_cfg_input(13,NRF_GPIO_PIN_PULLUP);

 //initialization of LED
 nrf_gpio_pin_set(17); 
 // Vcc---pin---LED---GND

  while(1)
  {
    if(nrf_gpio_pin_read(13)==1){
    nrf_gpio_pin_clear(17);// turn on 
    }
    else{
    nrf_gpio_pin_set(17); 
    }
  }
}


問題がなければ、ボタンを押した時にLEDが点灯し、離すと消える動作をしてくれる。ここまでくると、SEGGER Embedded Studioですべてのペリフェラルにアクセスして開発する事ができる見通しが立つ。

【ピンの表示ーなんちゃってシルク印刷】


どのピンをどこにアサインしたかすぐわからなくなるので、シルク印刷の代わりに、印刷したピンの情報を”のり”で貼り付けて、どのピンにアサインをかけたかわかるようにしてやる。

紙をユニバーサル基板に事前に張っておくとこれが簡単にできる。フォントはちなみに5.5が2.54mmピッチにちょうどいい感じ。

先に印刷してから張れればよいが一点ものを作る=ユニバーサル基板なんでその場で対応というとこの形態に。


コメント

このブログの人気の投稿

Attiny85とAQM0802A(LCD)のI2C接続

ILI9341 240X320 Arduino

Attiny85 FuseRest