ユキのワクワク日記

ユキのワクワク日記

PR

サイド自由欄


・このブログの目的
自分の作った物のメモや、他の人にもお勧めしたいもの、自分が詰まって大変だったところなどについて。
また、自分が学習した内容を書き記すことにより、自分のメモ及び、他の人にも良いものを知ってもらいたいと思い、書いています。

※mbed、STM32の記事は下記サイトに移行しました。
Project_OKIはてなブログ


内容
・ビジネス書籍のまとめ。
・見た漫画、アニメ、動画などについて
・ものづくり
・副業について

こちらもよかったらお願いします。
私のインスタグラムです
私のtwitterです

プロフィール

yuki9580

yuki9580

カレンダー

カテゴリ

カテゴリ未分類

(58)

電子工作

(25)

C言語勉強メモ

(1)

C++勉強メモ

(12)

C言語(組み込み):STM32(mbed)

(0)

少女漫画

(6)

英語

(18)

アニメ

(4)

料理

(11)

漫画!

(8)

食べに行こう

(4)

見たyoutube

(14)

読書

(24)

各種イベント参加

(0)

習慣日記

(32)

副業(FX)

(9)

FX(言葉の意味)

(8)

ライフコンシェルジュに相談してみた

(4)

ふるさと納税

(0)

暗号資産関連

(2)

遊戯王

(1)

目標

(14)

AI関連

(3)

日記

(3)

キーワードサーチ

▼キーワード検索

2021.07.04
XML
カテゴリ: 電子工作
こんにちは
ユキです。

先週の続きで、とりあえず、mbedのプログラム確認から行う。
これで、基板とmbedの接続及び動作が確認出来たので、STM32のプログラムを再度開始する。
問題なく動いた。 これでやっとSTM32のプログラムに入れるわけだ。

先週使用できないピンが分かったので、STM32のプログラムの方も変更していく。

ただ、設定部分は忘れてしまったので、再度STM32の教材を参照して、設定した。
​ ・​ STM32教材 
 ・​ GPIO ​​

DFplayerテスト仕様:
(1) mbedの青ボタンを押すことにより、次の曲を再生する。
(2) 音楽再生中はmbedのLEDを点滅し、停止中は点灯させる。
(3) 可変抵抗を使用し、DFplayerの音量調整を出来るようにする。

使用ピン:
 PC_13:スイッチ(青ボタン)
 PA_9:UART2 TX DFplayer接続
 PA_10:UART2 RX DFplayer接続


これは、数値が小さいほど、割り込み順位が高い。
Baud Rate:ボーレートを9600に変更する。

今回は、ボーレートはDFplayerのデフォルト値である9600に設定する。
ボーレートは通信速度を早くしたい場合は、高く設定するが、
その分波形が崩れてしまうため、通信の安定性が悪くなってしまう。
今回はそこまでの速度を必要としないので、デフォルト設定で使っていく。

参考:
 ・​ USBシリアル通信 
CPU(HCLK)のクロック周波数設定をする。
前は、いわれた通りに設定したけど。さて、これは高い方がいいのか、低くてもいいのだろうか・・
クロック周波数の意味を調べてみる。

・​ マイコンのクロック周波数 
・​ CPU性能を決める5大要素
・​ STM32のタイマーをCubeMXで

なんとなくだが、クロック周波数が高いほど、処理速度が早くなる。 つまり、ボタンを押したときとかの反応速度に差が出てくるという事だろう。

だから、GPIOの演習では、84MHzにしていて、UART通信の演習では16MHzのままだったのかな。
クロック周波数が高いほど消費電力が大きくなるらしいし、
16MHzで設定しておいて、ボタンを押したときなどに押しても反応しないなどの駄目な部分があれば、後で変えることにした。

PC_13のGPIO modeを資料通り、
Extemal interrupt Mode with Falling edge trigger detectionに変更する。

これは、ボタンが押されたとき、割り込みを発生させるということだろう。
これが、Fallingじゃなくて、Raisingにすると、ボタンが押して、離したときに割り込みを発生させるという事になるんだと思う。

一通り設定が終わったら、コードを出力して、プログラミングに入った。
問題は、ここからだ。
mbedでは、人のライブラリを使って出来たが、STM32では、UARTでコマンドを送って制御する予定だ。

とりあえず、確認するべき事としては
 ・DFplayerにどのコマンドを送ればいいのか。
 ・STM32でどうやって、DFplayerにコマンドを送るのかだ。

調べてみたけど、色々あってようわからん。
前と同じ感じだ・・・

まずは、DFplayerのデータを読み込んで、送る必要のあるコマンドを調べる所から始めよう。


ただ、このPDFコピペが出来ないので、辛い・・・
と思って、日本語訳が無いか探したところ、素晴らしいものが。
ここに、KT403AというDFplayerminiの互換品のデータシートを分かりやすく日本語化してくださったものがありました。

シリアル通信部分は、ほぼほぼDFplayerと変わらないので、これがそのまま見て使えそうです。

とりあえず、前行った復習もかねて、上の設定で、Teratermに出力するだけのプログラムを作った。
簡単だろって思ったのに、できない・・・・・

何故だぁああああって色々やって分かったのが、
前回 huart2はPC用と接続する用になっているため、外部とのやりとりには使えないと分かりましたが。
今度は、huart1は、外部と接続するポートになっているから、PCと通信は出来ないわけですね・・・

まあ、考えてみればあたりまえですが、めっちゃ時間使った・・・

とりあえず、ようやく、Teratermに文字を出力するプログラムが完成した。
ここまでで既に5時間たってるぞ・・・

上の設定を、デバック用にTeratermで出力して見たいから、huart1とhuart2両方出来るようにCubeMxで変更した。

無事に、huart2で、テラタームで出力することが出来た。

実際に作成した場合の動画:



この動画の通り、huart1の方では、PCへの出力はできないのだ。

次は、DFplayerでは、複数のコードを送らないと行けない。
そのまま全部用意するのは非常に面倒かつ、やってみたが、出来なかった・・
STM32と外部機器とのUART通信について調べてみたが、全然検索にひっかからない。

どうするんじゃい・・・

UARTの送信について調べた結果:
HAL_StatusTypeDef HAL_UART_Transmit (UART_HandleTypeDef * huart, uint8_t * pData, uint16_t Size,uint32_t Timeout)

HAL_UART_Transmit(&huart2,data2,strlen((char*)data2,100);
第一引数:UARTハンドラ
第二引数:送信するために格納されたバッファ
    (pData: Pointer to data buffer (u8 or u16 data elements))
第三引数:送信byte数
第四引数:タイムアウト時間

色々調べたけど、うーーん、分からん。
ちょっと中途半端になってしまいましたが、今日はこれで終わりです。
明日また続きをやります。

関連記事
​​​ ​  STM32勉強日記(2021/6/19) ​  ​​



​​





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2022.04.09 08:08:36
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: