投稿

HS101 STM32の自作お手軽オシロスコープ

イメージ
 オシロスコープの作製 https://www.martinloren.com/hs10x-diy-oscilloscopes/ ①準備 :ハードオフに行って安いスマホか、タブレットを購入してくる(画面として使いたい。1200円でNEXUS7を購入してきた。手元のスマホを使うでもむろんよい。 ②電子部品 物をそろえる。基本手元にある部材でほとんど揃えられたがUSB OTG Cable だけはアマゾンで調達。100均のケーブルを加工する方法が検索すると出てくるが、さすがに面倒なので購入。martinlorenの解説では、TTLケーブルを調達して書き込むと書いてあるが、まあおれはST-LINKをもっているのでこれを使う。 ③ハード部分の組み立て http://hscope.martinloren.com/HS101-oscilloscope.html に記載の通りに回路を構成。 部品数が少ないので10分程で半田は終了。基板を切断する。 bulePillがすでにブレッドボードにさしてつかっていたものなのでジョイントが裏側に。特段高さ問題なく、bulepillの基板に接触する事はない。 これにプローブとなる線を半田してハードは終わり。 ④ソフト側 アンドロイドに、HScopeをインストール。これはgoogleアプリからサクッとDLするだけ。 https://play.google.com/store/apps/details?id=com.martinloren.hscope ファームの書き込み 公式ページでは、USB-TTL Connectorを購入してきて、スマホのSTM32への書き込みアプリをDLしてきてスマホから焼き付けるという事だが、そんなケーブルわざわざ用意しないので、ST-LINK(中華)を使う。 ファームをgithubからDL https://github.com/martinloren/HScope/tree/master/HS10X 2022年12月時点で最新は、V10.2。 STM32 ST-LINK utilityを落としてくる。 https://www.st.com/ja/development-tools/stsw-link004.html? stFirstName=&stLastName= DL時に、名前とメアドが聞かれて、メー...

ILI9341 240X320 Arduino

イメージ
 タッチパネルのついたTFTの小さいモニターを購入してみた。 アマゾンで2.4" TFT LCD ディスプレイシールドタッチパネルILI9341 240X320 と検索すると出てくるものでUNOにそのままさして使うタイプ。 https://www.amazon.co.jp/gp/product/B07L3PR7J5/ref=ppx_yo_dt_ b_asin_title_o00_s00?ie=UTF8&psc=1 購入してわかった事が、Arduino 用としてピン配置がUNOにあわせているものはパラレルでデータ転送するためほとんどあまりのピンがなくなる。搭載されているSDカードリーダーがSPIで経由するのなので、SPIを工夫して使う事になる。シリアルのバージョンも売っているので、他のピンをもっと使いたい場合は、そちらを購入した方がよい。 さて、この子ですが、パラレルでのサンプルプログラムは https://www.adrive.com/public/qhnrxK/F0001414%202.4inch_Arduino_ILI9341_V3.0.zip からDLしてくる。 Adafruitのライブラリーをインポートしてついてくるものは、シリアル向けに作られているので、この子では動かない。内容をパラレル用に書き換えているが上のもの。 F0001414 2.4inch_Arduino_ILI9341_V3.0というZIPファイルを落としてきた。Readmeにあるように、"Arduino Demo_UNO&Mega2560\Install libraries"から Arduino library にコピーをとる。 サクッとDEMOの1から順番に実行する。画像の方は問題なく映るし、デモがサクサクと実行可能。 つっかかたのが、タッチ機能。収録されているサンプルプログラムのままでは動かない。 \F00014142.4inch_Arduino_ILI9341_V3.0\2.4inch_Arduino_ILI9341_V3.0\Arduino Demo_ArduinoUNO&Mega2560\Install libraries\TouchScreen の下にもデモが入っていて、こちら側は動いた・・・よく比べると #define YP...

Arduino Tutorial デジタル/アナログ入出力

