QuickLogic FeatherはSensiML ToolkitのData Capture Labと「QuickFeather Simple Streaming」プロトコルで接続します。

Quickfeather development kitのファームウェアは、QuickFeather Simple StreamingでData Capture Labと接続する「Quickfeather Simple Streaming Interface AI Application Project」を使用します。ファームウェアの書き込みについては「Quickfeather development kitの開発環境の構築」を参照してください。

なお、次のコマンドでQuickfeather development kitのファームウェアを書き換えます。

$ qfprog --port /dev/ttyACM0 --m4app output/bin/qf_ssi_ai_app.bin --mode m4

Quickfeather development kitとパソコンとの接続

パソコンとQuickfeather development kitとは、次のように「USB to TTL 」シリアルアダプタで接続します。

信号名  ピン番号
RXD J3のPin 2
TXD J3のPin 3
GND J3のPin 1

通信速度:460800

Quickfeather development kitと「USB to TTL 」シリアルアダプタとの接続画像を次に示します。なおシリアルアダプタは「FT232RL」を使用します。

Quickfeather development kitのファームウェアの実行

Quickfeather development kitのファームウェアを実行すると、「USB to TTL 」シリアルアダプタ経由でパソコンにつぎのメッセージが転送されます。

{"sample_rate":100,"samples_per_packet":6,"column_location":{  "AccelerometerX":0,  "AccelerometerY":1,  "AccelerometerZ":2}}
{"sample_rate":100,"samples_per_packet":6,"column_location":{  "AccelerometerX":0,  "AccelerometerY":1,  "AccelerometerZ":2}}
{"sample_rate":100,"samples_per_packet":6,"column_location":{  "AccelerometerX":0,  "AccelerometerY":1,  "AccelerometerZ":2}}
{"sample_rate":100,"samples_per_packet":6,"column_location":{  "AccelerometerX":0,  "AccelerometerY":1,  "AccelerometerZ":2}}
{"sample_rate":100,"samples_per_packet":6,"column_location":{  "AccelerometerX":0,  "AccelerometerY":1,  "AccelerometerZ":2}}

SensiML ToolkitのData Capture Labでは接続時に、文字列「connect」をQuickfeather development kitに送信することで、Simple Streamingプロトコルを開始します。通信はバイナリシリアル転送で、ディフォルトではmCube MC3635 accelerometerの加速度データを次のように送信します。「送-> <63><6f><6e><6e><65><63><74>」が文字列「connect」、「->受 <34><2a><00><0f>」が加速度データです。

Quickfeather development kitのUSBデバック機能の追加

Quickfeather development kitのUSBデバッグ機能を追加するために、ファームウェアのソースコードを次のように変更します。

Fw_global_config.h

#define FEATURE_USBSERIAL   1       // USBSERIAL port is present
#define DEBUG_UART  UART_ID_USBSERIAL  // Write data to USB serial port

main.c

HAL_usbserial_init2(false, false, 0x6141);        // Start USB serial not using interrupts

デバッグ機能はUbuntu 上で「kermit」コマンドにより確認します。

##########################
Quicklogic QuickFeather SensiML AI Data Collection/Recognition App
SW Version: qorc-sdk/qf_apps/qf_ssi_app
Jan 13 2021 06:10:35
##########################



Hello world!!

Sample rate: 400
Sample resolution : 14
Sample range      : 0
Sample rate       : 400
Sample rate: 14
Datablock processor task name: SENSOR_SSSS_DBP_THREAD
inQ         : 0x2002a1f8

「kermit」コマンドのパラメータを次に示します。

set line /dev/ttyUSB0
set line /dev/ttyACM0
set speed 115200
set speed 460800
set flow-control none
connect

kermit起動時に初期値として読み込む「.kermrc」を次に示します。

.kermrc

set line /dev/ttyACM0
set carrier-watch off
set speed 115200
set parity none
set flow-control none
port

ファームウェアでは次のデバッグ関数が提供されています。

dbg_ch(CH)
output a ch
dbg_int(VALUE)
print integer
dbg_str(VALUE)
print string
dbg_hex8(VALUE)
print 8bit value as hex
dbg_hex16(VALUE)
print 16bit value as hex
dbg_hex32(VALUE)
print 32bit value as hex
dbg_str_int( PTR, VALUE )
equal to: printf(“%s: %d\n”, s, v )
dbg_str_str( PTR, VALUE )
equal to: printf(“%s: %d\n”, s, v )
dbg_str_hex16( PTR, VALUE )
equal to: printf(“%s: 0x%04x\n”, s, v )
dbg_str_hex8( PTR, VALUE )
equal to: printf(“%s: 0x%02x\n”, s, v )
dbg_str_hex32( PTR, VALUE )
simular to: printf(“%s: %08x\n”, s, u32 )
dbg_str_ptr( PTR, VP )
print pointer
dbg_str_now()
print now as a timestamp
dbg_memdump32( ADDR, DATA, COUNT )
print hex dump of memory as 32bit values
dbgmemdump8( ADDR, DATA, COUNT )
print hex dump of memory as 8bit values