jo7ozw
SDR Hard/Soft Lab JO7OZW
8 posts
SDR関連ハード・ソフト製作の日誌です。小型・シンプルな回路構成で高機能な無線機の実現を目指します。
Don't wanna be here? Send us removal request.
jo7ozw · 5 years ago
Video
youtube
G4SDR: STM32G4 internal signal rooting test while the ALL JA Contest 2020
0 notes
jo7ozw · 5 years ago
Text
G4SDR開発進捗① 部品実装完了→96x64ドット有機ELに表示してみた
前回、ラダーフィルタで所望の特性が得られる見込みが立ったので、G4SDRに部品実装を行いまいした。 一部、LTspice SIMで問題点が出てきたので、その部���については、パターンカット等の手をいれて対応しました。軽微なものでよかった^^; 何気に、一番問題になったのは、120kOhmの抵抗が必要なところを120Ohmで注文してしまい、手持ちにそんな大きい抵抗値はリード付抵抗しかなく、これはどうしたものかと少し悩み中です(リード付抵抗をボンと置くのはカッコ悪い)。
部品実装の流れ紹介
部品実装の過程を少し書いてみます。他の自作派の皆さんがどうやっているのか、意見交換したいところです。この方法いいよ!っていうの持ってる方いたら教えてください!僕としては、部品実装の過程を楽しんでるわけではないので、できるだけ楽をしたいのです。当然、費用対効果が絡みますが。
まず、基板はFusion PCBに発注しました。 初めての発注にトライするような方にアドバイスとしては、 「デザインルールと部品実装ルール(自分が実装できる仕様になっているか)を確実に読み込み、自分自身が理解してからレイアウトしましょう!」 これは、デザインが完成して、いざ発注だ!というタイミングでの設計変更を防ぐためです。この設計変更はかなり骨が折れます。特に小型化を狙っているような場合です。あらかじめ、ルールがしっかり入っていて、配線一本を引く度に、目視で「ルールOKだな、さぁ次」と進められれば、先のような戻りは防げます。
ちなみに、私がレイアウトする際には、ほとんどDRCエラーは発生しません。昔はエラー山盛りであることに終盤で気付くというようなへっぽこをしていた時代もありますが。
話を部品実装に戻します。 今回、基板と一緒にメタルマスクも発注しました。1000円程度なので、発注しない方がもったいないくらいです(送料の方が高い)。
まず、メタルマスクは厚紙?に挟まって納品されます。この厚紙を使ってメタルマスクと対象の基板の位置合わせをする環境を作りました。
Tumblr media
メタルマスク固定用基板(対象基板と厚みが同じだと良い)を準備して、先の厚紙に張り付けます。それらの基板で、対象の基板を挟んで動かなくするのが目的です。 今回は2枚で行いました。横縦に動かないために三点以上で止めるために、場合によっては3~4枚必要かもしれません。G4SDR基板には 電源コネクタ取り付け用の出っ張りがあったので、これを利用して動けなくしてやりましたhi。
Tumblr media
上にメタルマスクを置いて、はんだペーストを流し込みます。使い終わったクオカードを使いました。ちょっとやりにくいので、今後、要改善です。コツとしては、部品の手載せ時のスムーズさを上げるために、「多めに塗っておくこと」です! 多すぎてブリッジした分には、はんだ吸い取り線で対応できますが、少ないと、そもそも部品が基板に接続されなかったりします。 また、部品を手載せしていく際には、はんだペーストが少ないと、載せた部品を食べてくれません(表現が難しい、埋まってくれない?)。今回、基板の左半分のペースト量が少なく、部品を載せるのに苦労しました。
Tumblr media
そして、あぶります!!! 僕は、これ(リフロー的な)専用のフライパンを常備してます。料理しちゃだめよ?(笑) 弱火であぶりながら、溶け具合が見やすい点を見つけて凝視し、はんだの溶け具合と煙?の出具合で判断して、ヒートクリップで取り出します。 あらかじめ、とりだした後に冷ますための場所も確保しておきましょう!僕は、ブリキのクッキー缶の蓋にしました。どうなってもいいやつが良いです。 その後のチェックで、ペーストが薄かった部分の付が悪かったので、手直しをすることになってしまいました。
Tumblr media
裏面。回路機能のほとんどは裏面で成り立ってます。
Tumblr media
表面。こちらは、UIやハード的インターフェースを集めてます。
㊤SMAコネクタは送受切り替えスイッチの出力につながっています。つまり、そのままアンテナに接続すればOn Airできる想定(簡単なLPFはつけないといけない)。
㊦SMAコネクタは、送受切り替えスイッチをDisableしたときに、受信信号専用の入口になります。一方で㊤SMAコネクタは送信信号専用になります。G4SDR外部にPAやLNAを追加したい時や、送信と受信のアンテナを別にしたい時に有用です。
これで、99%実装が完了した状態が整いました。そして、いつもドキドキの火入れです。USBから電源を供給したら、Green LEDがきれいに光る予定です。「せーの!」で投入するも、うんともすんともないです。調査したところ、LEDの電流制限抵抗のはんだ不良でした!!!そういえば、後で要チェックだなと思いながら部品を置いたのを思い出しました。ペーストの量、大事です! 手直しして、無事動き出しました!
さてさて、マイコンは動作してるかなと気になります。 僕がいつもやる、マイコンの生存確認方法を紹介します。 「USB経由でPCがDFUデバイスとして認識するかどうか試す」 です。STM32マイコンで、USBポートがついているデバイスは、起動時に[BOOT0]ピンの状態を読み取って、HIGHならばブートローダ機能を立ち上げてくれます。これは、あらかじめチップに書き込まれたプログラムなので、ユーザーがプログラムを書く必要はありません。 以下、手順です。
BOOT0ピンがHIGHになるように回路を設定する(BOOT0ピンと電源間にスイッチを置くと便利です)
PCにつながったUSBケーブルを基板にさす(同時に電源が供給されてもよい)
基板に電源を投入する
PCが「おなじみのピン!」��鳴って、DFUデバイスを認識してくれるかどうかチェック(何らかのソフトを立ち上げる必要はない)
これのいいところは、Lチカで動作確認だー!と走り始めて、興奮のあまり、出力のピン設定を間違ったプログラムを書いてしまい、「L、チカってくれなーい!!!」と大慌てするようなことを防げます(笑)たぶん、世の中で結構な人がやってると思いますよ。一日一人とか(笑)
で、Lチカもできたので、秋月で売ってる96x64ドットの有機ELディスプレイにSDRっぽい絵を表示させました。このディスプレイをSTM32で使っている例があまりなくて困りましたが、あちこちのソースを参考して、物理レイヤ(一番めんどくさい)は大体完成できました。 ライセンス等の絡みがまだ整理できてないので、公開は保留します。
Tumblr media
下の箱の部分にFFT結果とウォーターフォールを表示しようと思ってます。さすがに小さいディスプレイなので、情報を入れるのが大変です。そのうち、大きいディスプレイに拡張する基板もおこす予定です。SDR機能の本質ではないので、とりあえずこれで良しとします。これはこれで綺麗だし、かわいいですよ(笑)かわいさ大事です。 これから、RF回路のデバッグ、マイコンの信号処理プログラム(DSP)を書くという流れで進んでいきます。
0 notes
jo7ozw · 5 years ago
Text
小型・オールモード・マルチバンド SDR → [ G4SDR ]を立ち上げます!
久々の投稿です。放置しすぎました。 近頃、コロナで大変ですね。コロナちゃんの影響で、会社が休業となったため、それを見越して発注しておいたSDRを作り上げてしまおうと、活動を再開しました!
以前、[SDR-YAGI]という名前で、SDRの立ち上げを行いました。実験により、1~144MHzの送受信ができる見込みまで行きました(紹介したブログ)。 しかしながら、クリスタルフィルタ部の難しさ(マッチングやクリスタルの素性がつかめず帯域を広げられないなど)とソフトウェアの壁でフラフラしてるうちに、別コンセプトが浮かんできたので、今回、[G4SDR]と命名したSDRに乗り換えます。
[G4SDRのコンセプト]
一般的な 基板サイズ (47x72mm)とし、独自の回路ブロックを気軽に(穴あけ不要でスタック)追加できる構成とする。
RFフロントエンド(送信パワーアンプ、受信BPF、LPF、アンテナスイッチ等)は外付け
HF+50MHz(144MHz)の任意周波数で送受信が可能
変復調モードはSSB, CW, AM, PSK etc..に対応
IQ信号の出力機能を備える(できればUSBで送り出したい)
PCは必要とせず、スタンドアローン動作
搭載するUIは必要最小限、UI拡張用のI/O出力ポートを備える
学生さんがプログラムやハードをいたずらできる余地を残す(いたずらしたくなる)
今風のおしゃれな部屋に馴染む佇まい、できればインテリア風になってほしい
長い間、構想を練ってきました。僕が作りたくなるものの条件として、「世の中にまだないもの」であること、そして、「僕自身のアイディアが表現できていて」かつ、みんなにも「いいね!」って言ってもらえるものを作りたいというのがあります。これを求めると、なかなか答えが出せず苦しんでいました。しかし、ここにSTMicro.が答えを与えてくれたのです。この結末の詳細は後日紹介��たします。
超小型クリスタルフィルタ部の設計
さて、話は変わって、G4SDRの肝となるクリスタルフィルタ部の設計であちこちつまずいたので、これを紹介していきたいと思います。 私も含め、クリスタルフィルタ初心者ないし、自分で作れるような気になっている(僕がそうでした)読者の方の一助になるように、できるだけ丁寧に書きます。ちなみに、ここで検討した水晶振動子は2016(2.0 x 1.6mm)の極小サイズです。自作派アマチュア無線家のブログをいくつも拝見しましたが、このサイズで作っている例は見つかりませんでした。 そういう意味で、冒険の始まりです(笑)
今回作りたい ラダーフィルタ の目標仕様を定義しました。
周波数 32 MHz
帯域 4~6 kHz
素子数 3
水晶サイズ 2016
通過帯域損失  5dB以下
入出力インピーダンス 500Ω以下
不安要素として、
32MHzのような高い周波数でラダーフィルタを作っている例をほとんど見かけない(一つありました)
小型サイズの水晶はその小ささの弊害で、フィルタとしての性能を損ねる要因を持っていないか?
という2つが頭から離れませんでした。 そこで、実現できるのかどうか、シミュレーションで検討しましょう!と走り始めました。
様々なブログを渡り歩き、最終的にJA9TTT 加藤OMのページに行きつきました。ここで紹介されている設計ソフトはとても素晴らしいものでした。是非、使用されたい。 以下、加藤OMページの抜粋 参考:Warrington Amateur Radio Club(英国)のサイトに、Jack Hardcastle, G3JIRによって最新バージョンDishal2031がアップされています。あまり違いは無いようですが、Windows OSによっては新バージョンの方が良いこともあるのでリンクしておきます。→ここから. (追記:2015.08.25) 
この辺で、絵を入れたくなったので、採用を検討した水晶振動子の直並列共振周波数の測定の様子をお見せします。いつもお世話になっているAPB3で測定しました。
Tumblr media
ちょっと右寄りに浮いてるのが水晶振動子です。いい加減な配線ですが、これで精一杯でした(笑)
Tumblr media
いい加減な測定でしたが、それらしいデータが取れました。直並列共振周波数の間隔は45kHzであり、仕様とした帯域は満たせそうだと判断しました。この周波数差が大きいほど広帯域なフィルタが作れます。
さあ、それでは設計していきましょうと、設計ソフトを立ち上げて、「ん?」と固まりました。設計を進めるためには水晶振動子の等価回路の各パラメータを「実測で!」あらかじめ求める必要がありました(最初から知ってましたが、多少話を盛ってみます(笑))。 「実測で!」と強調したのは、データシートからは読み取てない素性だからです。なぜなら、本来の振動子として使うときには、「あまり重要ではないデータ」だからと推測します。そんな計算をいちいちやらないとマイコンを水晶振動子で動かせない世の中だったら、みんなアナログ屋さんになれますよね(笑) そうはいっても、そんな特殊な測定器(LCメータなど)は手持ちにないので、ひたすら水晶振動子のデータシートをアサリました。すると、ありました!!! 全部の必要な���ラメータを列挙したおかしな?データシートが!! NDKさん、さすがすぎます!!
手持ちの水晶とサイズも一緒なので、さほど素性に乖離はないと判断し、この水晶振動子のパラメータを使ってラダーフィルタを設計しました。
Tumblr media
いい感じに設計できてます。実測でもこのように動いてくれれば大満足です。
設計もできたので、実際に秋月で売っているSMDユニバーサルに組みました。 これおすすめです。って、裏面がベタのやつなくなってるやん!!悲しみ。。。
Tumblr media
はい。なにがなんだかわかりませんよね。拡大鏡で頑張りました。
Tumblr media
そして。APB3による測定結果です。ムムム、通過帯域は所望になっているけど、なぜか阻止域で跳ね返ってきてる!この手の特性は、経験上、測定の問題だと断定し、調査すると、同じようなことを書いている方が何人か見つかりました。 JM1DPL OMと最近はNanoVNAの創造主として有名人(←いいなぁ。そして、素晴らしい!)のttrftech 高橋さんです。 これらの内容を参照して、ユニバーサル基板の裏面ベタを利用してGNDを強化したところ、見事に跳ね返りが消滅しました!!
Tumblr media Tumblr media
普段、数~数十GHzの回路を��っているので、32MHzをなめてました。すみません。君は立派な高周波だよ。。。 そして、時代の流れに乗るために、そしてコロナ休み中にプロジェクトを進めるために、ついにNanoVNAをアマゾンで入手した。 2日で届いた。(eBeyで首をながくして待つより良いと判断)
使い方はjh4vaj OMのページを参考にした。なお、Cal.説明の 「THRU」 については、誤っている。ここでこそ、SMAメスメスの出番です。同軸2本がNanoVNAに接続された状態で,それらの先端をSMAメスメスで接続しあうのが正解。
Tumblr media
いいね!!APB3と同じ特性が測定できました。NanoVNAは、タッチストーンファイルの出力機能を備えているので、問題が出ても、PythonのScikit-rfなどで解析できますし、安心できます。高橋さん、ありがとう!!! というわけで、仕様に合うフィルタの設計と実測検証が完了しました。 明日から、G4SDRの基板に部品実装し、動作検証に入っていきます!
0 notes
jo7ozw · 8 years ago
Text
SDR-YAGI Ver.3のHard評価→GND引き回しに改善の余地あり
SDR-YAGIのVer.3基板と一緒に発注していたドータボード達が届きました。いつも通りなんちゃってリフローで部品を載せて、一発OKで動いてくれました。自分で設計しているので、回路図見なくてもどの部品をどこに載せるか把握できているので楽です(笑)
写真は今回、段数を増やして、かつ小型化したクリスタルフィルタの測定の様子です。測定にはいつもお世話になっているAPB3のネットアナ機能を使っています。負荷容量は設計値からだいぶずらす必要がありましたが、所望の特性に追い込めました。
Tumblr media
クリスタルフィルタの特性を測定中
Tumblr media
測定系外見
また、前回バージョンの評価時に測定した結果から、クリスタルフィルタの入出力インピーダンスは計算値とぴったり合うことが確認できているので、今回は測定を省こうかとも思いましたが、念のため測定して設計値通りになることを確認しました。下の写真は測定に用いた自作のインピーダンスブリッジです。これとAPB3の組み合わせで測定を実施しました。
Tumblr media
自作インピーダンスブリッジ
これらの測定でクリスタルフィルタの特性が把握できたので、プログラムを書き込んでいつも通りラジオを受信してみました。フィルタの切れ味が良くなっていることが音でも実感できました。ちゃんと機能しているようです。
前回の投稿で紹介した、RF Front End基板も一緒に届きました。写真を載せます。まだ何も評価してません(笑)今週末にJA7YAAのOB会があり、宮城に帰る予定なので、それに合わせてこのFront Endボードも組み上げて、大きなアンテナで受信を試したいなぁという希望があります(笑)実はまだラジオ以外は受信したことがないのです。なぜなら...アンテナがないから!!
マンションはアンテナ設置には何かと苦労しそうです。実家のアンテナのありがたみを感じます。
Tumblr media
RF Front End基板とRFユニバーサル基板
どうでもいいことですが、今回の投稿から、撮影するカメラをスマホからミラーレス一眼に変更しました。パンケーキレンズで撮ってますが、やはりスマホとは段違いに良く撮れますね!
Tumblr media
[GNDの分割方式について(メモ)]
表題のGNDの引き回しについてですが、いろいろと測定やらパターンカットやら試していて細かくは説明しきれないのです。結論としては、今回の回路に関しては「各機能ブロックごとにGNDプレーンを分割して、戻り電流のルートを明確にする」ことが最善と判断しました。今まではアナログGNDとデジタルGNDの二系統構成でしたが、この構成ではLO信号によってGNDが揺れていることが観測されました。この辺のGND処理方法は基板や回路ごとに対応する必要があり、なかなか予想しにくい領域ですね。これがソフトな時代に生きるハード屋さんの存在価値でもあると思います。
あとは、このLOノイズを退治すれば、目的信号のみのクリーンな送信信号が得られます。もっとも、現時点でもRF Front End基板に載せる送信LPFで十分退治可能なレベルにはなっていますが。オンエアも近づいてきてますね!
早くUI実装しよっと。いつも後回しになっちゃう(笑)
0 notes
jo7ozw · 8 years ago
Text
RF Front End用 ユニバーサル基板
という基板を設計して、その他のいろいろな基板と一緒に発注しました。ユニバーサル基板(FrontEnd-Universal)なので、お絵かき気分で設計してしまいました。意外に使い勝手は良さそうな予感がしてます。
この基板は両端の2.54mmピッチのピンヘッダでSDR-YAGIとスタックして使います。現在、終段アンプに使うデバイスを何にするか迷っているので、このボードが届いたらいろいろ試してみます。
Tumblr media
最近は、本業の(?)ハード設計を中心に動いていたので、そろそろソフト開発に戻る予定です。
0 notes
jo7ozw · 8 years ago
Text
1MHz~144MHzの任意周波数で送受信動作検証→OKっぽい!!
I2Sが動作するようになってから、RFアナログ回路デバックや復調・変調ソフトの実装などを進めてきました。表題の通り、この小さな基板で1MHz~144MHzの送受信動作ができそうな見込みが立ちました。
受信に関しては回路に問題があったとしても基板内でお祭り騒ぎになるだけで、他人に迷惑をかけることはないので、ある意味「どうにでもなる」ので、気持ち的には楽なのがいいです(笑)?しかしながら、送信に関してはそうはいきません。スプリアスが出てしまうことは、他人に迷惑をかけることになるし、法律的にも問題があるので、開発中もハラハラ・ドキドキです(笑)なぜこんなことを書いているかというと、設計時に想定していなかった不要信号(スプリアスではない)が発生することが分かったためです。前回の投稿で、開発中のSDRの構成ブロック図を掲載しました。このブロックから送信時の流れを抜き出したブロック図を示します。
Tumblr media
第一IF周波数は諸事情で12kHzに変更しています。この理由は後ほど。
この送信信号の流れの中で発生しうる不要スペクトルとして想定していたのは以下の二つです。
Mixer1の出力信号のうち、20MHz IFフィルタで十分に減衰できない成分(20MHz ± 12kHzのどちらか一方)
Mixer2の出力信号のうち、LO2の漏れ信号(20MHz + f_RFout)
この予想通り、 20MHz IFフィルタの出力には20MHz ± 12kHzの変調信号が出てきましたが、フィルタにより 20MHz + 12kHz の成分は十分に減衰することができました。しかし、その予想に反して、20MHz IFフィルタの出力には変調信号以外に、��調信号に対して-35dBcの強さでLO1の漏れ信号も一緒に出てきてしまいました。これは2個のクリスタルフィルタでは十分に落としきれませんでした。
このローカル漏れの原因を探るために、コーデックTLV320AIC3204の出力を停止した状態で、IFフィルタの出力を見てみました。以下にAPB-3で測定したスペクトルを示します。
Tumblr media
理想的には何もスペクトルが出てこないはずなのですが、しっかりローカルが出てきてしまってます。ここではローカル周波数は20MHz - 12kHzに設定されています。原因としてはコーデックのコモンモード電圧のアンバランスかと思われますが、まだ調査中です。こんなにローカルが漏れるMixerはMixer失格でしょう(笑)ひとまず対策として、次試作基板ではクリスタルフィルタの段数を増やす予定です。フィルタのスカート特性など少し不満があったので、結果オーライということにしておきます。ミキサ周りの回路も修正予定です。
上記のような問題はありましたが、ドライブAMPとして6GHzまで帯域が伸びているMMICを用いているため、1~144MHzの間で0dBmの送信出力を得ることができる見込みです。簡単な (ブロード帯域な) 回路でクリーンな送信信号を得ることは結構大変ですね。身に染みて実感しました。
[IF周波数を12kHzに変更した理由]
ちょっと小難しい話をします。実信号と複素信号について考えてみます。複素信号と聞くと難しい響きで、見ることも聞くこともできない信号のように思えてしまいますが、要は複素信号は「マイナスの時間という概念から生まれた信号」と考えることができると思います。メモリ機能、つまり遅延を使えるデジタル信号処理においては「マイナスの時間 = 過去の信号」を扱うことは当たり前のことですから、知らないうちに複素信号を扱っていることになります。何を言いたいかというと、一度デジタル信号に変換してしまえば、複素信号を作り出すことは容易なのです。
とはいうものの、デジタル信号に変換したとしてもしばらくは(複素信号に変換が完了するまでの間は)実信号のまま扱うということもしばしばあります。今回のようにIF信号(実信号)を取り込んで、内部で複素可するような場合がそれに当てはまります。
受信信号処理を実装する過程で、12kHzからベースバンドへのダウンコンバートする信号処理方法を何種類か検討しました。デジタル信号処理で複素信号を周波数変換する場合には、理論的には、ローカル漏れやイメージ信号は一切発生しません。しかし、実信号から複素信号への変換を兼ねた周波数変換過程においてはその限りではなく、イメージ信号が発生してしまいます。
これが少し気持ち悪いなと感じた時、「IFを12kHzにすれば、12*4 = 48kHz(サンプリング周波数)という関係を利用して面白いことができるかもしれない」と思ったのです。具体的には、48kHzのサンプリング周波数でサンプリングした12kHzのIF信号を1サンプル分遅延させたデータと遅延なしのデータは位相差90度の信号対とみなせるわけです。これはつまり「データを1サンプル分遅延させるだけで複素信号を作り出せる」ことを意味しています。信号処理に詳しい人が聞くとちょっとした問題点に気づかれると思いますが、現状は目をつむっています。
この方式により、実信号を一般的な方法でダウンコンバートするよりも、不要信号レベルを約25dB減少させることができました。これはフィルタ設計条件を緩くしてくれるメリットがあります。とりあえず、満足です。
「以上が進捗でした。現在、これまでのデバック結果を反映した試作基板を設計中です。回路内容が大幅に変わりそうです。修正のついでに144MHzにも本格的に対応予定です。」
[つまずいたことと対策]
TLV320AIC3204のLine出力に直接容量負荷をつなぐと発振する。
0 notes
jo7ozw · 8 years ago
Text
HALを使ってDMA+I2Sのループバックテスト成功
少し時間が空いてしまいましたが、進捗を書ける程度までいろいろ勉強できたので、書いてみます。
前回の投稿でSDR_YAGIのブロック図を載せていませんでしたので、ブロック図を載せておきます。
Tumblr media
SDR-YAGI Block Diagram
ほとんどのRF回路部分が送受信で共用しており、とてもシンプルな回路構成にできていると思います。とはいえ、シンプルにするためにいろいろと細かな工夫をしています。このあたりは、追ってご紹介できればと思います。
[I2S + DMAループバックができるようになるまで]
さて、最近はソフトウェアの開発を中心に進めていました。特にI2S関連です。 本開発にはFreeRTOSを用いてますので、OSへの影響・負担を小さくすることを考慮して、DMAとI2Sを組み合わせたいという思いが��りました。I2SをHALで書くのは初めてであり、分からないことだらけでしたので、まずは先人の知恵をお借りすることにしました。
まずは、 Computer Radio RF Tech  高橋さんのIQDDSのmbedソースを眺めて検討を開始しました。高橋さんのソースから TLV320AIC3204(以下Codec) の初期化コードを引いてきて、少し改造して実装させて頂きました。また、I2SとDMAを組み合わせてFull Duplex動作させるために必要な初期化パラメータを参考にして、STM32CubeMX経由で実装しました。
以下、I2SとDMAの組み合わせで音声のループバックができるようになるまでの開発手順です。
Codecのアナログルーティング仕様をI2C経由で設定
Codec_Write(0x1d, 0x10); // (addr, data) コマンドでアナログルーティングが正しいことを確認。このコマンドはAD変換データをchip内部でそのままDACへ送り込む設定値です。DACにはヘッドフォン、ADCへはマイクをつなげています。
マイコンのDMA, I2Sを設定し、ダブルバッファーを構成し、 Codecの出力データ(AD変換結果) をそのままCodecへ送信するようにコード作成
マイク入力音声がヘッドファンから聞こえればオーケー
と、簡単そうに書いてみましたが、いろいろつまずいてなかなかに苦労させられました。まぁ、あまり簡単にうまく行っては勉強にならないのですが(笑)
そして、ふと「AMラジオならこのまま受信できちゃうのでは??」と思い、ご近所のAMラジオ局の周波数1422kHzをLO発振器に設定してみたら、あっさり受信できてしまいました!!!いやー御馳走さま!って感じ(笑)動画載せておきます。
youtube
以下に、つまずいたところや、気づいた点について、参考になりそうな情報を載せておきます。
STM32CubeMXで作成したSW4STM32用プロジェクトをコンパイルすると、”SysTick_IRQn can't be resolved”というエラーが出る。これはCubeMXのバグだそうです。以下、対処方法
To solve this error, you should request that System Workbench do not parse files that are not used by your project, by opening th eindexer properties dialog (project >> Properties >> C/C++ General >> Indexer) then check the Enable project specific settings checkbox and uncheck the Index unused headers checkbox.
You may also suppress indexing of unused headers for all projects that do not have project-specific indexer settings by modifying the workspace settings at Window >> Preferences >> C/C++ >> Indexer.
HAL_I2SEx_TransmitReceive_DMA(&hi2s2, .., ..., ...) 関数からのCallBack関数はHAL_I2S_TxRxCpltCallback(...)のみ有効。HAL_I2S_TxHalfCpltCallback(..)系関数は定義しても呼ばれない。
Apple製のマイク付きヘッドフォンを接続すると動作が不安定(要原因調査)。中華製のヘッドフォンに変えると安定動作した。(結構ハマりました...)
ここまでで、この無線機の土台になる部分はおよそ出来上がったかなと思ってます。 今後は、ループバックしていたソフトウェアに変調や復調関数を順次追加していき、無線機らしく仕上げていくことになります。
[参考]
Computer Radio RF Tech  高橋さん のIQDDS mbedソース
Description of STM32F3 HAL and Low-layer drivers
TLV320AIC3204 Data sheet
0 notes
jo7ozw · 8 years ago
Text
ブログスタートしました!
このブログでは、現在開発中のSDRトランシーバの製作過程を書いていこうと思います。製作中のSDRのコンセプトは以下のような感じです。
「コンセプト」
一般的な 基板サイズ : 47x72mm
RFフロントエンド(送信パワーアンプ、受信BPF、LPF、アンテナスイッチ等)は外付け
HF+50MHz(144MHz?)の任意周波数で送受信が可能
変復調モードはSSB, CW, AM, PSK etc..に対応
PCは必要とせず、スタンドアローン動作
搭載するUIは必要最小限
学生さんがプログラムやハードをいたずらできる余地を残す(いたずらしたくなる)
今風のおしゃれな部屋に馴染む佇まい、できればインテリア風になってほしい
実はこれまで3年ほど、いろいろな回路構成や基板形状を検討してきましたが、なかなかしっくりくる物ができずに悩んでいました。ところが、最近になって、たくさんの方との交流の中で、やっとしっくりくるものが見つかりました!中でもHandyPSKの回路構成やFriskPSKには特に大きな刺激を受けました。大いに参考にさせて頂いてます。
そんな経緯でやっと形になったのが今回紹介するSDRです。外見をお見せします。SDR_YAGIは仮名です。八木アンテナ発祥の地である出身校(JA7YAA)への敬意と後輩達への期待を込めています。
Tumblr media
表面(UI)
Tumblr media
裏面(部品面)
無線機の肝 - 局部発振器としては、安価で入手しやすいクロックジェネレータICであるSi5351を採用しました。このデバイスはElecraft社の最新デバイスであるKX2にも採用されており、無線機の局発として採用することに対して全く障壁を感じさせない期待のデバイスです。高橋さんがスプリアスの調査してますね。以下にKX2の構成ブロック図を載せます。 
Tumblr media
上述のようにいろいろな回路を参考にしつつ、独自のテイストをブレンドして(👈これが醍醐味ですよね!)回路設計・レイアウトし、いつもお世話になっているelecrowに注文しました。メタルマスクも注文し、ホットプレートでなっちゃってリフローで完成させました。最近、elecrowは発注してから商品到着するまで7日を切ることが普通になってますね。���ても助かってます。回路の構成については、図を作ってないので、後日載せることにします。
これまでは回路中心に開発を進めてきたため、マイコンの開発環境については勉強不足でした。開発環境の構築はとても骨の折れる作業のイメージが強かったのですが、世の中はどんどんオープンソースの方向に進んでいて、意外と簡単に素晴らしい環境が整ってしまいました。ソフトウェア開発環境の構築ついても後日説明したいと思ってます。それにしてもSTMicroのHALライブラリはよくできているなぁと思いました。程よい抽象度、レジスタを叩いていないのになんでもできる感じがいいですね。これから勉強していきます。
「進捗」
STM32CubeMXとSW4STM32を導入し、マイコン開発環境の構築完了
FreeRTOS、LED制御、Si5351による2周波発振確認、I2C LCDの動作確認完了
20MHz 2nd IF Filterの伝達特性の測定完了(設計通り:BW 3kHz, Loss 1dB)
「メモ」
I2C LCD( AQM0802A )は400kbpsのデータレートonly
「今後の予定」
TLV320AIC3204 (MCLK: 16MHz) の初期設定パラメータの算出
TLV320AIC3204とSTM32F303のI2S full duplex動作の実現(DMAの設定含む)
テスト信号(単一周波数正弦波?)を用いて変復調の基本動作確認
RF回路の入出力性能の測定(設計値との比較)
1 note · View note