イメージ
 IDEはインストール済みから 1.Lチカ 中華Arduio NanoをUSBポートに取り付ける。 Windowsキー+Xを押してから、Mを押してデバイスマネジャーを立ち上げる。 ポート(COMとLPT)の”>”をクリックして展開 USB-SERIAL CH340(COM9) と表示されているか確認する。中華ではない純正のNanoだと表示が異なる。 COM9の数字9の部分は環境に依存する IDEを開き、 ファイルースケッチ例ー01.Basics-Blinkの順で開く 次に、ツールーボードからNanoを指定する。その下のプロセッサもATmega328Pを選択する。(ここで中華を使っているとブートローダーが古いバージョンが焼き付けられている場合があってその時は、oldを選択する。やってみて動く方) COMポートを設定する。 デバイスマネージャーで確認した番号のポートを選択 その後、 マイコンボードに書き込むボタンを押す。Ctrl+U でも同じでショートカットを覚えておくと今後楽です。いろいろメッセージが流れて、”avrdude done."とメッセージが出たら終了。オンボードのLEDが点灯しはじめるはず。 マイコンは、基本的に電源が入ると、初期設定をした後は、無限に同じ動作をするが基本的な構成になる。Arduinoでも他のマイコンでも基本的には同じ。 Arduinoの場合は、setupという関数の箇所で初期設定をして、loopの関数内で処理を繰り返す。 // the setup function runs once when you press reset or power the board void setup() {   // initialize digital pin LED_BUILTIN as an output.   pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() {   digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)   de...

MSP432 Interrupt_disableSleepOnIsrExit();

イメージ
 Interrupt_disableSleepOnIsrExit(); systickやタイマー、ADCなどでインターラプトをかけ、ハンドラーへ飛び処理をする。 Interrupt_disableSleepOnIsrExit();を置くのを忘れて、いつもハマるのでメモ。 これを置かないと、ハンドラーに入るとmainに戻ってこない。戻すため、 Interrupt_disableSleepOnIsrExit();ハンドラーの処理が終わったらこの命令を置いておく。 ******************** 動作の確認 Resource Exploerから検索でsystickを入れて、DriverLibのサンプルプログラムをインポートする。リネームするなりして、これを送り込んで動作を確認しておく。オンボードのLEDがチカチカと。 ここからが動作の確認。 Printfを使いたいので、以前の手順でprintfOverride.cをコピーしておく。詳しい手順は ここ 。 #include <stdio.h>//printf を他のインクルードに続けて追加する。その後mainの上の箇所で、変数を一つ定義しておく。 uint8_t count=0; UARTを使えるように、 const eUSCI_UART_ConfigV1 uartConfig = {         EUSCI_A_UART_CLOCKSOURCE_SMCLK,          // SMCLK Clock Source         78,                                     // BRDIV = 78         2,                        ...

MSP432 ERROR: the connected device is not msp432p401r

イメージ
cortex_m4_0: * warning *: the connected device is not msp432p401r ・・・ といったエラーが出て書き込めなくなった。 迂闊に、クロックを48MHzに設定しようとするとこうなるらしい・・・対処法も一応乗っていて、 https://www.ti.com/lit/ug/slau597f/slau597f.pdf?ts=1623375496064&ref_url=https%253A%252F%252Fwww.google.com%252F のFAQにの通りに・・・ View -- Target configurationsと進んで、MSP432P401R.ccxmlを右クリック。Launch Selected configrationを選択 最初は、Texas・・・と1つしか見えていないんで、右クリックしてshow all core Non Debuggable devicesが見えるが階層が隠れているので表示し、これをConnect Targetを選択して接続する。 接続したら、Script-defalt-MS432_Factory_Resetを選択する。 すると中身を消去しに行ってくれて、デバッグをとめて、リスタートすると工場出荷時に戻る。 ってってやって直ぐに戻ってくれれば苦労はしない! 結果決め手がわからないうちに、戻った・・・・ 1・まずすべての結線なんかははずして、”身軽”に 2・MS432_Factory_Resetを選択、デバッグモードを一度止めたら、USBを抜いてさして。 ってなことを繰り返しているうちに、元に戻った・・・・同じ症状が出てここにきてくれた方、申し訳ない。いえることは、データシートの手順の通りを信じて何度かしていればもとに戻るということ。

MSP432 ADS8341

