投稿

ラベル(BL652)が付いた投稿を表示しています

BL652(nRF) Max30102

イメージ
Max30102、姉妹品のMax30105の情報としてはSparkFunからArduinoのライブラリーが公開されていており、利用されている事も多いのか情報量が最も多い。 このライブラリー何をしているか?というのをマニュアルを参照しながら、nRF、Embedded studio開発下で動くように移植してやってnRFのライブラリーを作る事をめざす。nRFをターゲットとするが、同じ事を他の例えば、STM32系とかで実施するればライブラリーを作っていく事はできるはず。要するに、”理解”さえしていれば。ここではBL652だが、純正のDKやXAIOも同じ事をすれば動くはず。 【下準備】 スタートとして、 前回作ったテンプレート にさらにApp_timerを使えるようにしてあるテンプレートから開始する。(DLは ここ )ssdのドライバーを所定のフォルダに入れてやる必要があるが詳細は、 前回 を参照。 【I2C】 基本テンプレートに入っているのでTWIが使えるように設定をする。 ヘッダーファイル類はそのままでもよいし使うものだけ以外はコメントアウトする。 /* ****************/ /* TWI /* ****************/ /* TWI instance ID. */ #if TWI0_ENABLED #define TWI_INSTANCE_ID 0 #elif TWI1_ENABLED #define TWI_INSTANCE_ID 1 #endif /* TWI instance. */ const nrf_drv_twi_t m_twi = NRF_DRV_TWI_INSTANCE(0); //do not change instance name "m_twi" which is used ssd1306.c void twi_init(void) { const nrf_drv_twi_config_t twi_config = { .scl = ARDUINO_SCL_PIN, .sda = ARDUINO_SDA_PIN, .frequency = NRF_DRV_TWI...

BL652 MAX30102の基礎

イメージ
 BL652 nRF52832でMAX30102を動かす事をめざす。同時に結果をOLEDに吐き出す所をやる。 SSD1306をI2C制御しつつ、もう一つMAX30102もI2Cで接続し、しかもnRF52でMAX30102を制御する事をめざす。 前回のテンプレート から開始する。 ssd1306.cの中のTWIの初期化関数をコールしている所をコメントアウトしてあげて本体のプログラム側で用意する事にする。 /* TWI instance. */ const nrf_drv_twi_t m_twi = NRF_DRV_TWI_INSTANCE(0);  の下の部分に void twi_init (void) {     const nrf_drv_twi_config_t twi_config = {        .scl                = ARDUINO_SCL_PIN,        .sda                = ARDUINO_SDA_PIN,        .frequency          = NRF_DRV_TWI_FREQ_400K,        .interrupt_priority = APP_IRQ_PRIORITY_HIGH,        .clear_bus_init     = false     };    nrf_drv_twi_init(&m_twi, &twi_config, NULL, NULL);     nrf_drv_twi_enable(&m_twi); } 初期化の関数をもってくる。#include "boards.h"をインクルードし...

BL652 ssd1306とNRF_LOG

イメージ
SSD1306とNRF_LOGでUART経由でシリアルでPCにデータを送信するのを同時にしてみる。片方づつやるのは簡単で、マージする作業、特に、sdk_configの設定ってが厄介。 \SDK\nRF5_SDK_17.1.0_ddde560\components\drivers_ext SDKの下の下にcomponets、その下にdrivers_extがあるので そこにフォルダを追加する。ssd1306。 その下に、nRF用のssd1306 lib(自作)を配置する。 fonts.h fonts.c ssd1306.h ssd1306.c (テストのためにfun_logo.h) ここ からDLできるようにしておく。   右クリックでAdd Existing fileを選択し、上で配置したfonts.cとssd1306.cを選択する。 Optionを開いて、Commonの状態にして、Preprocessor/User Include Directioriesに ../../../../../../components/drivers_ext/ssd1306 を追加する。../../の部分は、他に../../../../../../components/が上にあるので、そこからコピペしてもってくると良い。 インクルードする mainの上で // for using I2C #include "nrf_drv_twi.h" // for using OLED display with SSD1306 #include "ssd1306.h" #include "fun_logo.h" /* TWI instance ID. */ #if TWI0_ENABLED #define TWI_INSTANCE_ID     0 #elif TWI1_ENABLED #define TWI_INSTANCE_ID     1 #endif /* TWI instance. */ const nrf_drv_twi_t m_twi = NRF_DRV_TWI_INSTANCE(0); mainの中は、 //initialization of SSD1306     SSD1306_Init();...

BL652 UART

イメージ
FT232RLを接続して、PCにUART経由で通信できるようにしてやる。XAIOを用いて https://funasover.blogspot.com/2023/02/nrf-uart.html で同じ事をしている。 【ブレイクアウトボード】 純正のボードnRF52 PCA10040では、UARTのTXはP0.06、RXはP0.08に接続されている。これBL652ではP0.06は19番、P0.08は17番に接続されている。 これらをまたまたエナメル線で接続してやる。(どこでも本来よいのでGPIOのテストに使ったピンをアサインしても本当はよい) 【テストコードのビルト】 exampleの下にあるperipheralの中のuartをコピーする。 example以下に作った自身の作業フォルダーにコピーをとる。ここでは4_BL652_uartという名前にした。 pca10040のフォルダの下、\pca10040\blank\sesにある uart_pca10040.emProject を開いてやる。このままコンパイルするとエラーがいろいろ出るはず。 ①flash_placement.xml この中にある size=0x04を削除 ②unknown type name '__printf_tag_ptr'のエラーは、retarget.cを削除 ③ Projectを右クリック、OptionからCommonを選択して、LibraryでライブラリIOの部分をRTTを選択 これでコンパイルが通るはず。 ピンのアサインは、pca10040に合わせてあるので、このままビルトし、書き込みができるはず。 【UARTテスト】 無事にビルトし、書き込みが出きていれば、エコーバックしてくるのが確認できる。 (送った文字がそのまま画面に出てきて、qを入力すると停止する) 複数の文字の送信については、https://funasover.blogspot.com/2023/02/nrf-uart.html ここまでのフォルダをコピーして、4_2_BL652_uartという名前をつけてみる。 uint8_t  UART_TX_Buffer[UART_TX_BUF_SIZE]; 複数送信するバッファを用意してやる。 末尾に、以下の関数uart_printを定義 void uart_print...

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の評価ボード https://docs.zephyrproject.org/1.14.0/boards/arm/nrf52_pca10040/doc/index.html とピン配列を同じにしておくと、サンプルプログラムがそのまま動くから30と9をまず配線している。 正規ボードは、LED1、2がそれぞれP0.17とP0.18に接続されている。 今度は、 https://akizukidenshi.com/download/ds/laird/bl652.pdf のBL...