イメージ
  ADS8341 https://www.tij.co.jp/jp/lit/ds/symlink/ads8341.pdf?ts=1623405262771&ref_url=https%253A%252F%252Fwww.tij.co.jp%252Fproduct%252Fjp%252FADS8341%253FkeyMatch%253DADS8341%2526tisearch%253Dsearch-everything 16ビットの4チャンネルADC。 SPIの設定 const eUSCI_SPI_MasterConfig spiMasterConfig2 = {         EUSCI_B_SPI_CLOCKSOURCE_SMCLK,             // SMCLK Clock Source         12000000,                                  // SMCLK = DCO = 12000000         1200000,                                  // SPICLK = 12000000         EUSCI_B_SPI_MSB_FIRST,                     // MSB First         EUSCI_B_SPI_PHASE_DATA_CAPTURED_ONFIRST_CHANGED_ON_NE...

MSP432 DAC8555

イメージ
4チャンネルの16bitDACのDAC8555をMSPから制御  特徴はバッファを2つもっていて、同時に4つチャンネルを変更することもできる点。 https://www.tij.co.jp/jp/lit/ds/symlink/dac8555.pdf?ts=1623402965967&ref_url=https%253A%252F%252Fwww.tij.co.jp%252Fproduct%252Fjp%252FDAC8555 データシートを見ながら、電源回りにパスコン等をつけて回路を形成。Vrefには、 ISL21080CIH315Z-TK(基準電圧1.5V)を利用し動作確認をしている。 各ピンの機能を簡単に。データシートの要約。すべての動きを試した訳ではない。 IOVDD:ロジック回路の電圧。MSP432の場合は、3.3Vだが、5.0Vのロジックと混在する時には、ここに与える電圧で変更する RST:LOWの時リセットされて、ゼロかまたは、Vrefの中間の値の出力にする。リセット時にゼロか、中間の値にするのかを選択するのがRSTSEL。中間にしたい場合はHIGHに接続、ゼロにしたい場合はGNDに接続。 ENABLE:読んで字のごとく。動作時にはLOWにする。HIGHだとSPIのコマンドを受け付けない。 LDAC:ソフト的にバッファーの値をアップデートし出力を変更できるが、このピンを使ってハード的にもできる。 【動作】 よくあるDACと同じで最初の8ビットがコントロールビットを送りこんで、続いて16ビットの設定したい値のデータを送信する。 LD1,LD0の組み合わせで、チャンネル1~4までまずはデータを送ってから、同時に電圧出力を変化させる事もできるし、各チャンネルを個別に次々に電圧を変更していく事もできる。このあたりは、データシートに任せて、後者で実装する。この時、LD0=0,LD=1にすることになる。DACSelect1,0は進数でチャンネルを設定するところ。PD0は、パワーモードの選択。DACなので特段苦労することはないかと。  /* Transmitting data to slave */  MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P3, GPIO_PIN0);  MAP_SPI...

MSP432 UART printf to PC

イメージ
  マルチビットを読み込むのは、以前できていたので、今度は文字列をPCの送付する。 こちらはコードを書くというより、printfを使えるようにする。 https://43oh.com/2015/05/how-to-add-printf-support-for-the-msp432-launchpad-serial-port/ の通り。 手順 【前準備】 https://github.com/bluehash/MSP432Launchpad に行って、[↓CODE]のボタンをクリックしてDownLoad zipを選択してファイルをダウンロード。ZIPを解凍する。 必要なのは printfOverride.c というファイルで、これをCCSのプロジェクトにドラッグ、コピーするか、移動してくるか?聞かれるがコピー。 printfOverride.cを開いて、13行目にdriverlib.hをインクルードしているが、パスが通っていないので、#include <ti/devices/msp432p4xx/driverlib/driverlib.h>に置き換えをする。 準備はこれで終わり。 【使い方】 普通のc言語でprintfを使うので #include <stdio.h> をインクルードしておく。UARTなどの設定は、これまで通り。 ダウンロードしたフォルダーに例があるように普通にprintfが使える。 printf("\r\nPrintf support for the launchpad\r\n"); printf("Decimal(10) :%d\r\n", 10); printf("Hex(10)     :%x\r\n", 10); printf("float       :%f\r\n", 4.32); 以下は例。スイッチを押すとコンソールに、0から9までカウントアップしていき表示する例。 /* --COPYRIGHT--,BSD  * Copyright (c) 2017, Texas Instruments Incorporated  * All rights reserved.  *  * Redis...