おじさん工房  APB-1  APB-2  APB-3  SDR-1  SDR-3  RFC-5 

おじさん工房 BBS

620791
名前
件名
メッセージ
画像
メールアドレス
URL
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

RFC-7製作しました - ji1udd

2025/02/22 (Sat) 17:45:13

ご無沙汰しております。

遅ればせながら RFC-7 を製作しました。
独立動作の2台の自作GPSDOの出力を REF10M と SIG IN / PSC IN に入力して動作確認しました。GPSDOの周波数誤差表示のミリHzオーダーは校正された測定器で出力周波数を計測したことがないのでどこまで合っているのか怪しいですが、RFC-7カウンタ計測値とほぼ辻褄が合っているので RFC-7, GPSDO共問題なしかなと思ってます。
1秒ゲートでミリHzオーダーまで計測できるのは凄いですね。
あと、使用しているLCDは秋月のAQM1602Y-NLW-FBWで i2c.c中 の DELAY_N を 1 から 2 に変更しないとLCD表示されませんでした(自分の場合)。あとプリスケーラは MC12079の代わりに 秋月で取り扱いのある MC12080を使っています。これは分周値が 80 なので freqcounter.c 中の分周値テーブルとメニューを小変更して対応しました。

Re: RFC-7製作しました - Ojisankoubou

2025/02/23 (Sun) 13:05:32

TIM2 割り込みから演算、表示、などを 3ms 以内にしたかったため I2C は規格より速く設定しています。 私のところでは ST7032 も 5V で動かしていますので問題なかったのかもしれません。 あとは SDA の pullup 抵抗を小さくしてみるとかで改善されるかも。

ところで左側の GPSDO が -0.001Hz になっているのに RFC-7 が +0.001Hz なのは誤差でしょうか?

Re: RFC-7製作しました - ji1udd

2025/02/23 (Sun) 22:01:16

コメントありがとうございました。

まず、I2Cについてですが 最初は PCF8574 を 5V電源で接続したのですが、アドレスを取得できない状況でした。I2Cプルアップが3.3Vとなっているので PCF8574のVIH(min)を満たせないためかなと思い PCF8574 を 3.3V動作に変更してみたのですが、それでもアドレスを取得できませんでした。そこで次に試したのが AQM1602Y-NLW-FBWです。このモジュールでも3.3V電源、5V電源(スペック外だが) での動作を試したのですが、PCF8574と同じくアドレスを取得できませんでした。それで通信速度を落としたらアドレスを取得でき、LCD表示されるようになりました。プルアップ抵抗値の変更は試していないので試してみようと思います。

次に周波数表示の方ですが、誤差と考えてました。自作のGPSDOには 複数の出力端子があるので 1台のGPSDOで RFC-7 の REF10M と SIG IN に供給した場合、理想的には10MHzピタリにカウントされると思うのですが、実際では ミリHz 桁は ±1 ふらついています。GPSDO出力信号の品質などを考えるとこれでも上出来と思ってましたが、I2Cの速度を落とした影響とも考えられるのでしょうか? 
余談ですが、自作GPSDOとRFC-7の外観をそろえたく 表示器を OLEDに変更したいなと思っていたのですがお話から、それは困難なようなので このままケースに収めたいと思います (^^)

Re: RFC-7製作しました - Ojisankoubou

2025/02/24 (Mon) 08:01:59

周波数誤差ですが、DIGITS を AUTO+1、LINE2 を StdDev にすると変動がどのくらいかよくわかるかと思います。 私のところではStdDev は、信号と Ref を Rb や OCXO にした場合 0.0003Hz 程度(これはほぼ測定限界)、Ref を内部 TCXO にした場合 0.0007Hz 程度になります。

3ms といったのは途中で周波数が変化した場合を考慮したためで、普通は 5ms(200Hz) で測定しているので I2C の周波数を変えたとしても影響はほとんどないと思われます。

Re: RFC-7製作しました - ji1udd

2025/02/24 (Mon) 10:16:16

追加情報ありがとうございました。追々確認してみたいと思います。

I2C SDA のプルアップ抵抗を 1kΩに変更してみました。結論としては良くわからない結果となりました。と言うのは、DELAY_N を 1 にしても 2 にしても 上手く表示されなくなりました(添付画像)。オシロで SDAの tr が改善されるのは確認できたのですが...
また、オシロプローブをSCLだけにあてると文字がパラパラと表示されたりするので クロックが少し遅れた方がSDAとのタイミング関係が良い方向になるようです。
プルアップ抵抗ではちょっと解決しそうに思えなかったので 次に SDAのプルアップ抵抗を10kΩに戻して DELAY_N を 1 にし DELAY_HALF を NOP 1個から2個にしてみました。この設定でも上手く表示できました。お話から DELAY_N 2 で使っても問題なさそうですが、処理時間が短い方がベターかなと思うので しばらく様子を見て問題なければ この設定で使い続けようと思います。

Re: RFC-7製作しました - ji1udd

2025/02/24 (Mon) 10:49:34

教えていただいたStdDevを確認しました。変動が簡単に確認できる素晴らしい機能ですね。結果も思ったより良かったので満足しています。RFC-7の機能の使い方はこれからなので TCXOの周波数補正もこれから試してみます。

Re: RFC-7製作しました パオさん URL

2025/02/24 (Mon) 11:02:39

>ji1udd 様
はじめまして

こちらの掲示板を定期的に拝見しております。
GitHub で公開されている GPSDO も拝見しましたが、ケースの作りもカッコいいですね。

これから、RFC-7 を作ろうと思っていたので教えて頂きたいことがあります。
お時間のある時に、よろしくお願いいたします。

1 オリジナルではアンプ部の FET は BF862 ですが何を使っていますか?
2 FET 増幅部の抵抗 R13 は何Ωで作られましたか?
3 製作されたプリント基板での測定上限周波数(プリスケーラ有無)はどのくらいでしょうか?

Re: RFC-7製作しました - ji1udd

2025/02/24 (Mon) 11:10:38

周波数補正も難なくできました。自動的に入力周波数を判別してくれる人にやさしい機能に感動しました。

Re: RFC-7製作しました - ji1udd

2025/02/24 (Mon) 11:36:02

パオさんへ

興味を持っていただき嬉しいです。

ご質問についてですが、1)2)についてはこちらの掲示板で話題となったものを使っています。
A1) 2SK2394 です
A2) 180Ω です。

3)はまだ調べてないので今日の午後に調べてみます。信号レベルはどの程度で調べるべき とかありますでしょうか?

Re: RFC-7製作しました - ji1udd

2025/02/24 (Mon) 12:42:50

カウンタ fmax を確認しました。

信号源は、SAE-1(APB-3 RFフロントエンドアダプタ) で 出力レベルは最大設定の -1 dBm です。

SIG IN入力 は 220MHz位まで、プリスケーラ―入力は 使用している MC12080の上限1.1GHz+αの 1.4GHz 位までカウントできた結果となりました。

Re: RFC-7製作しました - パオさん URL

2025/02/24 (Mon) 13:59:18

> ji1udd 様
お昼ご飯時に検証していただき感謝です。

私も同じ 2SK2394 を使用していますが、RFC-7 でも使えることが分かって安心しました。

高機能な RFC-5 にプリスケーラ入力切替機能がついて、2桁も精度が高い RFC-7 が自宅で製作できるなんて夢のようです。
出来上がりまではもう少し掛かりそうですが、完成が楽しみです。(ちゃんと動くか心配ですが・・・)

Re: RFC-7製作しました - ji1udd

2025/02/24 (Mon) 14:33:13

StdDevの確認結果ですがおじさん工房さんの結果に対して1桁悪いことに気づかずに満足してました。0の数の見誤り(^^;

そこで試行錯誤してみたところ 先の結果では GPSDO の正弦波出力を RFC-7のREF10Mに供給していたのですが、GPSDOの矩形波出力を REF10Mに供給することで改善されました。
正弦波出力の品質が悪いのか、REF10M受けのバッファでジッタを生じ易いのかのどちらかが原因だと思うのですが、とりあえず矩形波供給すればそこそこの変動に抑えられることが分かったので良しとします(^^;

Re: RFC-7製作しました - やどさん

2025/02/24 (Mon) 17:29:21

ji1uddさん みなさん、こんにちは。

うわー、GPSDOにRFC-7に加工も測定精度も素晴らしいですね!

こちらは、アリエクに注文したOCXO周波数標準リファレンスモジュールが昨日着ました。
そこで、GPSロック式の25MHz発信器の周波数出力を測定してみました。
 →以前、SDR3のフィルター特性を改善されたJA3GSE OMのブログ記事を見て作ったもの

結果、結構変動大な結果ですが、三段に変化するようなグラフが面白いです。。汗);
精度を追求する測定にこんなバラックな環境ではダメですネ…

この10MHz標準モジュール、VCOにOSC5A2B02を使っているので、ji1uddさんのGPSDOを作ってみたくなりました。
//

Re: RFC-7製作しました ji1udd

2025/02/24 (Mon) 19:10:58

やどさん、こんばんは。

ご無沙汰してます。
GPSDO と RFC-7 基板は若干余ってますのでSASEをいただければお分けできます。もし必要であればメール下さい。

Re: RFC-7製作しました - やどさん

2025/02/24 (Mon) 21:33:56

ji1uddさん、恐れ入ります。

実は、KiCADで作らないとと思っていた処…
あと、VCOはモジュールから外して 手持ちのNEO6MとSTM32F401開発ボードを使えば、GPSDOも出来そうかな? なんて考えていました

別途メールとSASEさせて戴きます。
//

Re: RFC-7製作しました - 笛吹おじさん

2025/02/24 (Mon) 22:07:36

皆さん、今晩は。
ji1uddさん、私は何時も蛇の目ですので、いやー!すごいです。格段の出来栄えですね。


やどさん、入手されたOCXO(10MHz)は、そのまま電源を入れた場合に周波数の精度はどうですか?
調整用のVRが付いているようですが。

Re: RFC-7製作しました - やどさん

2025/02/24 (Mon) 22:45:20

笛吹おじさん こんばんは。

はい、この円安時代にもかかわらずAliで1,017円だった OCXO(恒温槽付発振器)の精度はいかに?!
がテーマだったのですが、、

先の測定グラフのとおり、上手く測れませんでした。。
ちゃんとした環境と精度良いGPSDOが必要だと教えられました。

ちなみに電源投入時は,12V/約0.5A、恒温(OCXO上部の温度約40℃)になると0.25A位でした。
グラフは、電源投入後,約30分経ってから、RFC-7のシリアル送信データをExcelでグラフにしました。
//

Re: RFC-7製作しました パオさん URL

2025/02/24 (Mon) 22:51:57

>ji1udd 様
まだ在庫がありましたら、私も GPSDO と RFC-7 基板を譲って頂けないでしょうか?

ちなみに、大変恥ずかしい質問ですが「SASE」とは何用語でしょうか?(Google で検索してもセキュリティ用語としか出てきません・・・)

Re: RFC-7製作しました - 笛吹おじさん

2025/02/24 (Mon) 23:17:11

やどさん、了解です。
いろいろ値段の異なるOCXOがでていますね。
オーブンを見ると無印の物と、仕様の一部が刻印されているものがあるようです。どう違うのかは分かりませんが。

パオさん、今晩は。
SASEはアマ無線ではQSLカード〈交信証)交換する際、返信用の切手を貼った封筒を同封して相手に送ることです。(多分)

略語は忘れました。

Re: RFC-7製作しました - やどさん

2025/02/25 (Tue) 20:57:09

OCXO(恒温槽付発振器)の精度はいかに?!(その2)

内蔵TCXOのRFC-7で、OCXOモジュールの測定を試行してました。
(TXCO周りには、シリコン塗布して変動を押さえてみた)
 あと、OCXOスペクトラムもAPB3で確認しました。goodです → 画像


結果:
 RFC-7ゲート時間1秒の測定で、 標準偏差=0.004Hz max 程度でした。
 やはりOjisankoubou測定値と比較して一桁以上悪いです。(→ Ref:内部TCXOで 0.0007Hz 程度に対して)
 グラフのように、17分間で約7ppbの変動でした…

 → RFRC-7 TCXOの変動とOCXOの変動がごちゃ混ぜなので、やっはりOCXO単体の安定特性は良くわかりません。 汗);
  でも1,017円のOCXOモジュールにしては精度が良さそう! …どうしたらこの値段で儲かるのか??


参考:
使用TCXO: SEIKO EPSON製 TG-5021CE-10N
 周波数電源電圧特性 fo-VCC  ±0.2 × 10-6 Max.
 周波数経時変化 f_age    ±1.0 × 10-6 Max.

使用OCXO: CTI製 OSC5A2B02 (ネットで拾った値で正しいのか不明)
 電源安定度 ≦ ±2ppb (Vsup ±5%)
 温度安定度 ≦ ±10ppb (25℃ 50-25℃)
 Aging  ≦ ±0.5ppb/day
 Short time stsbility:≦5min(≦±100ppb)
//

Re: RFC-7製作しました - 笛吹おじさん

2025/02/25 (Tue) 22:16:13

やどさん、今晩は。
OCXOの測定データ有難うございました。
大体の所は分かりました。

このオーブンの分解動画を見ました。HCU8型のXtalをTO220タイプのTRのコレクタに貼り付けてオーブンにしています。
Xtalの発振周波数は三次曲線特性を持っている様で
温度を変化させ周波数が低い方から高い方へ変化する時にある温度で発振周波数が一定になる部分があり、その温度になる様にオーブンの温度を設定すようです。

以前、3MHzのオーブンをばらした時にXtalに76℃と表示されていました。


10MHzのOCXOをカウンタの外部基準に入れてGPSの10KHzを測定信号入力に入れて10KHzのなる様にOCXOの周波数調整VRを回せば校正出来るのではと思います。
ふだん使うのであれば10MHzのTCXOでも十分かと思います。

Re: RFC-7製作しました パオさん URL

2025/02/25 (Tue) 22:18:17

>ji1udd 様
GPSDO と RFC-7 基板ではお世話になります。
よろしくお願いいたします。

>笛吹おじさん
SASE の件、ありがとうございます。
「SASE 返信用封筒」で検索したら"Self Addressed Stamped Envelope"と分かりました。(こんなことも知らずにスミマセン)

>やどさん
OCXO モジュールの安定度、すごく良さそうですね。
ネット情報では、このモジュールは中国の基地局の旧型器材の処分品だとか・・・
だとすると、昔のアメリカの基地局祭を思い出しますね。

Re: RFC-7製作しました - Ojisankoubou

2025/02/26 (Wed) 08:54:34

>やどさん

周波数変動のグラフを見ると 10数秒ごとに何かノイズが入っているようです。
右側のスペクトラムを見るとノイズフロアーが高いようです。

まずは OCXO の電源あたりを見てみるとよいのでは。

Re: RFC-7製作しました - Ojisankoubou

2025/02/26 (Wed) 14:04:30

>ji1udd さん

>正弦波出力の品質が悪いのか、REF10M受けのバッファでジッタを生じ易いのかのどちらかが原因だと思うのです

10MHz 正弦波だと 1V/50ns ぐらいの立ち上がりになりますが、50ps 以下のジッターにするには、信号のノイズとスレッショルド電圧は 1mV 以下が必要になります。 Ref を正弦波にするのはスプリアスが少ないメリットはありますが、ジッター的には良くないです。

Re: RFC-7製作しました - ji1udd

2025/02/26 (Wed) 20:40:08

Ojisankoubouさん、定量的な解説ありがとうございました。
高性能を実現するには何かとシビアですね。

今回 RFC-7を製作してみて GPSDOをダブルオーブン化したくなる気持ちが理解できました。あと振動対策も必要な感じですね。(^^)

Re: RFC-7製作しました - 笛吹おじさん

2025/02/26 (Wed) 21:56:37

皆さん、今晩は。
古い話で恐縮ですが、私が以前使っていた3MHzのOCXOはは大きさが40mmx40mmx100mm位の長方形の金属箱に入っていました。
その金属箱の中にXtalと発振回路基板が更に小さな金属箱(オーブン)に入れられていました。その小さな金属箱の外側に熱源のヒータ巻き線が巻かれています。
このオーブンはポリスチロール系の断熱材で包んで大きな金属ボックスに収納されてます。
電源電圧は24VDCを加えていました。
周波数調整はcourceとfine、2か所ありました。

中国製のOCXOは5V駆動でオーブン其のもは裸の状態です。
何らかの断熱材で包むようにした方がいいのではないかと思います。

以前携帯の基地局で使われていたルビジウム発振器を入しましたが、中古のせいかロックしなくなりNGです。
この発振器はかなり発熱します。

Re: RFC-7製作しました - やどさん

2025/02/26 (Wed) 22:37:59

こんばんは。

Ojisankoubou様 笛吹おじさん パオさん
アドバイスや情報ありがとうございます。

いやいや、電源変動やノイズがないか?GNDはOKか?って、一丁目一番地でした。汗);
取り急ぎ、
Li+バッテリーで動作させてデータを取り直してみました。OCXO間のGNDも見直しました。

結果、
スペクトラムのノイズフロア改善し、OCXO10MHzの15分間の安定度も3ppb程度まで向上しました。→画像
もっとも、未だ変動グラフにはピンピンノイズが乗っています、何だろう??
まずは 現在バラック状態のRFC-7を見直そうかと思います。

なお、OCXO.10MHzの校正は、
OCXOをRFC-7外部Refにして、NEO-6M GPSの1PPS信号(10kHz設定)を測定し、10000.00000Hzになるように調整しました。→ 笛吹おじさん Tnx!
//

STM32F303K8T6でLチカ - 笛吹おじさん

2025/02/06 (Thu) 20:10:32

今晩は。
どうでもいい様な話題で恐縮です。
別の目的が有って秋月から掲題のマイコンボードを入手しました。
最初、Arduino IDEでプログラムを書き、コンパイルはパスしましたが、STLINKで書き込んでみても全く変化がありません。PB3につないだLEDを点滅させるLチカです。

次にST32CUBE-IDEを入れてみましたが、使い方が分からず頓挫。
続いてSTM32Cube-MXを入れました。これは何とかMakeが出来実行ファイルの書き込みも出来ました。
でもPB3のLEDは全く動作しません。
ネットをあさって次の様なプログラムを作りPB3がやっと動作しました。

/*STM32F303k8t6 LED ON/OFF TEST 2025/2/6 */

#include "stm32f3xx.h"

int main(void) {

RCC->AHBENR |= (1 << 18); //ポートB有効

GPIOB->MODER |= (1 << 6); //PB3 出力

GPIOB->MODER &= (~(1 << 7));

GPIOB->OSPEEDR = 0; //全てロースピード

while (1) {
GPIOB->ODR ^= (1 << 3); //PB3 ON
for (volatile int i = 0; i <= 500000; i++) {
}

// GPIOB->ODR &= (~(1 << 3)); //PB3 OFF
// for (volatile int i = 0; i <= 200000; i++) {
// }
}
}

STM32Cube-MXはコードをgenerateしてはくれるのですが何かが足りないようです。
Arduino-IDEでプログラムが作れればいいのですが、STM32とは相性が悪いのかうまく行きません。

STM32は難しくて手に負えませんね。

やどさん、パオさんこの辺おやりでしたら、教えてください。

Re: STM32F303K8T6でLチカ - パオさん URL

2025/02/07 (Fri) 10:26:58

>笛吹おじさん
「F303」と「F103」でシリーズが異なるので参考になるか分かりませんが、STM32F103 を Arduino IDE で動作させた記事です。
https://me-yoh.com/make_frequency_counter_1

私のところでは、この MCU でブートローダを書き込んで USB からスケッチを書き込むと動作しなかったので、シリアル変換器から毎回書き込みました。

その際には、ボード上のスイッチ切り替えが面倒でした。

Re: STM32F303K8T6でLチカ - 笛吹おじさん

2025/02/07 (Fri) 18:03:46

パオさん、今晩は。
記事のご紹介有難うございました。
参考にさせていただきます。
STM32は手軽に扱えるCPUではありませんね。
Arduino-IEDはプログラム比較的簡単?にかけるのですが、やはりC言語のスキルが要求されます。
ハードルが高くて、、、、m(_ _)m

Re: STM32F303K8T6でLチカ - やどさん

2025/02/09 (Sun) 22:57:30

笛吹おじさん こんばんは。

STM32CubeIDE1.17で「Lチカ」トライしてみました。
以前 TT@北海道さんの「オール・ソフトウェア無線」の記事を見てST-LINK V2の代わりにNucleo(STM32F030R8)ボードを購入したのが初めで、SDR-3でも使ったSTM32マイコンなのに、Lチカすら試行した事が無かった。汗);

結果、
 土日かかってやっとチカチカしました~ オィオィ;汗);

・使用ボードはAliで買ったSTM32F401CCU6開発ボード、念のためにNucleo-F030R8ボードも。 → 画像
・ST-Link v2をマイコンボードに接続しておく事で、STM32CubeIDEのみで開発から書込み・デバッグまで行えます。
・NRSTやBOOT0端子を操作してブートローダを起動する必要が無いので一番簡単に書込みまで行うことができそうです。


参照した記事(URL)と、躓いた処を記しておきます。
 何が悪かったのか?不明確なぶぶんもあるので参考にならないかもしれませんが…

・STM32CubeIDEを使ってLチカをするまでの解説ビデオ (Nucleo-F303K8ボード)
 https://youtu.be/hNdIBFCl92w?si=FnGsF3UjlndfsOTa

・How To STM32CubeIDE Lチカ編
 https://qiita.com/usashirou/items/65be086c28f7a6feac7d


・STM32CubeIDEダウンロードにmySTログイン(ID登録)必要
 STM32CubeIDEインストール後に使用するマイコンのパッケージ(?)をダウンロードする時にも必要

・使用するボードの回路図に合わせてピン設定する、GUIでクロックピン設定、LED出力ピンの設定
 project名.iocの画面で、Pinout&Configurationタブを選択  → 画像1

 RCC: HSEは "Crystal/Ceramic Resonator"を選択した ← 開発ボードは、X'tal OSC 25MHzのため
    確認認のため、"Master Clock Output1"にチェックを入れておいた
 SYS: Debugは "Serial Wire"を選択した
 GPIO: PC13をクリックして "GPIO_Output"を選択した ← 開発ボードのLED出力端子
    PA0をクリックして "GPIO_input"を選択した、Pull-upを選択 ← 開発ボードのKEY入力端子

・クロック設定
 Clock Configurationタブを選択して → 画像2

 HSE input freq. に25MHzを設定、System Clock MUXで適当に選択
 HCLK(MHz)のBoxに適当に50MHzと入れリターンするとPLL逓倍/分周比など自動的に設定してくれた

・ここまででproject名.iocをSAVEすると、プログラムコードを生成してくれる。
 生成された main.cの while(1)ループ内に Lチカ記述を追加するが、
 ここでポート名とピン番号を、ピン設定で付けた名前に合わせた。
 PortCの13pin →  LED_GPIO_Port、LED_Pin

で、
いよいよコンパイル?(ビルドって云うのか、)して、エラー無くコンパイルできたのですが、、、
続いて書込みで、何故かマイコンに接続できず、書き込みタイムアウト!!になってしまいました。
 なんで?? (土曜日夜)

比較確認のため素性の正しい Nucleo-F030R8ボード(ST-Link v2 オンボード)で試してみるとやはり接続できず!!
 何故?? 原因分からず寝ました。

翌日曜、
 一旦、STM32CubeProgrammerを使って書込みしてみたら、チャンと書き込めました。LEDチカチカします!
 気を取り直して、、STM32CubeIDEで コンパイルからやり直してみたところ、何も問題なく書込みまで終了してLEDチカチカです!
 何だったんだろう?? 
 → STM32CubeIDEインストールから一気に試行したのが敗因?、再起動が必要だったのかもしれません?

まぁ、新しいツールの使い始めなので、こんなものでしょうか… 汗);

Re: STM32F303K8T6でLチカ - やどさん

2025/02/09 (Sun) 22:58:18

画像2

Re: STM32F303K8T6でLチカ - 笛吹おじさん

2025/02/10 (Mon) 00:17:48

やどさん、今晩は。
やどさん、投稿もなく静かでしたので、インフルにでも罹ってしまったのかなと気になって居ましたよ。
やーごそごそやっていたのですね。
内容が濃いので明日(もう明日になって居ますが9じっくり読ませていただきます。

お疲れさんでした。

Re: STM32F303K8T6でLチカ - 笛吹おじさん

2025/02/10 (Mon) 09:35:55

お早うございます。
私はSTM32Cube-MXでSTM32F303K8T6のLチカをやってみました。
試行錯誤の結果、何とか基本コードのジェネレートが出来、そこにLED ON OFFのルーティンを追加してコンパイル、ST-LINKで書き込み目出度くチカチカしました。

STM32は奥が深いので、そんなに複雑なものは私には無理です。(Lチカ止まり、、、かな?)
STM32Cube-IDEでもやってみます。

以下の話題はこの掲示板には関係ないかもですね。

STM32F103C8T6も入手しましたのでこちらはARDUINO-IDEでLチカをやってみました。
USBシリアル変換器をつないで、BOOT0を1にセット。書き込み後は0に戻します。
Maple Coreのファームを書き込みます。
次にオンボードUSBにPCをつないでデバイスマネジャーで見るとport番号が表示されてます。
後はArduinoで書き込みをするとLチカができます。
ただ問題があります。と言うのは、もう一度書き込みをすると先ほど書き込んだMaple CoreBoot Loaderは消えてしまい書き込みはできません。
これは当たり前なのでしょうかね。
Arduino用のbootloaderはFlashの先頭に書き込まれるようですので新しい階込みでは着えてしまいますよね。その都度、bootloaderを書きこまなければならないのであればST-Linkで書き込む方が便利ではないかと、、、、
プログラムがArduino環境で書けますので幾分楽にはなりますが。

端折りましたので詳細は書きURLが参考になります。

http://nopnop2002.starfree.jp/STM32F103/SMT32F103-1.html

https://www.toolsbox.biz/nonsense/STM32F103/STM32F103C8T6.html


Re: STM32F303K8T6でLチカ - 笛吹おじさん

2025/02/10 (Mon) 15:58:25

今日は。
STM32Cube-IDEでやってみました。
スイスイとは行きませんが何とかLチカができました。
しかし、実際にこのCubeーIDEで複雑なプログラムを造るのは大変ではないかと思います。
C言語を自在に操れるようになりたいですが、ちょっと遅かったですね。

RFC-7早くケースに入れたいのですが、アルミ板に孔を開けるのが億劫で、、、進んでいません。

追記:
STM32CubeーProgrammerを使わなくてもファームの書き込みも出来るのですね。

Re: STM32F303K8T6でLチカ パオさん URL

2025/02/15 (Sat) 12:40:43

>笛吹おじさん
Cube-IDE で L チカの成功、おめでとうございます。
これで世界が広がりましたね。
(私は、まだまだ Cube-Programmer で書き込むのがやっとです。)

STM32 で Arduino IDE ブートローダの件も参考になりました。
(ATmega328P は後ろにブートローダを書き込むのですが・・・)

>やどさん
お久しぶりです。お元気そうで良かったです。
TT@北海道さんのサイトは、良く拝見しています。

やどさんも CubeIDE を使って L チカを成功されているのですね。
いつ見ても、細かな解説で参考になります。

皆様、すでに新型の RFC-7 を活用されているようですね。
私も早く追いつきたいのですが、色々と立て込んでいて来週以降かなぁ・・・

RFC-7 LED-D1 - 笛吹おじさん

2025/02/01 (Sat) 12:58:19

今日は。
RFC-7のLED(D1)はどんな時に点灯するのでしょうか?
ケースに入れた場合、表示名は?

D2はプリスケーラー使用時に点灯、D3は電源オンで点灯するので名称は分かるのですが。

プログラムをみれば分かるのでしょうが、、、よろしくお願い致します。

Re: RFC-7 LED-D1 パオさん URL

2025/02/01 (Sat) 19:06:11

>笛吹おじさん
先日は大変お世話になりました。

間違っているかもしれませんが、「board.h」の74行目で「LED1(Heart Beat)」と書かれています。
名前からすると正常動作時に点滅する(?)のでしょうか。

また、123行目には「PB7 Heartbeat/Error LED」と書かれています。
という事はエラー時には点灯する?

Re: RFC-7 LED-D1 - 笛吹おじさん

2025/02/01 (Sat) 19:33:51

パオさん今晩は。
どうもアドバイス有難うございます。
私も一応プログラムは見ました、Heart Beatという文字は見つけました。(見つけただけですが)
実際の様子は電源を入れると点灯して何か入力に信号を入れると消灯して、入力をオフにしても消灯のままですね。

Heart Beatですから装置間でお互いに生きているのを
確認するための信号だと思います。(RFC-7ではIC間の確認に使っているのでしょう)

D2はプリスケーラ使用時に点灯すると思うのですが、
ずっと灯きっぱなしです。配線間違えたかもですね。

Re: RFC-7 LED-D1 - 笛吹おじさん

2025/02/01 (Sat) 23:13:38

今晩は。
D2はA-INPUT(普通入力時)に点灯してプリスケーラー使用時は消灯します。(配線が外れていました)

回路図のプリスケーラICの2pinのR54にLEDを付ければプリスケーラ使用時に点灯します。

Re: RFC-7 LED-D1 - Ojisankoubou

2025/02/02 (Sun) 07:21:35

LPTIM の出力が L→H になるとき OS の TASK が動作しているとジッターになるため TASK を細かく分けて時間調整しています。 D1 はその確認用で、TIM2 Capture 割り込みがかかった時に OS が Sleep になっていないと灯くようになっています。
通常動作時に灯くことはないです。

Re: RFC-7 LED-D1 - 笛吹おじさん

2025/02/02 (Sun) 08:24:29

おはようございます。
早速の御回答有難うございます。

>通常動作時に灯くことはないです。
電源を入れると普通は動作状態にあると思われます。
この時に点灯することはないということですね。
プログラムで確認します。

Re: RFC-7 LED-D1 - 笛吹おじさん

2025/02/02 (Sun) 12:20:15

今日は。
プログラムを見て見ました。
board.cの LED 用 GPIO ポート初期化関数を見ると
下記の様になっています。
LED1_ON();
LED 用 GPIO ポート初期化のあとプログラムがどう動くかは未確認ですが点灯すようになっているのではと思います。
此処にLED1_OFF();にすると消灯します。
ただ、CPUがSLEEPしたと時に点灯しないとまずいですが。


//───────────────────────────────────
// LED 用 GPIO ポート初期化
//───────────────────────────────────
static void led_port_init( void ) {
stm32_gpio_mode( LED1_PORT, LED1_PIN, GPIO_MODE_OUT );
// stm32_gpio_mode( LED2_PORT, LED2_PIN, GPIO_MODE_OUT );
// stm32_gpio_mode( LED3_PORT, LED3_PIN, GPIO_MODE_OUT );
// stm32_gpio_mode( LED4_PORT, LED4_PIN, GPIO_MODE_OUT );
// LED1_ON(); <ーーーココ!です
LED1_OFF();
// LED2_ON();
// LED3_ON();
// LED4_ON();
}

追記:
動作時の定義によりこの辺は変わってくると考えます。

Re: RFC-7 LED-D1 - 笛吹おじさん

2025/02/02 (Sun) 15:35:45

再び今日は。今日は雪の予報でしたが小雨、寒いです。
さて、RFC-7をケースに入れる前提での話ですがD1の仮名称を[Fail]か[Fault]にしようと考えて居ます。
電源ONでD1点灯はちょっと??ですので1~1.5秒位点灯させその後消灯させればいいかなと。
dly_tsk()を使えば行けるのではとやってみましたが
(コンパイルエラーにはなりませんが)そうは簡単には行きません。

LED1_ON(); 
  dly_tsk(10000); 
LED1_OFF();

dly_tskは dly_tsk(xxxx(1000)); xxxx関数が必要なのかも知れませんね。

追記:下記を追加でLED D1 1sec ON ーー>OFF 出来ました。


LED1_ON();
delay_ms(1000);
LED1_OFF(); 

ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん

2024/12/10 (Tue) 08:41:10

皆様、お早うございます。
スレッドが長くなりましたので新しく(2)にしました。

やどさん、コンパイルは通りましたが表示は出ませんね。もう少し考えることにします。でも難しいです。
(今どきの若い人の言葉ではムズイです)

Re: ACM1602NI-FLW-FBW-M01(2) パオさん URL

2024/12/10 (Tue) 09:51:40

>笛吹おじさん
昨晩、私も色々と試してみましたが、今のところ ST7032 LCD には表示させることが出来ていません。

>やどさん
なんだか指摘したみたいになってスミマセン(文書で表現するのは難しいですね。)

出来ましたら、ハードの不良と切り分けたいので、表示に成功した「main.hex」と、変更した「lcdc16xn_i2c.c」をメール先へお送りいただけないでしょうか?

Re: ACM1602NI-FLW-FBW-M01(2) - やどさん

2024/12/10 (Tue) 13:04:16

こんにちは。

パオさん

hexを下記に置きました。
https://drive.google.com/drive/folders/1riC0zhOjh7L3jIOKZVYTP_VtJSxp-a_b
のRFC_5_ST7032表示するもNG.zipです

昨晩、AQM1602XA(画像添付)をぶんきゅうさんのエレキーヤーで使っていた事に気が付いて、16文字表示できましたが、まだ変です。。汗);;


笛吹おじさん

PulsViewソフトでI2C解読させて、I解読した表示の上で、右クリックすると、Export All annotationsでき、テキストファイルに落とせました。
これで解析がとても楽になりました。

SDAの立下りにトリガかけて、RUNした後に電源ONすると、最初からのI2C波形が得られます。

こんな感じでテキストができました。
481852-481944 I2C: Address/Data: Address write: 3E
481836-481836 I2C: Address/Data: Start
481944-481958 I2C: Address/Data: Write
481956-481970 I2C: Address/Data: ACK
481973-482079 I2C: Address/Data: Data write: 00
482079-482092 I2C: Address/Data: ACK
482096-482201 I2C: Address/Data: Data write: 38
482200-482213 I2C: Address/Data: ACK
482222-482222 I2C: Address/Data: Stop
562363-562363 I2C: Address/Data: Start
562379-562471 I2C: Address/Data: Address write: 3E
562471-562485 I2C: Address/Data: Write
562483-562497 I2C: Address/Data: ACK
562500-562606 I2C: Address/Data: Data write: 00
562606-562619 I2C: Address/Data: ACK
562623-562728 I2C: Address/Data: Data write: 38
562728-562741 I2C: Address/Data: ACK
562749-562749 I2C: Address/Data: Stop
642881-642881 I2C: Address/Data: Start
642897-642989 I2C: Address/Data: Address write: 3E
642989-643003 I2C: Address/Data: Write
643001-643015 I2C: Address/Data: ACK
643018-643124 I2C: Address/Data: Data write: 00
643124-643137 I2C: Address/Data: ACK
643141-643246 I2C: Address/Data: Data write: 39
643245-643258 I2C: Address/Data: ACK
643266-643266 I2C: Address/Data: Stop
723413-723413 I2C: Address/Data: Start
723428-723520 I2C: Address/Data: Address write: 3E
723520-723533 I2C: Address/Data: Write
723533-723546 I2C: Address/Data: ACK
723549-723656 I2C: Address/Data: Data write: 00
723655-723668 I2C: Address/Data: ACK
723673-723778 I2C: Address/Data: Data write: 14
723778-723791 I2C: Address/Data: ACK
723799-723799 I2C: Address/Data: Stop
: :
1128212-1128304 I2C: Address/Data: Address write: 3E
1128304-1128317 I2C: Address/Data: Write
1128317-1128330 I2C: Address/Data: ACK
1128333-1128441 I2C: Address/Data: Data write: 40
1128439-1128453 I2C: Address/Data: ACK
1128456-1128564 I2C: Address/Data: Data write: 20
1128562-1128576 I2C: Address/Data: ACK
1128583-1128583 I2C: Address/Data: Stop
1128611-1128611 I2C: Address/Data: Start
1128627-1128719 I2C: Address/Data: Address write: 3E
1128719-1128732 I2C: Address/Data: Write
1128731-1128744 I2C: Address/Data: ACK
1128748-1128856 I2C: Address/Data: Data write: 40
1128854-1128868 I2C: Address/Data: ACK
1128871-1128977 I2C: Address/Data: Data write: 20
1128977-1128990 I2C: Address/Data: ACK
1128998-1128998 I2C: Address/Data: Stop
//

Re: ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん

2024/12/10 (Tue) 14:43:29

皆さん、今日は。
今日も良いお天気です。
私のlcdは違うタイプですので動かないのは当たり前ですね。
やどさん、PulsViewソフトの使い方のご紹介ありがとございます。
別の話しです、私の古い愛機TS850が壊れてしまいました。
7MHzで和文CWを毎朝聞いて忘れないようにしていたのですが、、、。
やどさんもCWやるのですね。
私のPulsViewはHEX用事が出ないのです。何か足りないのかな、、、?


パオさん、やどさんと同じタイプのLCDですので多分表示が出のではと思います。

Re: ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん

2024/12/10 (Tue) 17:10:12

今晩は。
少し進歩しましたかね。
取り敢えずカーソルの点滅とSW1,2を同時押ししたときに「DEFAULT SETTING」と表示されるはずなのですが「M]と表示されています。

ADRS+00+comand,ADRS+80+data が出る様に変更を加え、何らかの反応は得られるようにはなったのですが
ACM1602NIに合う様にまだかなり変更を加えないといけないようです。

Re: ACM1602NI-FLW-FBW-M01(2) - やどさん

2024/12/10 (Tue) 20:05:27

笛吹おじさん こんばんは

表示し始めましたね!
> PulsViewはHEXが出ない…

こちらは下記をインストールしました。
 https://sigrok.org/wiki/Downloads
 Release builds:
 WindowのPulseView 0.4.2 (64bit)

あと、昨晩チェックしていて下記修正の修正しました。

< lcdc16xn_i2c.c >

#define I2C_LCD_RS0 0x01 // C0,RS=00 for st7032 追加   ← 前回追加した行の 0x01を 0x00する


int i2c_tx_str( char *txstr ) {  ← この関数内の、
   :
// while( *txstr ) { ← while文をコメントアウトして
for( int n=0; n<2; n++ ) { ← この for文に変更する

}
   :
}

これは、
文字列をI2Cで送る場合、データの終わりを示すため最後に'00'が置かれています。が、、

PCF8574だと、データ4ビット+BL,WR,RS,ENビットで送るため、8bit全体で'00'になることはないのですが、

ST7032系では付加ビットが要らないため、RS=0コントロールバイトやCGRAMデータで'00'になる場合があり、それ以降のデータが無いものと判定されて送信されません。

前回、RS=0は'01’としてお茶を濁したのですが、、
CGRAMデータで'00'があったのと、コントロールバイトは'00'を送るようにすべき(?)で、上記の様に修正してみました。


パオさんへ

よく考えたら、同じST7032のLCDなら表示するはずですね。。
i2c_250khz.c
 static void i2c_stop( void ) 関数の最後の行の
  I2C_SCL_L(); 行をコメントアウトしましたか?

///

Re: ACM1602NI-FLW-FBW-M01(2) パオさん URL

2024/12/10 (Tue) 21:45:14

>笛吹おじさん
とうとう液晶画面に表示が出たのですね。
おめでとうございます。

>やどさん
データありがとうございます。
早速書き込んでみましたが表示が出ません(悲)
AQM0802 と AQM1602A で試してみましたがダメですねぇ。(配線を何度も確認したり、プルアップしたり色々と条件を変えたのですが・・・)

ハード的な何か勘違いをしている可能性が高いので、少し頭を冷やして考えます。

Re: ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん

2024/12/10 (Tue) 23:24:06

今晩は。
パオさん、まだ先は長そうです。
A00001-5ms-A00038-5ms-A0000F-5ms-A00006とSDAがでるはずなのですが、そうはいきません。
A00001-10ms-A00038A0000FA00006となって居ます。
この後A080Dataにする必要が在ります。
ロジアナではA080dataになって居る様な気もしますが、、、

ロジアナ、やどさんの様には動いてくれません。

Re: ACM1602NI-FLW-FBW-M01(2) - やどさん

2024/12/11 (Wed) 07:22:03

笛吹おじさん おはようございます。

コマンドの3バイトは正しく送信されているようですね!

> A00001-10ms-A00038A0000FA00006

の原因ですが、ディレイがdelay_msec()でなくて delay_usec()になっているとか?

こんな感じになるでしょうか、、
//───────────────────────────────────
// LCD初期化 for ACM1602NI-FLW-FBW-M01
//───────────────────────────────────
void lcdc_init2( void ) {
i2c_init();

delay_msec( 20 ); // 電源投入後 15ms 以上待つ
lcdc_cmdwrite4( 0x01 );
delay_msec( 5 ); // 4.1ms 以上待つ

lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示
delay_msec( 5 );
lcdc_cmdwrite8( 0x0C ); // 表示 ON
delay_msec( 5 );
lcdc_cmdwrite8( 0x06 ); // increment, no shift
delay_msec( 5 );

lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示
lcdc_cmdwrite8( 0x0C ); // 表示 ON
lcdc_cmdwrite8( 0x06 ); // increment, no shift

lcdc_cls(); // ディスプレークリア
}


>ロジアナ、、、

1000円ロジアナと PulseViewでI2Cデコードした時の手順を画像に添付します。
この表示にすると、すごく便利です。
//

Re: ACM1602NI-FLW-FBW-M01(2) - やどさん

2024/12/11 (Wed) 07:28:29

続きです…


周波数表示が出なかった!?件、
自分の間違いで、問題ありませんでした。 画像添付

→ ℃やHzなどを表示させたソースを元に変更したのが敗因でした。。やれやれ…  汗);;

昨晩、Ojisankoubouソースをから修正したら、問題なく周波数カウント値も表示してます。そうだよねぇぇ。。

https://ojisankoubou.web.fc2.com/rfc/rfc-5/index.html のソースファイル( + 実行ファイル )PG追加 20220912 版から修正.



秋月・ AE-AQM1602AとAE-AQM0802でLCD表示する事を確認した修正ソース(変更したファイルのみ)とHexファイルを下記に置きました。

https://drive.google.com/drive/folders/1riC0zhOjh7L3jIOKZVYTP_VtJSxp-a_b
rfc-5_20220912_rev for I2C-LCD.zip
//


*追記
board.hは、STM32G030F6P6(TSSOP20)用なので変更不要です。
→ SDA端子をPA11に変更しています。

Re: ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん

2024/12/11 (Wed) 09:39:26

お早うございます。
やどさん、ご丁寧なロジアナの説明有難うございます。
HEXとテキスト表示が出来ました。
初期化の部分はご指摘の様にusecになって居ました。

改めて波形を見ますと一番最初はADRS=A0になって居ますがACKが返っていません。
其の後はADRSが34になって居ますので、プろグラムを見直す必要がでてきました。
ロジアナの設定がおかしかったのか、ADRSはチャント出ているものとばっかり思っていましたが、、、まったくNGでした。

もう一度やり直しです。

Re: ACM1602NI-FLW-FBW-M01(2) パオさん URL

2025/01/23 (Thu) 15:30:02

>Ojisankoubou 様、やどさん
すでに RFC-7 の製作が進んでいるところ、昔の話題ですみません。

RFC-5 で ST7032 等の LCD を直結する方法が掲示板の中に埋もれてしまい探すのが大変になってきたので、ブログにまとめ記事を書きたいと思っています。(探すのがヘタなのは私だけ?)

そこで、
改造版のバイナリファイルと改造版の LCD 設定ファイルを配布してもよろしいでしょうか?

Re: ACM1602NI-FLW-FBW-M01(2) - Ojisankoubou

2025/01/24 (Fri) 07:30:43


>改造版のバイナリファイルと改造版の LCD 設定ファイルを配布してもよろしいでしょうか?

転載元、著作権を明記していただければバイナリーの配布は問題ありません。

Re: ACM1602NI-FLW-FBW-M01(2) - やどさん

2025/01/25 (Sat) 12:17:29

パオさん Ojisankoubou様 こんにちは。

以前、ST7032の液晶表示器用に修正したファイルをGoogle共有ドライブに置きましたが、

[バイナリーの配布は問題ない」との事から、修正したソースコードは変更差分ファイルのみのdiffファイルに置き替えました。
バイナリー(hex)ファイルはそのままです。

誰かのお役に立てば幸いです。
自己責任でお願いしますね、、汗);
//

Re: ACM1602NI-FLW-FBW-M01(2) パオさん URL

2025/01/25 (Sat) 19:59:09

>Ojisankoubou 様、やどさん
RFC-5 変更ファイルの公開許可を頂きありがとうございます。

先ほど、ブログに I2C LCD を直結する方法をまとめてブログの記事を公開させて頂きました。

また、転載元とオリジナルについては記載しましたが、変更部分が分かるように変更したソースコードも落とせるようにしています。
記載内容について、問題がありましたらお知らせください。

https://me-yoh.com/frequency_counter_lcd_-replacement2

ロジックアナライザ - 笛吹おじさん

2024/12/16 (Mon) 08:18:03

お早うございます。
今回のLCD表示ではロジアナが大いに役に立ちました。

下記URLにあるロジアナも(64bit版)ですが使える様です。
https://www.saleae.com/ja/pages/downloads


Re: ロジックアナライザ - やどさん

2024/12/17 (Tue) 23:28:55

笛吹おじさん 皆様、こんばんは。

ダウンロードしてみました。
少ししか弄っていませんが、上質な感じですね。無料でいいのかな、、

SSD1306なOLED表示にはロジアナを活用しようと企んでいます。
データシートはみつけたのですが、、初期化コマンドどうしたらいいの??状態で、汗);;
⇒ https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf

思いついたのが、Arduinoマイコンで文字を表示するだけのプログラム作って、I2Cシーケンスをロジアナで拾う方法です。
拾ったシーケンスをそのままlcdc_init()に記述してしまえば、RFC-5でも確実に表示するはず。。 言うは易し…

ただ、0.91インチOLED表示は128x64ドットなので、16文字2行表示するには、8x16な数字と●、*、?、sのフォントを作らないといけないかな??
//

Re: ロジックアナライザ - 笛吹おじさん

2024/12/18 (Wed) 00:45:59

やどさん、今晩は。
ロジアナ使えて良かったです。
SSD1306はarduinoで表示させています。
rfc-5でOLED表示も出来たら面白いですね。
RFC-5にもOLED用のフォルダーがありますね。
出来たら発表してください。

Re: ロジックアナライザ パオさん URL

2024/12/18 (Wed) 23:10:24

>やどさん
次は SSD1306 ですか!
視認性の良い OLED でも動作することを期待しています。

RFC-5 を組み立てる前に siliconvalley4066 さんの周波数カウンタを試したことが有ります。

https://ss1.xrea.com/harahore.g2.xrea.com/STM32/stm32f103c8t6_counter.html

こちらは Arduino IDE で開発されている周波数カウンタですが、同じ MCU なので多少は参考になるかもしれません。

Re: ロジックアナライザ パオさん URL

2024/12/19 (Thu) 12:29:40

>やどさん
自分でブログに記事を書いていながら忘れていましたが、Arduino で照度計を作った時に横長の SSD1306 を使って表示に苦労しました。
https://me-yoh.com/remaking_light_meter1

その際には、このライブラリと
https://github.com/datacute/Tiny4kOLED

見た目を良くするために、このフォントセット内の
https://github.com/datacute/TinyOLED-Fonts
大き目フォントを使いました。

このフォントセット内には、お目当ての「8x16フォント」もありました。
お役に立てば良いのですが。

Re: ロジックアナライザ - やどさん

2024/12/19 (Thu) 21:48:46

笛吹おじさん、こんばんは

格安USBロジアナで 起動がおかしくなった8ビットパソコンの動作解析(と言うほど高尚な事はできず)をしてます。
ちょっと8chでは足りず、格安ロジアナ2個で16ch観測できないのかな…

都立多摩図書館で40年前のパソコン雑誌に掲載されたFM-7回路図の複写サービスをしてもらって喜んでいたのですが、、
ぜんぜん泥沼から抜け出せそうもありません。。 なんでだろぅぅ、、と毎夜ため息ばかり… 汗);;


簡易SGのケーシング写真、レタリングが美しいですね!
自分の場合は
、かなり気を遣って穴あけ加工しているつもりですが、大抵ズレるんです。。
金属加工は薄いアルミ板以外やりたくないですし。。

格安PCB製造だけでなくて格安実装や格安なケース加工サービスも始まらないかな…


話は違いますが、SG写真を見て… 
 だいぶ前ですが430で、F2なCQが聞こえたことが有って、コールがBTBだった記憶がよみがえりました。
 もしかして笛吹おじさんだったのかな?なんて…

//

Re: ロジックアナライザ - やどさん

2024/12/19 (Thu) 23:06:45

連続投稿失礼いたします。

パオさん 笛吹おじさん、こんばんは!

>siliconvalley4066 さんの周波数カウンタを試した…

おおっっ!、リンク先見ました。
 siliconvalley4066 さん すごいです!
 フォントセットの情報もありがとうございます。

最新の記事では、STM32Fマイコン+OLED表示モジュールで、レシプロカル式周波数カウンタを実現されていますね!

しかも、回路方式というか16bitタイマー3つで前回キャプチャー値との差から周波数を計算する、改善検討された説明文を見ていると、RFC-5と似てるっぽい!!
測定精度もRFC-5がシステムクロック130MHzに対して72MHzなのでその分落ちますが、ゲート1秒なら13ppbと申し分ありませんね!

凄いです、自分にはこのような回路方式の改善など到底真似出来ません。汗);

しかもArduinoIDEでプログラムカスタマイズできますし、Am/FMラジオの周波数直読化に利用したい自分にはもってこいです。
もう、siliconvalley4066さんの周波数カウンタ試行するしかないです! って、すぐ楽な方に流されます、、汗);

ちょっとだけ調べたら、

STM32F103C8T6には LPTIMが無いので、Ojisankoubouのfreqcounterコードを当てはめるのは難しそうです。

でも、オリジナルSTM32F103を、stm32g031f6p6ミニボードに変更する修正なら簡単そうです? ←「言うは易く…」

パオさんブログの「周波数カウンタを作る1」を見て、ArduinoIDE設定して試してみようかと思います。Tnx!
//

Re: ロジックアナライザ - 笛吹おじさん

2024/12/20 (Fri) 00:23:16

やどさん、今晩は。
F2のCWは私です。430MHZはFT-70DでA1は出せません。
そこでF2ーCWを出したのです。でも応答してもらえたのは1局、八王子の局でした。
何日かCQを出していたのですが、「BTB,うるさい」と言われてしまい、それ以来出していません。
やどさんのQTHは意外と近いのかもですね。

ところで、RFC-5のプログラムはPLUS-Gen.タイプをお使いですかそれともPGナシのほうですか?

今のケースは小さいのでPGーOUTほなしで行こうと20220906をコンパイルして書き込んだのですが、
表示がでないのです。
修正はOKなはずですが、、、。

パオさん。
3Dプリンターでケース作り、いやー進んでいますね。
好きな形のケースが作れるのでいいですね。
やってみたいですが、この歳では過剰設備投資になりそうです(笑い)

追記:
上手く行きました。

Re: ロジックアナライザ - やどさん

2024/12/20 (Fri) 21:05:55

笛吹おじさん こんばんは。

あっ、上手くいったとの事よかったです。
こちらはPG付RFC-5を使っていますがPG活用してないぃ 汗);;

あと、FT-70Dだったとの事、了解です。
ウチから昭島駅だと直線でほぼ10キロで、GP-ANTなのですが記憶に残ってました。。F2CW滅多に聴かないですし…
(430も混んでないのに文句云う人が居るのですね、、残念。。)

//

Re: ロジックアナライザ - やどさん

2024/12/24 (Tue) 23:54:53

>ちょっと8chでは足りず、格安ロジアナ2個で16ch観測できないのかな…

先人が工夫していないか調べていたら、、「ラズパイPICOで作る24chロジアナ」を二つ見つけました。

< gusmanb/logicanalyzer > https://github.com/gusmanb/logicanalyzer こちらを試行
< sigrok-pico > 
https://github.com/pico-coder/sigrok-pico


YouTubeの解説?もありました。

・Turn your Pico into a 400MHz 24 Channel Logic Analyser
 https://youtu.be/VjSF2LWJVVU?si=jVqeDZUf0ZP_4m0E
・Raspberry Pi Pico as a 24-Channel Logic Analyzer
 https://youtu.be/waBu6ijT3wo?si=fBi2vmcwZarNuht8


これはウッテツケです!
 多chで、速くて(?)しかも安価で簡単!!
ラズパイPICO-RXのSDR受信機から外して、早速試行してみました。 ← 画像添付(ポートを5Vにする方法が分からず、取り急ぎ4chのみ保護抵抗を付けて試行しました)

不良原因わかるかな? 汗);
//

Re: ロジックアナライザ - 笛吹おじさん

2024/12/25 (Wed) 08:13:37

やどさん、お早うございます。
多CHロジアナあれば便利ですね。
早速おやりになったのですね。

>ラズパイPICO-RXのSDR受信機から外して、早速試行してみました。画像

画像は?

私もラズパイPicoは持っていたと思います。
ちょっと実験してみようかな!

Re: ロジックアナライザ - やどさん

2024/12/25 (Wed) 09:07:06

おはようございます。

あれ?画像消えてる!?→修正しました。

p.s.
あっ、サイトみんな横文字ですが、もちろんChromeブラウザの自動翻訳機能を使っています。
YouTubeも日本語の翻訳字幕を表示して視聴です。これ良いですね、、活用の幅が広がりました。
//

Re: ロジックアナライザ パオさん URL

2024/12/27 (Fri) 10:06:01

>やどさん
紹介してもらった PI Pico ロジアナ良いですね。
ただ、レベルシフタの「TXU0104PWR」が国内通販では手に入らないのが残念です。
(秋月の要望フォームで入荷希望をしてみました。)
https://akizukidenshi.com/catalog/pages/parts99.aspx

Re: ロジックアナライザ - やどさん

2024/12/28 (Sat) 11:12:18

パオさん こんにちは。

ラズパイPicoのポートは3.3V固定みたいでした…

5V系信号i/fには、秋月だと8ビットレベルシフタモジュールが安価でいいかもです。
https://akizukidenshi.com/catalog/g/g117062/


で、秋月見てたら、
ルネサスのGreenpakというのが安価で面白そうです。触手がのびます…
https://akizukidenshi.com/catalog/g/g129510/
https://www.renesas.com/ja/document/mat/greenpak-cookbook?language=ja


STM32F103なレシプロカル式周波数カウンタを試行してみました
・200MHzくらいが上限でした。← RFC-5のように、200MHz以上もカウントできないのは何故?
・ラジオ周波数チューニング中の周波数表示が乱れて変な値になってしまう。。ううっ、致命的
 →RFC-5は、周波数が変わったときにも対応してます
・ArduinoIDEでSTM32G031への変更は口で云うほど簡単じゃなかった(・・;)

 う~む、、kHzオーダー程度の精度でいいラジオの周波数表示なら、レシプロカル式じゃなくて、普通にダイレクトカウントすれば!?って突っ込みが聞こえてきそうです。。汗);;
//

Re: ロジックアナライザ - 笛吹おじさん

2024/12/29 (Sun) 07:49:04

やどさん、パオさん、お早うございます。
やどさん、素早く実験してみる、素晴らしい!です。
レシプロカルは周期を測り周波数に換算していますので1秒ゲートで測るオーソドックスな方がいいかもですね。


私事ですが、インフルエンザーAに感染してしまい体調NG、掲示板も斜めに読んでいる始末。
年内は何も出来そうにもありません。

おじさん工房さま、皆様もインフルにはお気を付けください、そして良いお年を御健やかにお迎えください。いろいろお世話になりました。
来年もよろしくお願い致します。

Re: ロジックアナライザ - やどさん

2024/12/29 (Sun) 10:22:21

おはようございます。

うわぁ、この時期では過去10年で最多ってテレビで云ってました。
もう明日は我が身、、外出控えます。> ますます運動不足になりそう 汗);

いろいろな話題のご提供ありがとうございました、暖かくしてどうぞお大事になさってください。

p.s.
ラズパイPicoロジアナでの5V→3.3Vレベルシフタ:
5Vトレラントな8bitバスバッファ74HC245とか74AHC245で5V系信号を受けるのも良さそうです。
→たまたま部品箱(ジャンク?)に74LCX245を見つけました。
//

Re: ロジックアナライザ パオさん URL

2025/01/25 (Sat) 11:10:52

やどさんが紹介されていた「gusmanb/logicanalyzer」の基板を製作して12チャンネル分のシフト基板も完成したのですが、標準のソフトの使い方がよく分からなかったので、簡単な改造をしました。

1 ファームウエアを「uLA」に変更
2 パソコンのソフトは皆様に合わせて「PulseView」に変更
3 回路の違いにより CH1、CH2 は使えませんが、CH3~CH12までの10チャンネルは使えます。
4 ケースは有名な3Dデータの公開サイト「Thingiverse」にあった物を出力

で、やっと改造版 RFC-5 の I2C 信号的な物が見られました。

RFC-7 UART接続 - 笛吹おじさん

2025/01/22 (Wed) 18:58:00

今晩は。
UART接続でプログラムの書き込みをやってみました。
SW!を押しながら電源ON,LCDにBOOT MODEと表示されます。
STM32Cube Programmerを起動、UARTを選び後はST-LINKと同じ方法で書き込みが出来ました。

SW2を押しながら電源をONするとDEFAULT SETTINNG
と表示されますがSWから手を離すと通常測定モードになります。

RFC-7 - 笛吹おじさん

2025/01/15 (Wed) 19:34:04

今晩は。
RFC-7造ってみようと部品発注しましたが納期遅延で
10MHz(TCXO)とプリスケーラー、3.3Vレギュレータ
部分しかできません。

USBシリアルi/Fが付いていますが、これは具体的に何に使うのでしょう。
tera termでつないでCPUのデバッグに使う?それとも
USB用アプリが用意されてべつの使いかたが出来るのでしょうか?

Re: RFC-7 - Ojisankoubou

2025/01/17 (Fri) 06:12:37

デバッグにも使いましたが、今は主に測定データのログに使っています。 ホームページの 1PPS や AUDIO の測定データは teraterm でログを取って excel でグラフにしました。
他にはプログラムの書き込みにも使えます。 ST-LINK を持っていない方でも USB 経由で書き込みができます。

Re: RFC-7 - 笛吹おじさん

2025/01/17 (Fri) 08:32:27

お早うございます。
ご回答有難うございます。よく分かりました。
ケースに入れることを考えると色々接続も考えないと
なりませんので、仮配置的なことで配線をしています。
USBで書き込みができるならST-LINKは付けないでもいいのかな、、、(考慮中)
いつ出来上がることやら?

Re: RFC-7 - やどさん

2025/01/18 (Sat) 23:22:45

笛吹おじさん Ojisankoubou様、こんばんは。

RFC-7 さっそく作ってみました! 画像添付
いやいや、色鉛筆で回路図塗りながら一日配線してたのですが、2か所ミスあって深夜になってしまいました… 汗;

しかしこれは凄いですね! → Time-to-Digital Converter、測定精度を2桁も上げてしまう正にブレイクスルーな技術!?

TDC で時間補間する方法( https://ojisankoubou.web.fc2.com/rfc/rfc-7/index.html )
に書かれているブロック図とタイミング図が肝だと思いますが、、

元信号のLPタイマー出力と、そのDFF(ディレイライン)信号の時間差を TDC7200(TDC)で補間して 時間分解能を一気に上げる、という原理でしょうか。。
→タイマークロック130MHz(7.69ns),TDC7200の分解能(55ps)で補間すると、 7690/55=139.8 ← ふた桁時間分解能が上がる!?

タイムチャート未だ理解できていないので考えてみますぅ… 汗;;
あと、シリアル受信できていないので調べないとっ、、、

Re: RFC-7 - 笛吹おじさん

2025/01/19 (Sun) 00:46:44

やどさん、今晩は。
音沙汰ないと思っていたら、、もう造ってしまったのですね。
いやー早い!。
私の方は部品が明日(もう今日ですかね)届きますので
もう少し時間がかかりそうです。

Re: RFC-7 - やどさん

2025/01/19 (Sun) 09:38:37

笛吹おじさん おはようございます。

恐れ入ります。。
2桁も改善するってどういう事??
、と云うことで作ってみるしかないと、先週末,不足部品をマルツ電通大構内店で受取ってきました。


>シリアル受信できていないので調べないとっ、、、

布団の中でTX,RX逆?と思って、、朝一見たら案の定でした。。お恥ずかしい… 汗);
画像の様なシリアルデバッグ機能が搭載されてました!→115kbpsです..
//


Re: RFC-7 - 笛吹おじさん

2025/01/19 (Sun) 13:34:13

やどさん、今日は。
USBシリアル動いて良かったですね。
今日部品が来るかと期待しているのですが、どうも
関東の集配所で止まっている様です。
私はGPSを使った精度の良い基準が使えませんので
取り敢えず2桁改善能力を持っている(自己満足、、、)測定器として造っています。
多分、誤配線があるのですぐには動かないでしょう。

Re: RFC-7 - 笛吹おじさん

2025/01/20 (Mon) 19:53:00

今晩は。
取り敢えず配線が終わりました。
ST-LINKで書き込みをしてみたのですが、エラーです。どうもCPUを認識していないようですね。
誤配線かな?
前途多難、、、、

Re: RFC-7 - 笛吹おじさん

2025/01/21 (Tue) 12:21:30

今日は。
やどさん、質問です。
ST32CubeProgrammarは32bit版、それとも64bit版ですか?
私は64bit版を使っているのですが、動作が不安定で書き込みができないことが多いです。

配線はOKの様でST-LINKをUSBにつなぎ直したり、PCを再起動して何とか書き込みが出来ました。
LCDは秋月のAQM1602Aを使っています。
コントラストが薄く(カウンタは動作している感じ)
デフォルトの16から32に変更、コンパイル、書き込みをしたのですが、まったくできません。
CPUを認識できないようです。
ST32CubeProgrammarの最新をDLして入れ直しても結果は同じです。

CPUの1pinのLEDは最初は点灯していなかったのですが、今は点灯状態です。
CPUがロックされているのか?

RFC-5の時からST32CubeProgrammarは不調ですね。
何が悪いのか、、、、

Re: RFC-7 パオさん URL

2025/01/21 (Tue) 14:38:45

>笛吹おじさん
プログラムの書き込みに苦労されているようですね。

私の環境は CubeProgrammar 64bitの最新版です。(v2.6.0)
書き込みエラーは出ていません。

すでに試されていると思いますが、
1 ST-LINKをUSBケーブルで延長せずにパソコンに直刺しする。
2 ST-LINKを交換する。
3 STM32 ST-LINK utilityを使ってみる。

このぐらいでしょうか。

>やどさん
すでにRFC-7が完成していますね。
精度が2桁向上とは、すごいです!

わたしは、以前、こちらで話題になったロジック・アナライザを作っています。

Re: RFC-7 - 笛吹おじさん

2025/01/21 (Tue) 17:37:28

パオさん、今晩は。
どうもアドバイス有難うございます。
もう一度見直したところ半田不良が見つかりました。これを直して書き込みはできるようになりました。
どうもお騒がせ致しました。
まだおかしいところがありそうですので見直します。
ロジック・アナライザを作られているのですね。
APB1ですか?

Re: RFC-7 - 笛吹おじさん

2025/01/21 (Tue) 19:07:38

今晩は。取り敢えずOKになりました。
LCDはコントラストのデフォルト=16だと薄くて見えませんので30にしました。
外部基準の切り替えは今は省略しています。
ケースに入れる時に考えようと思います。
抵抗キャパシタは1608のチップ部品、変換基板を使い
きわどい配線をしていますので、振動でハンダが外れるかもです。

Re: RFC-7 - やどさん

2025/01/21 (Tue) 20:20:59

笛吹おじさん パオさん、こんばんは

バッチリ、動いてますね!

>カウント動作しているけどコントラストが薄い…
どこかに電流パスがあって電源電圧低下しているか、
LCD電源が5Vになっているか?とか考えているうちに、動作OKとの投稿、とにかく良かったです。

まだあまり弄ってないのですが、、電源OFF/ON2回目以降,LCD表示が外部リファレンス表示Exになるのが気になりました。
外部Refのため、メニューに AUTO F.ADJやF.ADJが出ないです。
回路的には内部/外部Refを自動判別してないと思います。。
//

Re: RFC-7 - パオさん URL

2025/01/21 (Tue) 20:45:50

>笛吹おじさん
>ロジック・アナライザを作られているのですね。
>APB1ですか?
やどさんが紹介されていた「gusmanb/logicanalyzer 」の基板を作ったので組み立て中です。
(完成したら「ロジックアナライザ 」への返信に記載します。)

お二人共に仕事が早いですね。
RFC-7 は、自作した 20pin カウンタ基板を改造して試験ができないか考えていました。
その前に、追加回路用の部品を注文しないといけないです。

Re: RFC-7 - 笛吹おじさん

2025/01/21 (Tue) 21:49:34

今晩は。
パオさん、ロジアナの件了解です。
発表楽しみにしています。

やどさん、
USB受信はただつないでTeratermを起動すればいいのですか?

Re: RFC-7 - やどさん

2025/01/21 (Tue) 23:32:16


はい、そうです。
115200bps 改行コードCR+LFに設定しました
//

RFC-7 - Ojisankoubou

2025/01/06 (Mon) 16:50:17

RFC-7 のページをつくりました。

TDC(Time Digital Converter) を使って時間補間することで RFC-5 より 2 桁高分解能になっています。
まだ作ったばかりで工事中のところも多くありますが、だんだんと充実させていくつもりです。

https://ojisankoubou.web.fc2.com/rfc/rfc-7/index.html

Re: RFC-7 - 笛吹おじさん

2025/01/07 (Tue) 08:21:33

おめでとうございます。
本年もよろしくお願い申し上げます。
分解能アップのRFC-7ですか、、、、食指が動いてしまいますね。
先ずは、部品代のかからないコンパイルをやってみますかね。

追記
コンパイルは問題なくOKでした。
部品の手持ちはゼロ、Aliexpress?で入手可能ですか?

Re: RFC-7 パオさん URL

2025/01/07 (Tue) 09:56:28

昨年は色々とお世話になりました。

RFC-7、楽しみです!
MCU は20ピンの STM32G031F6P6 なので、すぐに実験が出来そうです。

RFC-5 の基板化をしたのですが、20dB アンプの動作が良くないので、市販 RFアンプで再基板化しようかと考えていたのですが中止します。

このカウンタはプリスケーラの切替機能付きなので、希望していた機能が「全て盛り」状態でうれしいです。
(I2C LCD(ST7032)が自動判別なのが、すごく助かります。)

パオさん基板使用rfc-5用ケース - 笛吹おじさん

2024/12/18 (Wed) 20:31:08

今晩は。
パオさん基板使用RFC-5周波数カウンタのケースを造っています。
私にとってケース作りは一番やりたくない作業なのです。
0.8mm厚のアルキ板を切り、曲げてLCDの長方形nの穴をあける、何といってもこれが一番大変です。
高齢になって指に力を入れると指がつってしまいます。
パソコンのキーを叩いている分にはいいのですが力仕事はだんだん出来なくなりつつあります。

Re: パオさん基板使用arfc-5用ケース パオさん URL

2024/12/18 (Wed) 22:24:27

>笛吹おじさん
製作中(?)のケース写真を拝見しましたが、アルミ製の本格派ですね。
私は最近は手を抜いて、3Dプリンタでプラ製のケースを手軽に作っています。
(3Dプリンタなら、設計はパソコンで出来ますよ。おススメです。)

ところで、入力端子はどうされていますか?
私が作った基板の「20dB アンプ」部分は動作が不良ですが、ブログで紹介した市販品のアンプ基板(Amazonでも2個で千円程度で購入できます。)を代わりに付けると 300 MHz 位まで計測出来ます。

その為、2つの入力端子用の穴を開けておくと、その後の機能拡張に良いかもしれません。

Re: パオさん基板使用arfc-5用ケース - 笛吹おじさん

2024/12/20 (Fri) 23:21:21

今晩は。
ケースが出来ました。でも行き当たりバッタリですので
電池を入れるスペースがありません。(大笑い)
入力はパオさん20dBアンプ+5倍アンプにしました。
TRは2SC2714(550MHz)を使っています。
特性は90MHzくらいですね。PGはなしです。

やどさん、QTHお近くなのですね。お空でお会いできるかもですね。その時はよろしくお願い致します。

パオさん
小さく作りすぎ隙間がありません、いつもですが、適当に思い付きで造るものですから、つじつま合わせが
上手くいきません。
毎度お粗末な出来上がり?です。

Re: パオさん基板使用arfc-5用ケース - パオさん URL

2024/12/21 (Sat) 13:46:13

>笛吹おじさん
ケースの完成、おめでとうございます。

>毎度お粗末な出来上がり?です。
そんなことないと思います。
この短期間で独自に LCD を解析して、金属ケースを加工して、完成したのはすごいことです!

ちなみに、横の周波数特性のグラフは何をお使いですか?
グラフ化の方法などを教えていただけると幸いです。

Re: パオさん基板使用rfc-5用ケース - 笛吹おじさん

2024/12/21 (Sat) 14:43:42

パオさん今日は。
NanoVNA V2_2(S-A-A-2)を使っています。
おじさん工房にあるNanoVNAの改造
プログラムを入れています。
おじさん工房のプログラムを入れるにはCPUにフローティングポイントの演算ができるCPUが搭載されている必要が有ります。
同じNanoVNAでもCPUにこの機能がないものがあります。
私も最初に購入したものはNGでしたので買い換えました。
NanoVNAは中国の色々なストアが販売していますので、正統派の品物を手に入れることが重要です。
改造はおじさん工房に有りますのでこれに従って書き換えます。
NanoVNA Caputure ソフトが有りますのでこれを使えば画面をキャプチャーできます。
このアプリもおじさん工房に有ります。

追記
メニュー画面からconfigをセレクトしVersionを見ると
下の方にあるPort InfonにGD32F303と表示されれば対応品です。(記憶があいまいなのですが)
NG品は確かこの表示がでないと思います。

Re: パオさん基板使用rfc-5用ケース - 笛吹おじさん

2024/12/22 (Sun) 09:33:12

パオさん、お早うございます。
補足説明です。

1.フローティングポイントの演算ができるCPUが搭載されている必要が有ります。

これはおじさん工房のNanoVNAファームウエアの書き換えをする場合のことです。

2.周波数特性の観測は一般的なNanoVNAで出来ると思います。

3.NanoVNA Caputure ソフトは一般的なNanoVNAでも使えたと記憶してます。

もう1台持ってますので後程確認して見ます。


Re: パオさん基板使用rfc-5用ケース - パオさん URL

2024/12/22 (Sun) 10:16:10

>笛吹おじさん
ケースの話からズレてしまってすみません。

最後にこれ関係で1つだけ
素人質問で申し訳ないのですが、この様な試験をするときはテスト機材をどのように接続するのでしょうか?
フィルタやアッテネータなど単体の部品なら NanoVNA などの出力と入力の間につなぐと想像できますが、今回のような単体で動作する周波数カウンタの周波数特性は、回路のどこかに配線を追加して試験をするのでしょうか?

Re: パオさん基板使用rfc-5用ケース - 笛吹おじさん

2024/12/22 (Sun) 12:45:04

パオさん、今日は。
周波数カウンタの周波数特性は入力アンプの特性そのものですから、フイルタやアッテネータと同じ接続でつないでいます。
NanoVNAのPort1(出力)をカウンタの入力につなぎ、NanoVNAのPort2(入力)をアンプの出力につないでいます。
(アンプ単体ですと受け側の入力インピーダンスに等しい抵抗で終端する必要が有るかと思います。)
わたしの場合は入力アンプの出力がCPUの入力(8pin)につながった状態で測っています。

カウンタの電源を入れた状態でNanoVNAのスタートとストップ周波数を設定し測定しています。簡易測定ですのでおおまかな特性を見ています。
精度よく測るにはNanoVNA側にもアッテネータを入れる必要が有るのかもです。

おじさん工房にはその治具もありますのでご参考にされてください。
私も治具は作いアッテネータも入手したのですが行方知れずです。

Re: パオさん基板使用rfc-5用ケース - 笛吹おじさん

2024/12/22 (Sun) 17:00:18

パオさん、今日は。

別ののNanoVNA(NanoVNA-H)でF特性を測ってみました。
画像はCapture アプリでとりました。

NanoVNAからCWを出して測定してみました。
90MHz(230mVpp)は測定出来ましたが100MHzになるとちょっと厳しいですね。
安定したSGがあればもう少し数字的な精度をもった測定検証が出来るかと思いますが、、、

20dB 低雑音アンプのプリント基板化 - パオさん URL

2024/10/19 (Sat) 11:42:57

現在、RFC-5 とプリスケーラの基板を KiCad で製作中ですが、ほぼ終了しました。

発注前に回路の再確認をしていたところ、分からない所があったので教えて頂けますか?

「20dB 低雑音アンプ」は最新版の 500MHz 版を用いましたがリップルフィルタ部の「C4」の値を勘違いしていました。
C3 は「120u」なので SMD の3216サイズが使えます。
ところが、1000p だと思っていた C4 は 1000u でした。
色々と調べたのですが、秋月など通販で入手できる SMD コンデンサの最大は 300u程度のようです。

このアンプを製作された方もいらっしゃるようですが、C4 には何を使われましたか?
今思い付くのは…
1 電解コンデンサ(1000uF)
2 300u 程度の SMD 3個並列(300u x 3 = 900uF)
3 300u 程度の SMD コンデンサ1個で様子を見る

Re: 20dB 低雑音アンプのプリント基板化 - やどさん

2024/10/27 (Sun) 16:45:37

パオさん みな様こんにちは。

もう発注されていると思いますが… 遅れて投稿です。。

低雑音化のリップルフィルターの実験は出来てないのですが、汗);
自分だったら秋月でも手に入る低ESRな導電性高分子アルミ固体電解コンや チップアルミ電解コンにすると思います。

で、思い立って 20dBアンプの広帯域f特改善について実験をしてみました。
以前、ちょっと試してみて旨くいかず放置していたため、再度試してみました。→ 画像

結果、明らかにS21特性など改善したグラフが得られましたが、ケーブルや基板をちょっとでも動かすとグラフが変わったりして、基板や環境を整備しないと高周波数の評価は難しそうと云う印象です。。(ちょっと評価ボードがテキトウ過ぎました 汗);;

あと、前回投稿では、STM32G030F6P6ボードでカウンタ入力端子のプルダウン抵抗をチューニングすると、5倍アンプのみで210MHzも安定表示しました。
もしかすると最高周波数は、マイコンのプルダウン・プルアップ抵抗比で決まるスレッショルド電圧にも影響されそう。→ マイコン製造バラつきで左右されるのかも…です。
//

Re: 20dB 低雑音アンプのプリント基板化 - パオさん URL

2024/10/27 (Sun) 20:04:52

やどさん
返信有り難うございます。

>チューニングすると、5倍アンプのみで210MHz
確か、やどさんの5倍アンプは、Q1 に 2SK2394、R1 を 190Ωにしていたと思いますが、210MHz まで計測できたバージョンも同じでしょうか?

200MHz まで計測できるのなら、私の用途には5倍アンプで十分ですね。
基板製造メーカにオーダーした物が来週中には届くので、同じぐらいの抵抗値で実験してみます。

ちなみに、プルダウン抵抗はどのくらいの値を使いましたか?
(データシートでは 40kΩとなっていますが・・・)

Re: 20dB 低雑音アンプのプリント基板化 - やどさん

2024/10/28 (Mon) 07:08:22

パオさん おはようございます。

はい、2SC2394CP6で、R1はボードを見たら220Ωでした。ちょっとゲインを上げようと試行したままだったようです。

20pinのSTM32G030F6P6のボードでは、プルダウン可変抵抗 34.2kΩ程度で最良でしたが、電特スペックを見たら、25kΩminの(40k typ)55kΩmaxでした!

これはチップ(ロット?)によってガラガラ変わりそうです。
でも、20pinのPKGならチップに合わせてVR調整できて良いかもです。

あと、プリアンプ入力の信号振幅でも最高周波数が変わります。
記入した最高周波数は-7dBm(100mVrms,141mVpeak @50Ω)の場合で、もう少し大きな振幅の信号を入れれば周波数は上がります。

感覚的ですが、プリアンプからの振幅中心電圧と、マイコン入力端子のスレッショルド電圧が少しでもずれると感度がガクンと落ちるイメージでした。
//

Re: 20dB 低雑音アンプのプリント基板化 - やどさん

2024/11/24 (Sun) 13:51:15

パオさん、皆様 こんにちは。

パオさん基板を送っていただき、ありがとうございました。
RFC-5(5倍プリアンプ)の基本動作確認しました (^^)/

信号源にはAPB-3拡張のSG_GHzを使用し、入力信号と安定カウント最高周波数を測定してみました。
→ ただし、RFC-5入力は1MΩ(50Ω終端せず, STM32G030F6P6(20pin)使用

 SG振幅  安定カウント最高周波数
 -1dBm    350MHz
 -4dBm    280MHz
 -7dBm    220MHz
 -10dBm    160MHz

うわぁー、、STM32マイコンのタイマーって350MHzでもカウントできるのですね!? 常識なのかな 汗;;


回路図で変更した所があります。

C1: RFC-5の回路図のとおり1μFにしました。
R3: 以前、2SK2394を使った場合のシミュレーションで190Ωくらいが良かった?ため(記憶が曖昧ですぅ…)100+91Ωにしてみました。
IC2: レギュレータICは手持ちのAMS1117-3.3を使用しました。(C10,C11が46uFとなっていますが多分47uFの間違え?)
あと、20pin版の方ですが、スイッチ基板のGNDがスイッチ1,2に繋がっていなかったので、配線追加しました。

基本動作問題ないどころか、とても良さそうなので パオさんの基板で20dB低雑音アンプも組み立てて実験してみます。
ありがとうございました!!
//

Re: 20dB 低雑音アンプのプリント基板化 パオさん URL

2024/11/25 (Mon) 19:14:03

>やどさん
>SG振幅  安定カウント最高周波数
> -1dBm    350MHz
すごいですね!350MHz まで計測出来ましたか。

ところで、RFC-5のページで公開されている回路図の「20220906」の C1 では値が分からなかったので 0.1uF にしてしまいましたが、本当は 1uF だったのですね。
自信がないので、その他の数値も青色で入れましたが合っていますか?

Re: 20dB 低雑音アンプのプリント基板化 - 笛吹おじさん

2024/11/25 (Mon) 22:28:59

パオさん、今晩は、
C5は1uF耐圧25Vです。C3は22uF耐圧10Vです。
R1は150オームです。
C1は0.1uFでもOKだと思います。

追記
やどさんの回路では190オームです。済みません。

Re: 20dB 低雑音アンプのプリント基板化 パオさん URL

2024/11/26 (Tue) 11:11:45

>笛吹おじさん
教えて頂き、ありがとうございます。

コメントを読んだ途端に、久々に顔が真っ赤になりました。

そうですよね。
1/25uFなんて中途半端なコンデンサを使うはずがないですね。
考えれば分かりそうですが、「最近の回路シミュレータは、分数で値を計算してくれるんだ。」と勝手に思っていました。
恥ずかしい・・・

基板をお送りした方々に、早々に間違いの連絡をします。

Re: 20dB 低雑音アンプのプリント基板化 - やどさん

2024/11/26 (Tue) 16:48:14

パオさん、笛吹おじさん こんにちは!

もう解決されていますが、1uFですが、、
パオさんの回路図でC1 = RFC-5オリジナルでC5でした。

あっ、、オリジナルのC3は22uFでしたね!
E24系列に出てくる値なので、気が付きませんでした 汗);;
いかんいかん、失礼しました~

あと、オリジナルのC1は 0.1uFでOKです。
ノイズ除去のパスコン(バイパスコンデンサ)は・を打ったり、値を書かずに、回路図の余白に注記されていることが多いです。
//


Re: 20dB 低雑音アンプのプリント基板化 - やどさん

2024/12/04 (Wed) 23:33:42

パオさん 皆様、こんばんは。

遅くなりましたが、パオさん基板で20dBプリアンプの試行をしてみました。
少し抵抗値を変えましたので添付画像に回路図を入れておきます。 → 画像左側


結果:
・マイコンにつないで安定して周波数カウントする最高周波数は、約158MHz
 → ただし、TinySAのSG機能で -7dbm出力時です。プリアンプ入力部で50Ω終端しました。

・PG=150MHzで安定して周波数カウントする最小入力振幅は、-24dBm  → 画像右上
 → これまでに試した中で最良な感度でした! -24dBm = 14mVrms = 20mVp = 40mVpp

原因不明事項
・周波数帯域が狭いというか、200MHz程度以上に共振回路もしくはLPFがあるような周波数特性を示します!? 汗);

 → NanoVNA-V2でS21特性を測定すると、画像右下のように急に増幅度が低下する周波数特性となり、配線や抵抗などの定数見直しでも同様な傾向でした。



ご参考用に、今回 LTspiceで回路シミュレーションを行ったネット(ascファイル)や使ったライブラリなどを、下記共有ディレクトリにおきました。

https://drive.google.com/drive/folders/1riC0zhOjh7L3jIOKZVYTP_VtJSxp-a_b

の中の、「RFC-5回路シミュレーション資料.zip」ファイルをダウンロードしてください。
→ 下手の横好き的シミュレーションなので、ご参考程度に… 汗;;
//

Re: 20dB 低雑音アンプのプリント基板化 - パオさん URL

2024/12/05 (Thu) 10:04:46

>やどさん
確認してもらい助かります。

私が測った時も、このアンプ単体では最大で 120 MHz 位までしか行かなかったので、基板上のどこかの配置が RF 回路的に NG なのでしょう。(配線の配置が RF フィルタを作っている?)

ここまで高い周波数を扱う基板を作ったのは初めてなので、オーダーに出す前に基板の RF をシミュレートする必要があったのだと思います。

とりあえず、すぐに確認できる、20dB 低雑音アンプ - 5倍アンプ - MCU の接続で、どこまで測れるか確認してみます。

Re: 20dB 低雑音アンプのプリント基板化 パオさん URL

2024/12/14 (Sat) 22:21:48

>やどさん
やはり色々といじってみましたが、私が基板化した「20dB アンプ」部分は性能が良くない(上限周波数が低い)ようです。

そこで、安価で購入できる RF アンプモジュールを RFC-5 のプリアンプとして試してみたところ良好な結果が得られました。(320 MHz まで計測出来ました。)

また、試作品ですが LCD に I2C の AQM1602Y を使ったケースを Fusion360 で設計して 3Dプリンタで作ってみました。(まだ充電池は外部です。)

ところで、やどさんは TinySA と NanoVNA-V2 をお持ちのようですが、今回の様な周波数特性を「グラフ化」するため、私も同様な器材を購入したいと考えています。適した器材はどちらでしょうか?

Re: 20dB 低雑音アンプのプリント基板化 - やどさん

2024/12/15 (Sun) 00:44:09

パオさん こんばんは。

おおっ、5089Zとか5189な広帯域20dBのLNAですね。
うちにもAliで数百円だったか、買ったのが転がっています。

これを使えば、部品点数最小限のコスパ良し、高精度なレシプロカル式周波数カウンタが出来ますね!
いやいやケーシングが素敵です。


>TinySA と NanoVNA-V2

RF20dBアンプのような特性測定ならば、やはりNanoVNAがおすすめです。他にもいろいろな測定に使えます。

NanoVNA、TT@北海道さんが生み出したノーベル賞級なRF測定器で、許可を得ずに中国で複製して安く販売したのが原因と思いますが、世界中のアマチュア、プロ級の人々に使われています。

TinySAはNanoVNAをお手本に作られた簡易スペアナです。
今回は信号発生器としてしか使っていませんが、出力信号レベルを-7dBmから-70dBmくらいまで1dBm毎に可変できて重宝します。
(ちなみにNanoVNAも信号発生器になります)
//

Re: 20dB 低雑音アンプのプリント基板化 パオさん URL

2024/12/18 (Wed) 19:57:06

RFC-5 プリント基板のアンプ部を色々と試験した記事をブログに書きました。
https://me-yoh.com/make_frequency_counter_12

最終的に、私の基板化した「20dB 低雑音アンプ」は動作不良ですが、AliExpress の RF アンプで 370 MHz (-13.7dBm)まで計測出来ました!

ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/13 (Fri) 23:34:52

今晩は。長くなりましたのスレッド(4)にしました。

Re: ACM1602NI-FLW-FBW-M01(4) - やどさん

2024/12/14 (Sat) 07:39:01

笛吹おじさん おはようございます。

> コマンドの、0x06部分では、表示エントリーモード設定になっていますが、0xC0にすればOK
 おっと、すみません誤記です! 0xC0ではなく、0x0C (表示ON・カーソルOFF)でした。


で、80,80が続くのが文字データ送信部ですが、
 よく考えたら、笛吹おじさんのコマンド送信部と同様に直せば、正しく表示データが送信されると思います。


表示データ1バイトを送信する部分、lcdc16xn_i2c.c内 lcdc_write8()を、下記のようにしたら文字出るはず、、汗);

//───────────────────────────────────
// データ1バイトをLCDに送る 
//───────────────────────────────────
static int lcdc_write8( int data ) {
int err=0;

i2c_start();
err += i2c_write8( i2c_addrs ); // address + bit0=L(Write)
err += i2c_write8( 0x80 );
err += i2c_write8( data ); // data8bit

i2c_stop();
if( err ) return 1;
return 0; // OK
}

//

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/14 (Sat) 10:21:32

やどさん、お早うございます。
土曜の朝、早くからの御回答有難うございます。
早速やってみました。

結果************************************
244210-244355 I2C: Address/data: Address write: A0
244355-244376 I2C: Address/data: Write
244373-244394 I2C: Address/data: ACK
244399-244566 I2C: Address/data: Data write: 00
244563-244584 I2C: Address/data: ACK
244589-244755 I2C: Address/data: Data write: C0
244752-244773 I2C: Address/data: ACK
244821-244821 I2C: Address/data: Start repeat
244845-244990 I2C: Address/data: Address write: A0
244990-245011 I2C: Address/data: Write
245009-245030 I2C: Address/data: ACK
245034-245201 I2C: Address/data: Data write: 00
245199-245220 I2C: Address/data: ACK
245225-245390 I2C: Address/data: Data write: 0C
245388-245409 I2C: Address/data: ACK
245465-245465 I2C: Address/data: Start repeat
245489-245634 I2C: Address/data: Address write: A0
245634-245655 I2C: Address/data: Write
245652-245673 I2C: Address/data: ACK
245678-245845 I2C: Address/data: Data write: 00
245842-245863 I2C: Address/data: ACK
245867-246034 I2C: Address/data: Data write: C0
246031-246052 I2C: Address/data: ACK
246101-246101 I2C: Address/data: Start repeat
246125-246270 I2C: Address/data: Address write: A0
246270-246291 I2C: Address/data: Write
246288-246309 I2C: Address/data: ACK
246313-246480 I2C: Address/data: Data write: 80
246477-246498 I2C: Address/data: ACK
246502-246668 I2C: Address/data: Data write: 20
246666-246687 I2C: Address/data: ACK
246735-246735 I2C: Address/data: Start repeat
246759-246904 I2C: Address/data: Address write: A0
246904-246925 I2C: Address/data: Write
246923-246944 I2C: Address/data: ACK
246947-247114 I2C: Address/data: Data write: 80
247111-247132 I2C: Address/data: ACK
247136-247301 I2C: Address/data: Data write: 20
247300-247320 I2C: Address/data: ACK
247369-247369 I2C: Address/data: Start repeat
247393-247538 I2C: Address/data: Address write: A0
247538-247559 I2C: Address/data: Write
247557-247578 I2C: Address/data: ACK
247581-247748 I2C: Address/data: Data write: 80
247745-247766 I2C: Address/data: ACK
247770-247935 I2C: Address/data: Data write: 20
247934-247954 I2C: Address/data: ACK
248003-248003 I2C: Address/data: Start repeat
248027-248172 I2C: Address/data: Address write: A0
248172-248193 I2C: Address/data: Write
248191-248212 I2C: Address/data: ACK
248215-248382 I2C: Address/data: Data write: 80
248379-248400 I2C: Address/data: ACK
248405-248571 I2C: Address/data: Data write: 20
248568-248589 I2C: Address/data: ACK
248637-248637 I2C: Address/data: Start repeat
248661-248806 I2C: Address/data: Address write: A0
248806-248827 I2C: Address/data: Write
248825-248846 I2C: Address/data: ACK
248849-249016 I2C: Address/data: Data write: 80
249013-249034 I2C: Address/data: ACK
249039-249205 I2C: Address/data: Data write: 20
249202-249223 I2C: Address/data: ACK
249271-249271 I2C: Address/data: Start repeat
249295-249440 I2C: Address/data: Address write: A0
249440-249461 I2C: Address/data: Write
249459-249480 I2C: Address/data: ACK
249483-249650 I2C: Address/data: Data write: 80
249647-249668 I2C: Address/data: ACK
249672-249837 I2C: Address/data: Data write: 20
249836-249856 I2C: Address/data: ACK
249905-249905 I2C: Address/data: Start repeat
249929-250074 I2C: Address/data: Address write: A0
250074-250095 I2C: Address/data: Write
250093-250114 I2C: Address/data: ACK
250117-250284 I2C: Address/data: Data write: 80
250281-250302 I2C: Address/data: ACK
250306-250471 I2C: Address/data: Data write: 20
250470-250490 I2C: Address/data: ACK
250539-250539 I2C: Address/data: Start repeat
250563-250708 I2C: Address/data: Address write: A0
250708-250729 I2C: Address/data: Write
250727-250748 I2C: Address/data: ACK
250751-250918 I2C: Address/data: Data write: 80
250915-250936 I2C: Address/data: ACK
250940-251105 I2C: Address/data: Data write: 20
251104-251124 I2C: Address/data: ACK
251173-251173 I2C: Address/data: Start repeat
251197-251342 I2C: Address/data: Address write: A0
251342-251363 I2C: Address/data: Write
251361-251382 I2C: Address/data: ACK
251385-251552 I2C: Address/data: Data write: 80
251549-251570 I2C: Address/data: ACK
251574-251739 I2C: Address/data: Data write: 20
251738-251758 I2C: Address/data: ACK
251807-251807 I2C: Address/data: Start repeat
251831-251976 I2C: Address/data: Address write: A0
251976-251997 I2C: Address/data: Write
251994-252015 I2C: Address/data: ACK
252019-252186 I2C: Address/data: Data write: 80
252183-252204 I2C: Address/data: ACK
252208-252374 I2C: Address/data: Data write: 20
252372-252393 I2C: Address/data: ACK
252441-252441 I2C: Address/data: Start repeat
252465-252610 I2C: Address/data: Address write: A0
252610-252631 I2C: Address/data: Write
252628-252649 I2C: Address/data: ACK
252653-252820 I2C: Address/data: Data write: 80
252817-252838 I2C: Address/data: ACK
252842-253008 I2C: Address/data: Data write: 20
253006-253027 I2C: Address/data: ACK
253075-253075 I2C: Address/data: Start repeat
253099-253244 I2C: Address/data: Address write: A0
253244-253265 I2C: Address/data: Write
253262-253283 I2C: Address/data: ACK
253287-253454 I2C: Address/data: Data write: 80
253451-253472 I2C: Address/data: ACK
253476-253642 I2C: Address/data: Data write: 20
253640-253661 I2C: Address/data: ACK
253709-253709 I2C: Address/data: Start repeat
253733-253878 I2C: Address/data: Address write: A0
253878-253899 I2C: Address/data: Write
253896-253917 I2C: Address/data: ACK
253921-254088 I2C: Address/data: Data write: 80
254085-254106 I2C: Address/data: ACK
254110-254276 I2C: Address/data: Data write: 20
254274-254295 I2C: Address/data: ACK
254343-254343 I2C: Address/data: Start repeat

**********************************************

となり、20が連続で出ています。

まだ、その後の文字は表示されませんね。
まだ何かありそうです。

でもSW1,2を同時に押して電源を入れると「DFU G]と一瞬表示されますのでmain.cにある"DEFAULT SETTING"の1部?が出ているのかも、、、、、

これから日課のwalkingに行きますので2時間ほど投稿できません、よろしくお願い致します。
では、

Re: ACM1602NI-FLW-FBW-M01(4) - やどさん

2024/12/14 (Sat) 11:55:52

おおっ、表示出ましたね!

スペースの埋め尽くしなので、面白くありませんが、立派な文字です。多分、お豆腐やカーソルも消えた事と思います。
一瞬、DFU Gとも表示するということは、文字送信は成功です。

コマンド送信も同様な関数にしてしまえばバッチリいけそうです。
I2C液晶への変更の肝は、初期化コマンドと、コマンド送信に表示データ送信の部分だけなので、これがOKになったら基本問題ないです。

もし、問題あればI2Cデコード結果を眺めてNGなところのコマンドや表示データの送信がどうなっているのかをゆっくり調べれば良いと思います。

すみません、自分もとても興味があったので、なんか逆に急かしてしまったかも、、、と思っていました。

//

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/14 (Sat) 12:43:37

今日は、今日は北風が強いです(東京の郊外西多摩)
やどさん、歩きながら考えて居たのですが、CPUからはLCDへ信号をほぼ正常な形で送りだしている印象です。
あとはLCDの問題?

以下のclock period をいじってみようかと思うのですが。100KHzよりは早そうなので、遅くしてみた方が、、、。

//const int ic2_period = 5; // ic2 clock period =100kHz(5us*2) 実測85kHz
//const int ic2_period = 2; // ic2 clock period =250kHz(2us*2) 実測170kHz
const int ic2_period_ns = 100;//200; // ic2 clock period =250kHz(2us*2) 実測170kHz

木を見て森を見ず的な事をやっていますので森の景観がどうなるのかまでは考えが及んでいません。

>すみません、自分もとても興味があったので、なんか逆に急かしてしまったかも、、、と思っていました。

いえいえ、そんなことはありません。やどさん、パオさんの応援で大いに助かっています。
感謝です!
今しばらくお付き合い頂ければ有難いです。

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/14 (Sat) 14:37:23

今日は。
SCL周波数は140~150KHzくらいで100KHz以下にはならない様な、、、。
どこをいじくればいいのか?

Re: ACM1602NI-FLW-FBW-M01(4) - やどさん

2024/12/14 (Sat) 17:14:07

日が暮れるのが早いですね。

こちらは、寒くて車で移動… 運動不足ですぅ。Hi

先週、SCL周波数を落とすのも試してみました、
i2c_100khz.cを使って、20行目の
const int ic2_period = 2; 
を 2から3や4にするとその比で遅くなりました。

ただ、 ACM1602NI-は、PiCマイコンでI2Cインターフェースしていて、消費電流を落とすためにPiCマイコンのクロック周波数を落としているとは思いますが、、

SCKで100kHz以下まで遅くしないと動かないのかは、試してみないと良く分からないです。
//

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/14 (Sat) 17:45:00

やどさん、今晩は。
車は免許も返納して乗れません(車持っていないです)
さて、お立合い!
何か出ましたよ。

const int ic2_period_ns = 500; //100;//200; // ic2 clock period =250kHz(2us*2) 実測170kHz

取り敢えず上記を500に替えてみました。
そうすると何やらそれらしい文字がでました。
SCL=132KHzくらいです。
この数字をもっと大きくすれば100kHzいかになるのか?
やってみます。
ゴールはもう少しですかね。

const int ic2_period_ns = 500; この数値を900まで増やしてみましたが130KHzよりは下がりません。

取り敢えず表示は良さそうです、SW2を押すと測定時間が変わりますがSW1を押したら気温表示が一瞬消えます。その時間がちょっと長い?(PCF8574アダプタにひかくして)かな。

あとは実際の周波数表示が出るか?をやってみます。

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/14 (Sat) 18:47:52

今晩は。
測定結果もちゃんと表示されている様です。
SCL周波数が100KHzにならないのはなぜ?
これを解決すれば概ねOKかなと。


const int i2c_addrs = 0xA0; //0x4E; // PCF8574 A2..0=111
//const int ic2_period = 5; // ic2 clock period =100kHz(5us*2) 実測85kHz
//const int ic2_period = 2; // ic2 clock period =250kHz(2us*2) 実測170kHz
const int ic2_period_ns = 900; //100;//200; // ic2 clock period =250kHz(2us*2) 実測170kHz

ST-LINK V2ですが、書き込みの度にUSBを抜き差ししないとCube Programmerとconnectできません。
そのうちUSBコネクタが壊れるのではと思っています。
そうなる前に終わらないと、、、、。

Re: ACM1602NI-FLW-FBW-M01(4) - やどさん

2024/12/14 (Sat) 22:11:35

笛吹おじさん こんばんは。

表示完璧ですね!
タイミングが怪しいと、笛吹おじさんが考えた通りでしたね!素晴らしいです。

一応、秋月のページでデータシート見てみたら、
SCLは100kHz max, SDAのセットアップ・ホールド2.4us以上って書いてありました。。。汗);;

st7032は400kHzでしたが、何故100kHz maxなのか?と思って、、

ChatGPTに訊いてみました。

「I2Cの規格自体は、標準モードで100kHzまで、高速モードで400kHzまでと定められています。」
「LCDモジュールの特性、ノイズ対策、消費電力などの様々な要因が複合的に作用して、そのように設計されていると考えられます。」

ちゃんと、I2Cの標準モード規格のLCDモジュールという事でした。。
//

Re: ACM1602NI-FLW-FBW-M01(4) パオさん URL

2024/12/14 (Sat) 22:29:27

>笛吹おじさん
LCD へ無事表示が出ましたね。
おめでとうございます!

ところで、ST-LINK V2 の不具合の件ですが、ドライバを入れ直してはいかがでしょうか?
私は USB が調子悪い時には「USB Device Tree Viewer」というソフトで確認して調子悪い時はドライバを入れ直しています。

>やどさん
毎日遅くまでお疲れさまでした。
ちなみに、「20dB 低雑音アンプ」で RFC-5 のアンプの続報を報告させてもらいました。

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/15 (Sun) 00:10:28

やどさん、パオさん、ご協力有難うございました。
お陰様で何とかゴウルにたどり着くことができました。お礼申し上げます。
SCLの周波数を落とす部分は適当に変更しましたが、今一つ効果がでていません。
この部分は検討事項です。

ST-LINKの件了解です。入れなおしてみたいと思います。

後は20dBアンプ部を作ります。結果についてはまた投稿します。

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/15 (Sun) 09:08:31

お早うございます。快晴、風無し。

以下を1500にしてSCLCLKはちょうど100KHzになりました。

const int ic2_period_ns = 1500; //100;//200; // ic2 clock period =250kHz(2us*2) 実測170kHz

これにて1件落着でございまーーーす!
皆様、有難うございました。

Re: ACM1602NI-FLW-FBW-M01(4) - やどさん

2024/12/15 (Sun) 10:24:00

笛吹おじさん、おはようございます。


ちょっとデューティが気になって、こちらも実験してました。
i2c_250khz.c(delay_ns使用)だと、デューティーが悪くなってしまうので、
i2c_100khz.c(delay_us)を使った方がよいかもです。動いているので多分問題ないですが…

パラメータ振ってSCL周期をみると、こんな感じでした。
<i2c_250khz.c>
const int ic2_period_ns = 100; scl=3.90us
const int ic2_period_ns = 1000; scl=5.06us
const int ic2_period_ns = 5000; scl=7.19us
<i2c_100khz.c>
const int ic2_period_us = 3; scl=7.7us
const int ic2_period_us = 4; scl=10.8us
const int ic2_period_us = 6; scl=14.5us
//

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/15 (Sun) 12:27:13

やどさん、こんにちは。
どうもリポート有難うございます。
<i2c_100khz.c>に切替て書き込んでみましたが表示がおかしくなってしまいました。

<i2c_100khz.c>と<i2c_250khz.c>は内容が異なりますのでさらに<i2c_100khz.c>を直す必要が在りそうです。
<i2c_100khz.c>にはconst int ic2_period_usは有りませんのでこれを追加してic2_periodの部分をic2_period_us に変更しました。

まだ追加、変更が必要でしょうね。

Re: ACM1602NI-FLW-FBW-M01(4) - やどさん

2024/12/15 (Sun) 13:10:20

あっ、i2c_250hz.cを修正していると云うことですね。

ならば、i2c_250hz.cの
 delay_ns(xxx) を delay_us(xxx)に全部置換すれば
早いのでは?と思いましたが、、、

i2c_250hz.cを良く見たら、
 delay_period(123);とか合わせ込みしている部分がありますね。。デューティーが悪くなった原因です。

delay_period(123);をやめて、delay_us(xxx)にすればばいいか?
i2c_100khz.cを直した方が確実か?、、汗);
//

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/15 (Sun) 15:54:38

やどさん、今日は。

<i2c_100khz.c>
const int i2c_addrs = 0xA0; // 0x4E; // PCF8574 A2..0=111
//const int ic2_period = 5; // ic2 clock period =100kHz(5us*2) 実測85kHz
//const int ic2_period = 2; // ic2 clock period =250kHz(2us*2) 実測170kHz
const int ic2_period_ns = 6;

上記の結果が画像です。何だか時間が違うような気がしてます。

やどさんのは14.5us、私のは29.2us。どうして???
CPUのCLK20MHz(オリジナルは26MHz)これは関係ないでしすよね。

delay_us()この関数はgccがもっているのですか?

Re: ACM1602NI-FLW-FBW-M01(4) - やどさん

2024/12/15 (Sun) 16:59:35

>delay_us()この関数はgccがもっているのですか?

サーチすると見つけられますよ~

自分は、Linuxコマンド”grep”でディレクトリ下のどのファイルに”delay_us”文字列があるか探しています。


念のため、
オリジナルRFC-5のI2C波形と、
ST7032用のI2C波形をオシロでも観測してみました。→ 画像
//

Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん

2024/12/15 (Sun) 23:55:44

やどさん、今晩は。
<i2c_100khz.c>の方がDutyはほぼ50%に近いですね、
此方を採用することにしました。
私の場合は
const int ic2_period_ns = 2;でSCL:1サイクルで
13.3us(75KHz)になって居ます。
やどさんの場合はic2_period_ns = 6で14.5us(69KHz)で多少異なりますが概ね同じと思えます。
この違いは多分CPUのXTAl発振周波数の影響でしょう。
表示も問題に様です。
これでFixとしようと思います。。

Re: ACM1602NI-FLW-FBW-M01(4) - やどさん

2024/12/16 (Mon) 01:06:01

笛吹おじさん こんばんは!

はい、たぶん源発振周波数で違いが出たのかと思っています。
もう表示もSCL周期も完璧ですね!お疲れ様でした。

ちょっとプログラム追いきれなくてメカニズムが分からりませんが一応、
delay_us()は、下記に見つけました。

board/stm32/stm32.h:
 #define delay_us( us ) delay_usec( us )
board/stm32/stm32.c:
 void delay_usec( uint32 us ) {
  volatile uint i=(us*(SYSTEMCORECLOCK/1000000))/(LOOPTIME);
  while(i--);
}
board/stm32/stm32.c:
 #define LOOPTIME 8
board/board.c:
 const int SYSTEMCORECLOCK = 32500000; // 32.5MHz = 260MHz/8

//

ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん

2024/12/11 (Wed) 17:24:16

今晩は。日が暮れると冷えてきました。
さて続きです。
画像の様に初期化は4個出ました。時間は10ms(プログラムでは5ms)です。
最初はA0+00+01でACKが戻っています。2個目以降は中身はプログラム通りなのですが、何故かACKが返っていません。なぜか?まだ解決していません。

追記
あれ❕ アドレス:50❓  A0じゃないとおかしい、、

Re: ACM1602NI-FLW-FBW-M01(3) - やどさん

2024/12/11 (Wed) 19:57:13

こんばんは、朝いち0℃くらいになってきました。ブルっっ;;

>アドレス:50?

波形を見るとA0なので大丈夫です。
スレーブアドレス表示は変えられるみたいです。
unshiftedを選ぶとLSBのWrを含めた、A0が表示されると思います。(画像添付)


>何故かACKが返っていません

あ、やはりST7032と同じ症状ですね!
I2C全体の波形をみると、通常pullupされているはずのSCLが”L“になっているのが原因だと思います。

一昨日 ACM1602NI-FLW-FBW-M01(1)で送った、
 static void i2c_stop( void ) 関数の中の最後の
  I2C_SCL_L(); をコメントアウトしてみてください。
//

Re: ACM1602NI-FLW-FBW-M01(3) パオさん URL

2024/12/11 (Wed) 19:57:32

>笛吹おじさん
もう少しで表示が出そうですね。
頑張ってください!

>やどさん
最新のファイルを利用させてもらい、無事、I2C LCD へ表示が出来ました。
やったー!(動作もOKです。)
色々とありがとうございます。

表示できなかった原因を探ってみました。
1 1つしかなく動作試験でずっと使っていた AQM1602A は故障していました。Arduino UNO でも表示不能でした。(この前まで大丈夫だったのですが)
2 最初に試したバイナリは、多分 20Pin 用なので、 I2C のピンが違っているので、LCD を変えても表示しなかった。(多分)
ーその後ー
3 頂いた LCDC16xn_i2c.c に入れ替えてコンパイルしたら AQM0802 で表示できました!
4 プルアップ抵抗やリセット回路の配線を外しても表示OKです。
5 他に部品箱にあった AQM1602Y と ATD1602CP に差し替えても表示できました。

次は、自分でプログラムを修正してOKなら、ケースを作ってみようと思います。

Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん

2024/12/11 (Wed) 21:02:10

やどさん、今晩は。
ロジアナのADRS表示了解です、ありがとうございます。

それからACKは最初のA00001では出るのですがそれ以降はでないのです。
>I2C_SCL_L(); をコメントアウトしてみてください。
やってみましたが状況は同じでした。
まったくACKが返らないのなら分かるのですが、、、、。不思議です。


Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん

2024/12/11 (Wed) 23:20:44

今晩は。
ACK出る様になりました。
残るはDataの表示部分です。

Re: ACM1602NI-FLW-FBW-M01(3) - やどさん

2024/12/11 (Wed) 23:28:44

笛吹おじさん、パオさん こんばんは。

1)1つ目のコマンドライトのストップ(P)以後、2つ目のコマンドライト間のSClは”H”になっている?
2)2つ目のコマンド開始のスタートビット位置はSCL”H”でSDA”↓”で(S)になっている?
3)スレーブアドレスは、正しく0xA0?

もし3つ 問題なしで、ACKが返ってこないとすると、、、

と、書いている間に、ACK出るようになったとの事、おめでとうございます!


一番考えやすいのは、SCLが”H"になっていないでしたが、、、何を直しましたか?


ちなみに、スタート信号は、SCK”H"期間に SDA”↓”なので、
「別にSCLが通常”H"でなければいけない訳ではない」です。

以前投稿したように、何故ストップ後(またはスタート前)にSCL="H"でなければ、ST7032LCDが動かないのか解せません。。。

この投稿見ている方でご存じの方がいらっしゃいましたら教えてください。
//

Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん

2024/12/11 (Wed) 23:59:38

やどさん、

//───────────────────────────────────
// I2C stop
//───────────────────────────────────
static void i2c_stop( void ) {
I2C_SDA_L();
delay_ns(ic2_period_ns/2);
I2C_SCL_H();
delay_ns(ic2_period_ns/2);
//I2C_SDA_H(); <======== コメントアウト // stop
delay_ns(ic2_period_ns/2);
I2C_SCL_L();
}

上記をコメントアウトしました。

Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん

2024/12/12 (Thu) 20:17:26

今晩は、今日は冷たい大風で寒かったです。冬らしくなったのでしょう。
さて、今日は全く進展しませんでしたね。
LCD初期化は期待通りの結果が出たのですが、データ表示の段階はよく分からないことも有り、、、ダメです。

初期化はコマンドが決まっていますので
ADRS+00+コマンドを出すことで何とかなりました。

以下が泥臭いやり方です。(お恥ずかしいですが、)

void lcdc_init( void ) {
i2c_init();

delay_msec( 20 ); // 電源投入後 15ms 以上待つ
// LCDC_RS_L(); // LCD RS = 0 コマンド
lcdc_cmdwrite40( 0x01 );
delay_msec( 5 ); // 4.1ms 以上待つ
lcdc_cmdwrite41( 0x38 );
delay_msec( 5 );
lcdc_cmdwrite42( 0x0f );
delay_msec( 5 );
lcdc_cmdwrite43( 0x06 ); // 4ビットモード
delay_msec( 5 );

lcdc_cmdwrite41( 0x38 ); // 4ビット、2行表示、5x7ドット文字
lcdc_cmdwrite42( 0x0f ); // 表示 ON
lcdc_cmdwrite43( 0x06 ); // increment, no shift
// lcdc_write8( LCDC_NOCURSOR ); // カソールなし
lcdc_cls(); // ディスプレークリア
}


それぞれのcmdwriteXXに相対する関数i2c_txXXを用意して飛ばします。

static void lcdc_cmdwrite40( int data ) {
i2c_tx0( (0x00) + I2C_LCD_E + I2C_LCD_BL ); // RS=0,E=1
// i2c_tx( (0x00) + + I2C_LCD_BL ); // RS=0,E=0
}

以下の関数でLCDに送り込みます。

int i2c_tx0( int txdata ) {
int err=0;
//int lcdcmd = txdata;
i2c_start();
err += i2c_write8( i2c_addrs ); // address + bit0=L(Write)
err += i2c_write8( 0x00 );
err += i2c_write8( 0x01 ); // data8bit

i2c_stop();
if( err ) return 1;
return 0; // OK
}

ここまでは決まったコマンドですので何とかなりました。まえの関数から送られてくる引数は無視。

/*
//───────────────────────────────────
// データ1バイトをLCDに送る
//───────────────────────────────────
static void lcdc_write8( int data ) {
// lcdc_write4( data ); // 上位4ビット出力
// lcdc_write4( data<<4 ); // 下位4ビット出力
char txstr_d[5];
txstr_d[0] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_E + I2C_LCD_BL; // RS=1,E=1
txstr_d[1] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_BL; // RS=1,E=0
data = data<<4;
txstr_d[2] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_E + I2C_LCD_BL; // RS=1,E=1
txstr_d[3] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_BL; // RS=1,E=0
txstr_d[4] = 0;
i2c_tx_str_d( txstr_d );
}
*/

txstr_d[0] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_E + I2C_LCD_BL; // RS=1,E=1
txstr_d[1] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_BL; // RS=1,E=0

上記の中にある
(data&0xF0)ですが、、、どうすればいいのか?

データはADRS+80+dataで送り込む必要が在りますが、どうすればその形になるのか?

初期化の関数も1個ですべてのコマンドをあつかえればいいのですが、私の力では無理です。
そんな訳で頓挫しています。

追記
やどさん、初期化が終わりでーた転送に入った数バイトのロジアナ波形を見たいのですが、お願いします。

Re: ACM1602NI-FLW-FBW-M01(3) - やどさん

2024/12/13 (Fri) 01:06:22

笛吹おじさん こんばんは。

> 初期化後のデータ転送に入った数バイトのロジアナ波形

初期化後の lcdc_cls(); 部のロジアナ波形画像添付します。
アドレス0x7C→制御バイト(RS=1)→表示データ(スペース)の0x20 を1行分16回繰り返しています。



> (data&0xF0)ですが…、?

lcdc16xn_i2c.cのデータやコマンドを1バイト送る関数の中身ですが、

例えば、コマンド0x38を送る場合:

txstr_d[0] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_E + I2C_LCD_BL; のところは、このままだと、、

(data&0xF0)の部分でコマンド38の上位4ビットを残して、下位4ビットにはRSやRW,E,BLの各制御ビットを追加しているので、
(0x30)+0x01 +0x04 +0x08 = 0x3D が送信されてしまいます。

 最初の方にビット位置の定義があります。
 #define I2C_LCD_RS 0x01 // P0 →SC1602LCDのRS端子につながる
 #define I2C_LCD_RW 0x02 // P1 →SC1602LCDのRW端子へ
 #define I2C_LCD_E 0x04 // P2   :    Eへ
 #define I2C_LCD_BL 0x08 // P3   :

元の(PCF8574+sc1602)なLCDでは、SC1602LCDのRSやRW,E,BL制御信号もI2Cで送らなければいけなかったので、コマンドや表示値は4ビット幅にして2回に分けて送る必要がありました。

でも、I2C-LCDでは、アドレスとRWの8ビット → RSを含む8ビット → コマンドや表示データ8ビット、と8ビット幅で送ることが出来ます。
(RSやRW,E,BLの制御ビットを付加する必要ありません)


そこで、対策案ですが、lcdc16xn_i2c.c で、

//───────────────────────────────────
// データ1バイトをLCDに送る
//───────────────────────────────────
static void lcdc_write8( int data ) {
char txstr[2];
txstr[0] = 0x80; // RS=1
txstr[1] = (data);
i2c_tx_str( txstr );
}

//───────────────────────────────────
// コマンド1バイトをLCDに送る
//───────────────────────────────────
static void lcdc_cmdwrite8( int data ) {
char txstr[2];
txstr[0] = 0; //RS=0
txstr[1] = (data);
i2c_tx_str( txstr );
}

LCD初期化 の部分は、

delay_msec( 20 ); // 電源投入後 15ms 以上待つ
// LCDC_RS_L(); // LCD RS = 0 コマンド
lcdc_cmdwrite8( 0x01 );
delay_msec( 5 );
lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示
delay_msec( 5 );


のように続ければ良さそうです。


あと、念のため、i2c_100khz.c のストップ条件の生成部と文字列を送る部分は、下記の様にしてみてください。

static void i2c_stop( void ) {
I2C_SDA_L();
delay_us(ic2_period);
I2C_SCL_H();
delay_us(ic2_period/2);
I2C_SDA_H(); // stop
delay_us(ic2_period/2);
//I2C_SCL_L(); <--- ここをコメントアウト
}

それと、
// 文字列を I2C に送る
int i2c_tx_str( char *txstr ) {  の中の、

while( *txstr ) { はコメントアウトして、代わりに
 for( int n=0; n<2; n++ ) { にしてください。

while( *txstr )のままだと、RSや表示データが0x00だと送信ストップしてしまうためです。
//

Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん

2024/12/13 (Fri) 08:30:19

やどさん、お早うございます。
夜遅くまで私の愚問にご回答頂きありがとうございます。感謝! 感謝! 感謝! です。
貴重なやどさんの睡眠時間が短くなってしまいましたね。済みません。 n(_ _)m

早速やってみます。
結果はまたご報告いたします。
どうも、、、でした。

Re: ACM1602NI-FLW-FBW-M01(3) - やどさん

2024/12/13 (Fri) 12:41:32

いえいえ、すみません、大丈夫です。

それに全然愚問ではないです。。
笛吹おじさんのように、自ら問題を解決しようとする姿勢は他の範であると思います。

きっと、きんさんぎんさんみたいに100歳過ぎても頭脳が衰えないです。
//

Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん

2024/12/13 (Fri) 17:13:48

やどさん、今日は。
結果です。
初期化の38-0F-06 CLS LCDは出ています。その後のデータ部分はA0-80-80 A0-80-80の繰り返しの様です。
LCD表示も豆腐が1個点滅しています。カーソルも豆腐が消えて時に出ています。

ACKはI2C_SCL_L();のコメントアウトでは駄目でした。
今はその上のI2C_SDA_H();をコメントアウトしています。
データ表示部分はプログラムをいじっていますので何か変わってしまったところが有る可能性もありますのでもう一度見直します。

static void i2c_stop( void ) {
I2C_SDA_L();
delay_us(ic2_period);
I2C_SCL_H();
delay_us(ic2_period/2);
I2C_SDA_H(); // stop <------ここに変更
delay_us(ic2_period/2);
//I2C_SCL_L(); <--- (ここをコメントアウト)
}

以下はロジアナの結果です。初期化の最初の部分は端折ってあります。

**********************
162426-162522 I2C: Address/data: Address write: A0
162522-162535 I2C: Address/data: Write
162535-162548 I2C: Address/data: ACK
162552-162663 I2C: Address/data: Data write: 00
162661-162675 I2C: Address/data: ACK
162679-162787 I2C: Address/data: Data write: 0F
162786-162799 I2C: Address/dress write: A0
162945-162959 I2C: Address/data: Write
162957-162971 I2C: Address/data: ACK
162975-163086 I2C: Address/data: Data write: 00
163084-163098 I2C: Address/data: ACK
163102-163212 I2C: Address/data: Data write: 06
163210-163224 I2C: Address/data: ACK
163262-163262 I2C: Address/data: Start repeat
163278-163374 I2C: Address/data: Address write: A0
163374-163388 I2C: Address/data: Write
163387-163401 I2C: Address/data: ACK
163404-163515 I2C: Address/data: Data write: 00
163513-163527 I2C: Address/data: ACK
163530-163641 I2C: Address/data: Data write: C0
163639-163653 I2C: Address/data: ACK
163686-163686 I2C: Address/data: Start repeat
163702-163799 I2C: Address/data: Address write: A0
163799-163813 I2C: Address/data: Write
163811-163825 I2C: Address/data: ACK
163827-163939 I2C: Address/data: Data write: 80
163937-163951 I2C: Address/data: ACK
163953-164063 I2C: Address/data: Data write: 80
164063-164076 I2C: Address/data: ACK
164110-164110 I2C: Address/data: Start repeat
164126-164223 I2C: Address/data: Address write: A0
164223-164237 I2C: Address/data: Write
164235-164249 I2C: Address/data: ACK
164251-164363 I2C: Address/data: Data write: 80
164361-164375 I2C: Address/data: ACK
164377-164489 I2C: Address/data: Data write: 80
164487-164501 I2C: Address/data: ACK

*************************

Re: ACM1602NI-FLW-FBW-M01(3) - やどさん

2024/12/13 (Fri) 20:57:40

笛吹おじさん こんばんは。

> ACKはI2C_SCL_L();のコメントアウトでは駄目でした

誤報かな?と思ったのですが、「// I2C_SDA_H(); stop」でないと表示されないのですね!

ストップ条件を出さずにスタートを重ねることになりますが、
 ChatGPTに訊いてみたら、出来るそうです。(推奨はしないけれど、との事)

もしかすると、、I2Cポート設定時の最初のSCL・SDAがポイントなのかもと考えています。。


> 以下はロジアナの結果…

コマンド 0F→06→C0→表示データ 80→80→

表示データがスペース0x20でなく0x80になっているのが問題なだけで、これを直せば、表示しますね!!
っていうか、もうお豆腐とカーソルを表示しているのですね!

コマンドの、0x06部分では、表示エントリーモード設定になっていますが、0xC0にすればOKです。

あと、「Data write 0C  表示ON,カーソルOFF」のコマンドを加えれば、カーソルを消せます。


*ST7032液晶の初期化→表示クリア部分です(アドレスとStop行は省略)
Start
Data write 0   コマンド
Data write 38, 39, 14, 71, 56, 6C, 38, 01, 6C, 01, ← ST7032初期化部分

Start
Data write 0
Data write 0C  表示ON,カーソルOFF

Start
Data write 0
Data write C0  2行目の先頭指定

Start スペース書き込みを1行分 16回繰り返し
Data write 40  表示:RS=1
Data write 20  0x20 space


Start
Data write 0
Data write 80  1行目の先頭指定
Start
Data write 0
Data write C0  表示ON,カーソルOFF
Start
Data write 0
Data write 80  1行目の先頭指定

Start
Data write 40  スペース書き込みを1行分 16回繰り返し
Data write 20

//

Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん

2024/12/13 (Fri) 22:30:10

やどさん、今晩は。
>コマンドの、0x06部分では、表示エントリーモード設定になっていますが、0xC0にすればOKです。

此処を直した結果です。

***********************
162341-162438 I2C: Address/data: Address write: A0
162438-162452 I2C: Address/data: Write
162451-162465 I2C: Address/data: ACK
162468-162579 I2C: Address/data: Data write: 00
162577-162591 I2C: Address/data: ACK
162595-162704 I2C: Address/data: Data write: 0F
162702-162716 I2C: Address/data: ACK
162743-162743 I2C: Address/data: Start repeat
162759-162855 I2C: Address/data: Address write: A0
162855-162869 I2C: Address/data: Write
162868-162882 I2C: Address/data: ACK
162885-162996 I2C: Address/data: Data write: 00
162994-163008 I2C: Address/data: ACK
163011-163122 I2C: Address/data:{ Data write: C0}
163120-163134 I2C: Address/data: ACK
163166-163166 I2C: Address/data: Start repeat
163182-163279 I2C: Address/data: Address write: A0
163279-163293 I2C: Address/data: Write
163291-163305 I2C: Address/data: ACK
163308-163418 I2C: Address/data: Data write: 00
163418-163431 I2C: Address/data: ACK
163435-163544 I2C: Address/data: Data write: C0 <ーー2回出ている
163544-163557 I2C: Address/data: ACK
163585-163585 I2C: Address/data: Start repeat
163601-163698 I2C: Address/data: Address write: A0
163698-163712 I2C: Address/data: Write
163710-163724 I2C: Address/data: ACK
163727-163838 I2C: Address/data: Data write: 80
163836-163850 I2C: Address/data: ACK
163853-163964 I2C: Address/data: Data write: 80
163962-163976 I2C: Address/data: ACK
164004-164004 I2C: Address/data: Start repeat
164020-164117 I2C: Address/data: Address write: A0
164117-164131 I2C: Address/data: Write
164129-164143 I2C: Address/data: ACK
164145-164257 I2C: Address/data: Data write: 80
164255-164269 I2C: Address/data: ACK
164271-164381 I2C: Address/data: Data write: 80
164381-164394 I2C: Address/data: ACK
***********************************************

Data Write CO が出ていますが(2回出ていますね)
0x20は出ないです。

表示はおかしいですが、取り敢えずは動いている印象です。

ACM1602NI-FLW-FBW-M01 - 笛吹おじさん

2024/12/04 (Wed) 22:15:06

皆さん、今晩は。
毎日が日曜日ですので、相変わらず的外れな解析?をやっています。

void lcdc_init( void ) {
i2c_init();

delay_msec( 20 ); // 電源投入後 15ms 以上待つ
// LCDC_RS_L(); // LCD RS = 0 コマンド
lcdc_cmdwrite4( 0x33 );
delay_msec( 5 ); // 4.1ms 以上待つ
lcdc_cmdwrite4( 0x33 );
delay_usec( 100 );
lcdc_cmdwrite4( 0x33 );
delay_usec( 100 );
lcdc_cmdwrite4( 0x22 ); // 4ビットモード
delay_usec( 100 );

lcdc_cmdwrite8( 0x28 ); // 4ビット、2行表示、5x7ドット文字
lcdc_cmdwrite8( 0x0C ); // 表示 ON
lcdc_cmdwrite8( 0x06 ); // increment, no shift
// lcdc_write8( LCDC_NOCURSOR ); // カソールなし
lcdc_cls();


このlcdc_initをロジアナで見ればコマンダが見えるはずではないかとやってみたのですが、アドレスの4Eは見えるのですが次が38、また4E、そして38と期待はずれの結果でした。(33が出るはず、、、)
表示の出ないACM1602もアドレスのA0は見えますがその後にはプログラムに書いた数値ではありません。
見方が悪いのかも知れませんが。

画像は全体的なタイミングを見たものです。
ACM1602はSDAが途中で出なくなっていますが、これは表示が出ないので当然の結果です。
全体的なタイミングの印象は大きくは違っていません。

パオさんの投稿にある
・コマンド送信は、ID(0xA0)、0x00、コマンド
・データ送信は、ID(0XA0)、0X80、データ

プログラムを見ると(初心者ですので、、、)そのような動きをする様に記述されています。

#include "i2c_100khz.c" のアドレスをA0にしてやれば動きそうな気がしますが、そうはならない?

むずかしいですねーーー。

Re: ACM1602NI-FLW-FBW-M01 - 笛吹おじさん

2024/12/06 (Fri) 17:36:26

今日は。
相変わらずやっています。
Arduinoで表示がされていますので、i2CのSCL,SDAをロジアナで見ますと、
A00001 A00038 A0000F A00006 初期化の数値が見えます。
ADRS+CMD(00)+Dataの形をとっていますね。

一方、RFC-5の場合はADRSは4Eと出ることは確認したのですが続くデータは異なります。

プログラムの流れをたどってみました(迷走状態ですが)。

void lcd_init2(void)の初期化の最初のdataは0x01はlcdc_cmdwrite4(0x01)ですので同じところの65行の関数に引数(0x01)が与えられます。

ここでi2c_tx( )に引数が渡されますね。
次にi2c_100khz.cの99行目のi2c_tx()に行きます。
ここでi2C_adrsとtxdataに渡され次のi2c_write8()に渡されLCDに初期化データの最初の0x01が書き込まれることになるのでしょう(私の想像ですが)。

i2_adrsとtxdataの間に命令コマンド(0x00)を送る必要が在ると思うのですが?

err += i2c_write8( i2c_addrs );
err += 0x00; <----追加
err += i2c_write8( txdata );
上記の様な泥縄をやってもNGでした(汗)

引数が関数を渡っていくのですが具体的に数値を当てはめてハードの動きを考えるのは、、、わたしには難しいです。

色々細かいところも考える必要が在るとは思いますがおおざっぱにたどるとこんな動きかなと。




Re: ACM1602NI-FLW-FBW-M01 - やどさん

2024/12/06 (Fri) 21:57:30


笛吹おじさん こんばんは。

コマンドが同じだったら簡単かと思ったのですが、そうでは無かったですね。。。
ちょっと、RFC-5でI2Cのプロトコル(の表現でいいのかな?)を簡易ロジアナでじっくり見てみました → 画像添付

で、あっ!と思ったのが、

コマンドは同じでも、LCDモジュールのRS,RW,EN端子にI2CなIOエキスパンダを通して制御信号を繋いでいて、
笛吹おじさんのI2C-LCDとは、ハード的にもI2Cプロトコル的にも違いそう、、という事です。

でも、、
2024/12/02 (Mon) 13:47:08の投稿から、
ちゃんと、ACKが返ってきて、豆腐の表示がクリアされたので、I2Cアドレスとデータ4ビットの順番(配線?)は正しいはずです。

問題は、RS(レジスタセレクト)だと思います。
RS=0でコマンドレジスタ、RS=1のときはDDRAM(表示RAM)が選択されます。
現状、RSが0のままで、表示dataが書き込まれず、コマンドレジスタが誤書き込みされているのではないでしょうか?

ちなみに、WRビットですが、レジスタやDDRAMをリードすることは無いとおもうので、0固定で良さそうです。
あと、EN(データバリッドのイネーブル?)は、決まったタイミングだし、I2C-LCDの場合は、RFC-5のSTM32マイコン側で発行するひつようは無さそうです。

さらに、パオさん情報のように、
・コマンド送信は、ID(0xA0)、0x00、コマンド
・データ送信は、ID(0XA0)、0X80、データ   ← 80のMSBがRSです
となるようにする必要があります。


となると、、、
 LCDC16xn_i2c.c の

 // データ1バイトをLCDに送る
 static void lcdc_write8( int data ) { } の部分の合わせこみが必要そうです。

現状のlcdc_write8は、4ビットモードなので、データ8ビットを上下に分けて、
 ID{0x4E}、{上位4ビット+BL,EN,RW,RS} ← コマンド書き込み時(BL=1, EN=1->0, RW=0, RS=0)
 ID{0x4E}、{下位4ビット+BL,EN,RW,RS} ← コマンド書き込み時(BL=1, EN=1->0, RW=0, RS=0)
のように2回に分けて I2Cでシリアルに送っています。

ここを表示データ書き込み時には、
 ID(0XA0)、0X80、データ にすれば、表示データが正しく書き込めそう。。
 ん? コマンド送信の時、ID(0xA0)、0x00、コマンドに直さないとダメだったら、初期化できたのは何故か??となりますが、、汗;
//

Re: ACM1602NI-FLW-FBW-M01 - 笛吹おじさん

2024/12/06 (Fri) 22:47:36

やどさん、今晩は。
画像はarduinoにつないだ時の物です。

画像上は初期化:01、38、0f、06、delay5ms
画像中はA0,00,01
画像下はA0,00,38 です。
0f,06も同様な形式です。

wire.hをincludeしていますのでwire.hの中身を見ればある程度分かるかと思ったのですが、、、、。
私には無理ですね。

rfc-5の場合は(やどさんの画像)はRSに目を付ける、RS=0かRS=1かを見ている?と言う事になるのかと。

LCDのドット(16個の□)が消えたので初期化が出来たと早合点かも知れません。

RSに注目してプログラムを直せば(追加)すればうまく行くかもですね。

ロジアナの下の数字に直したタイミングはロジアナアプリのオプションですか?


Re: ACM1602NI-FLW-FBW-M01 - やどさん

2024/12/07 (Sat) 02:15:12

>ロジアナアプリのオプションですか?
そうです、PulseViewソフトでは、I2Cのアドレスやコマンド値、データ値をHexで表示してくれてとても便利です。

参考にしたサイトです↓
“ロジックアナライザを試すその2(I2C)”
https://qiita.com/infinite1oop/items/b18197f74864b908a556
“簡易ロジアナを作り、Raspberry PiのI2Cアクセスを見る”
https://zenn.dev/hnz1102/articles/d2680aa4d9321b


Arduinoのようにライブラリでプログラムするのが普通になったので、ハードとソフトの関係が良くわからなくて頭が混乱しますよね。しかもハード(レジスタ設定など)が複雑怪奇になってるので… 汗;

自分はハードを弄ってた世代なので、、ソフトは苦手ですが、、
SDR-3プログラムを弄って、修正もされている笛吹おじさんなら、絶対直せますよ~。(と自分が云うのも変?…)


で、夜中に部品箱さがしたら、秋月で買った? AE-AQM0802という8文字x2行のI2CなLCDモジュールが出てきました。

ST7032というコントローラみたいですが、I2Cでのコマンドやでーたの送り方は似ているので、これで表示できるか試してみたいと思っています。
OLEDなモジュールもスタンバっているのですが、、こっちはコマンドが全然ちがうので、、未着手です。汗;


多分ですが、、
I2Cハードに近い側のi2c.c, Arduinoのwire.hとかは、そのまま使えて、、
I2Cにデータやコマンドを送り出す手順? を決めている、LCDC16xn_i2c.c を直せば良いのではないかと思っています。


PCF8574 + sc1602の場合は、RS,RW,Eの信号もデータと同時にI2Cで送る必要があるので、データを4ビット幅にしなければならなかったですが、
I2C-LCDなら不要なので(RSのみコントロールバイトでおくれば、LCDモジュール側のマイコンが生成してくれて?)、
データ8ビット幅の設定でOKなはず。


そうならば、
lcdc_write8() は、RS=1で、
 ID(0XA0)、0X80、表示データ を各8bitで送る
lcdc_cmdwrite8() は、RS=0で、
 ID(0XA0)、0X00、コマンドデータ を各8bitで送る
に直せば良いのではないか?です。

//

Re: ACM1602NI-FLW-FBW-M01 パオさん URL

2024/12/07 (Sat) 10:56:29

>笛吹おじさん
ソフトウエアはお手伝いできなくてすみません。
ACM1602NI-FLW-FBW-M01 は持っていないのですが、

https://techv.exblog.jp/33817326/
では
「データシートにはMAX100Kまでと書いてありますが、100Kだと誤作動を起こすようです。安全なところで50Kとしました。」

「コマンドやデータを送る前に、0x80や0x00を先に送らなければならない」
と書かれていました。

また、
https://zenn.dev/maedan/articles/84590afbb0fe8b
では初期化と文字表示のソースが公開されていました。ご参考まで。

>やどさん
AE-AQM0802 や同じドライバ IC を使った LCD の在庫があります。
表示成功をお祈りしています。(「他力本願」で申し訳ないです。)

Re: ACM1602NI-FLW-FBW-M01 - 笛吹おじさん

2024/12/07 (Sat) 12:48:18

パオさん、今日は。

>ソフトウエアはお手伝いできなくてすみません。
いやいや私がかってにやっていることですのでお気使い無用でございますよ。

また有益な情報のご提供有難うございます。

トンネルの出口はまだ見えませんが、何となく明るくなってきていますので、、、出ることができるかもです(笑い)

もう暫く藻掻いてみます。

Re: ACM1602NI-FLW-FBW-M01 - やどさん

2024/12/09 (Mon) 00:36:37

笛吹おじさん パオさん こんばんは。

秋月の8文字2行なI2C液晶(AE-AQM0802)で表示させてみました。
実は、何十回も修正してはI2C波形確かめての繰り返し。。汗);

アドレスが合わなかったり、アドレス正しくでているのにLCDモジュールからACKが返ってこなかったり、、アドレス送信後のコントールバイト以降が送信されないなど… うーーむ。。


結果、やっと表示出ました。。汗);
ACM1602NI液晶とST7032のI2Cモジュールでは、I2Cアドレスと初期化設定とRSのビット位置が違いますが、ほぼ同じ送り方で大丈夫だと思います。


以下、修正したファイル名と修正した部分をそのまま記載します。
インターフェースは8ビット幅にしました。Functionレジスタの初期設定は 8ビット幅で設定しています。


< i2c_250khz.c >

const int i2c_addrs = 0x7C; // ST7032 3E: 01111100 ST7032追加
//const int i2c_addrs = 0x4E; // PCF8574 A2..0=111 コメントアウト


< LCDC16xn_i2c.h >

#define I2C_LCD_RS 0x01 // P0
#define I2C_LCD_RW 0x02 // P1
#define I2C_LCD_E 0x04 // P2
#define I2C_LCD_BL 0x08 // P3

#define I2C_LCD_RS0 0x01 // C0,RS=00 for st7032 追加
#define I2C_LCD_RS1 0x40 // C0,RS=01 for st7032 追加


注:
 コントロールバイトは、コマンドライト時は 0x00なのですが、
 0にしてしまうと、txstrの文字列が無いと判定されて送信されなくなるので、故意に0x01にしました。
 ST7032のRSビットはbit6なので、表示データライト時のコントロールバイトは0x40にしています。

//───────────────────────────────────
// データ1バイトをLCDに送る for st7032
//───────────────────────────────────
static void lcdc_write8( int data ) {

char txstr[3];
txstr[0] = I2C_LCD_RS1; // C0,RS=01
txstr[1] = (data);
txstr[2] = 0;
i2c_tx_str( txstr );
}

//───────────────────────────────────
// コマンド1バイトをLCDに送る for st7032
//───────────────────────────────────
static void lcdc_cmdwrite8( int data ) {

char txstr[3];
txstr[0] = I2C_LCD_RS0; // C0,RS=00
txstr[1] = (data);
txstr[2] = 0;
i2c_tx_str( txstr );
}

//───────────────────────────────────
// LCD初期化 for st7032
//───────────────────────────────────
void lcdc_init( void ) {
i2c_init();

delay_msec( 20 ); // 電源投入後 15ms 以上待つ
// LCDC_RS_L(); // LCD RS = 0 コマンド

lcdc_cmdwrite8( 0x38 );
delay_msec( 20 );
lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示
delay_msec( 20 ); // 4.1ms 以上待つ
lcdc_cmdwrite8( 0x39 ); // IS=1
delay_msec( 20 );
lcdc_cmdwrite8( 0x14 ); // Internal OSC
delay_msec( 20 );
lcdc_cmdwrite8( 0x71 ); // 3.3V=0x71, 5V=0x7A(コントラスト)
delay_msec( 20 );
lcdc_cmdwrite8( 0x56 ); // 3.3V=0x56, 5V=0x54 Bon
delay_msec( 20 );
lcdc_cmdwrite8( 0x6C ); // Follower-Cont.
delay_msec( 20 );
lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示 IS=0
delay_usec( 100 );
lcdc_cmdwrite8( 0x01 ); // 表示クリア
delay_msec( 20 );
lcdc_cmdwrite8( 0x0C ); // 表示 ON
delay_usec( 100 );

// lcdc_write8( LCDC_NOCURSOR ); // カソールなし
lcdc_cls(); // ディスプレークリア
}

注:なかなか表示が出なくて,ディレイ時間を多めに設定してました。ST7032だと20ms→2msでOKなはず.
  i2c-sclクロックは250kHzでも問題なく動作します。
//

Re: ACM1602NI-FLW-FBW-M01 - 笛吹おじさん

2024/12/09 (Mon) 12:38:59

やどさん、今日は。
やりましたね!表示が出ていますね。いやいやすごいです。

やどさんの変更部分をコピペして部分的にわたしのLCDに合わせてみたのですが、コンパイルでエラーが出てしまいました。
再検討が必要です。
もう少し時間がかかりそうですね。

Re: ACM1602NI-FLW-FBW-M01 - パオさん URL

2024/12/09 (Mon) 20:10:36

>やどさん
日を越す時間まで頑張った成果、すごいです!
とうとう I2C LCD(ST7032)で表示が出来たのですね。
私もいくつかある同様の I2C LCD で試してみましたが、エラーが出ます。

ところで、間違っていたら申し訳ないのですが、変更箇所を確認させてください。

1 rfc-5_20220906/board/lcd/ 内の「i2c_250khz.c」に
const int i2c_addrs = 0x7C; // ST7032 3E: 01111100 ST7032追加
を追加
//const int i2c_addrs = 0x4E; // PCF8574 A2..0=111 コメントアウト

2 同じフォルダの「LCDC16xn_i2c.h 」に
#define I2C_LCD_RS0 0x01 // C0,RS=00 for st7032 追加
#define I2C_LCD_RS1 0x40 // C0,RS=01 for st7032 追加
を追加

3 「LCDC16xn_i2c.h 」に
// データ1バイトをLCDに送る for st7032
// コマンド1バイトをLCDに送る for st7032
// LCD初期化 for st7032
の3つを追加

ということですが、
追加するのは「lcdc16xn_i2c.c」ではないでしょうか?

もし、そうならば、すでに入っている
// データ1バイトをLCDに送る
などの部分はコメントアウトしなくても動きますか?

Re: ACM1602NI-FLW-FBW-M01 - やどさん

2024/12/09 (Mon) 22:18:13

パオさん、笛吹おじさん こんばんは。

>同じフォルダの「LCDC16xn_i2c.h 」に..

すみません、「lcdc16xn_i2c.c」です。

なんで".h”にしてしまったのか??寝ぼけてたかな、って思って lcdc16xn_i2c.cを見たら、頭のタイトル文字列をコピペしてました・・失敗 汗;;

そして、「lcdc16xn_i2c.c」の中の下記関数を置きかえます。

// データ1バイトをLCDに送る
 static void lcdc_write8( int data ) { }
// コマンド1バイトをLCDに送る
 static void lcdc_cmdwrite8( int data ) { }
// LCD初期化
 void lcdc_init( void ) { }

上記修正で、コンパイルエラーはなくなると思います。


あと、
昨晩 良く把握できなくて書かなかったのですが、
もし、正しいI2Cアドレスを送っているのにACKが返ってこなくて表示しなかったら、下記も修正してみてください。

「i2c_250khz.c」内の関数
 static void i2c_stop( void ) の最後の行で
  I2C_SCL_L(); ← ストップ波形を生成した最後に、SCLをLowにしてますが、
 //I2C_SCL_L(); ← コメントアウトしてPullUpのままにしてみてください。

AE-AQM0802はこの修正でACKが返ってきて表示OKになりました。


さらに:
 さきほど、カウンタ周波数はちゃんと数字表示するかな?と思って、発振器をつないだのですが、、LCD一行目に肝心の周波数が表示しない!? ですぅぅ.. 汗);;

SW長押しでPGモードに入れた時の一行目の表示は全く問題ないのですが??

おかしいぃなぁ、、
文字表示の書き込みは、lcdc_write8( int data ) だけだのはずだと思ったのですが、、他にあるのかな…、、うーむ。。

もしかすると、"Hz""℃"など単位を入れた修正ソースを元に直したため?何か間違えてたかも?
//

RFC-5にi2CーLCDを使う - 笛吹おじさん

2024/11/30 (Sat) 21:55:51

今晩は、スレッド替えました。
やどさん、やってみましたが、表示は出ませんね。
A0、50の両方をやりました。

パオさん、i2cdetectのご紹介有難うございます。
やってみましたI2C-LCDは50と出ました。

Re: RFC-5にi2CーLCDを使う - やどさん

2024/12/01 (Sun) 10:29:05

> 表示は出ませんね

だめですか…
・SDA/SCLがプルアップされていない?
・I2Cスレーブアドレス違い?
 →0x50と出たということは、大丈夫そうですね
・コマンドが違う?
 →表示したサンプルコードの初期化部+文字表示部分をRFC-5/lcd/lcdc16xn_i2c.c に適用してみる

まぁ、サンプルコードで表示しているので前途は明るいですよね、、



Re: RFC-5にi2CーLCDを使う パオさん URL

2024/12/01 (Sun) 16:01:37

>笛吹おじさん
ソフトウエア的な話題にはついていけませんが、ハード的にこの LCD は、
・アドレスは 0X50 なので、送信するのは 0xA0
・I2Cのクロックは100kHzまで
らしいです。

i2c.c で
#include "i2c_100khz.c"
を選んで、
i2c_100khz.c のアドレスを変えてみてはいかがでしょうか?

Re: RFC-5にi2CーLCDを使う - 笛吹おじさん

2024/12/01 (Sun) 16:46:19

今日は。皆様アドバイス有難うございます。
#include "i2c_100khz.c"も駄目でした。

そこでSCL,SDAの動きをロジアナで見て見ました。
使い方をわすれていますので先ずはお試しです。
ずいぶん前に「saleae」のLogic Analyzerを入手しました。8chの安いものです。その時にアプリをinstallしたのですが見当たりません。
そこで適当なアプリを入れて見ました。

画像を見るとアドレス50がLCDに送りだされている様な、、、印象です。
アプリの使い方が良く分かっていませんので、詳細は分かりませんが。

Re: RFC-5にi2CーLCDを使う - 笛吹おじさん

2024/12/01 (Sun) 19:17:23

ArduinoとRFC-5の起動時?の波形を比較してみました。
SCLの時間はRFC-5では周期4us、Duty2us。

Arduinoは周期10us、6ushigh、4uslow

そんなにおおきな違いはありませんね。


i2c_100khz.cを下記の様に変更しています。

const int i2c_addrs = 0xA0; //0x4E; // PCF8574 A2..0=111
const int ic2_period = 5; // ic2 clock period =100kHz(5us*2) 実測85kHz
//const int ic2_period = 2; // ic2 clock period =250kHz(2us*2) 実測170kHz

Re: RFC-5にi2CーLCDを使う - やどさん

2024/12/01 (Sun) 20:43:29

笛吹おじさん パオさん こんばんは。

そうですね、RFC-5ではI2Cアドレスが0x28になっています。
SCL=1のときSDA↓でスタートして、その後SCL↑ごとにSDA値ラッチなので、”01010000"の8bit=アドレス7bit(0101000)とR/Wが"0"の波形です。
続いてACKビットになりますが、LCDからACKの"0"が出ていないです。


試しに、千円くらいで買った 簡易ロジアナ(24MHz/8ch)で見てみました。→ 画像

PCF8574インターフェーのLCDなので、I2Cアドレス0x27 + R/W(0)で、8ビット全体で 0x4E が出て、アクセスされた LCD(PCF8574)から、ACKの"0"が続いています。

でも、0xA0にしても表示しなかったとの事なので、LCD初期化が出来ていないのかと思います。

ちなみに簡易ロジアナですが、sigrokのPulseViewというソフトをダウンロードしてPCで使うのですが、I2Cなどプロトコル解析して表示してくれて とても便利です。コスパ最高です。
//

Re: RFC-5にi2CーLCDを使う - 笛吹おじさん

2024/12/01 (Sun) 22:10:29

やどさん、今晩は。
私も同じロジアナです。PulseViewが見つからず、適当にDLしたものをつかいました。
確かロジアナを購入したときアプリはDLしたのですが、、、、

ACKが返っていないようですね。
何がNGなのか?分かりません。
もう暫く格闘して見ます。


追記
sigrok viewはLinuxですか?

Re: RFC-5にi2CーLCDを使う - 笛吹おじさん

2024/12/01 (Sun) 23:28:28

今晩は。
void lcdc_init( void )これは違うので書き直す必要がありそうですね。
つまり、LCD制御コマンドが異なるのです。
これを書き替えてやってみましょう。
他にもあるでしょうね。

Re: RFC-5にi2CーLCDを使う - やどさん

2024/12/01 (Sun) 23:47:16

笛吹おじさん こんばんは。

> sigrok viewはLinux?

Win11-PCで使っています。
「PulseViewインストール手順(Windows)」でググると頭の方に、インストールと使い方がヒットします。

I2Cアドレス(を含むコマンド?)は
const int i2c_addrs = 0xA0; にして、lcd/i2c.cでコメントされている
//#include "i2c_100khz.c" 行を活かしてください。

パオさんのとおり、i2cクロック100kHzまでだと、タイミングの問題があるのかもしれません。
初期化部の待ち時間も気になります。。。

p.s.
実家の押し入れにあったレトロPC(FM-7)、パワーオン後のBASIC起動画面が出なくなりまして、、
ロジックアナライザでCPU動作見ていました…

超、久しぶりに6809MPUをみてて、昔のマイコンは端子機能が単純だったなぁ、、なんて思っていました。

でも、、原因は全然わからず、、汗;
土日潰れましたぁぁ。。汗;;
//




Re: RFC-5にi2CーLCDを使う - 笛吹おじさん

2024/12/02 (Mon) 13:47:08

今日は。
下記を追加して初期化は出来た様です。
void lcdc_init2( void ) {
i2c_init();

delay_msec( 20 ); // 電源投入後 15ms 以上待つ
lcdc_cmdwrite4( 0x01 );
delay_msec( 5 ); // 4.1ms 以上待つ
lcdc_cmdwrite4( 0x38 );
delay_usec( 100 );
lcdc_cmdwrite4( 0x0F );
delay_usec( 100 );
lcdc_cmdwrite4( 0x06 ); // 4ビットモード
delay_usec( 100 );

lcdc_cmdwrite8( 0x28 ); // 4ビット、2行表示、5x7ドット文字
lcdc_cmdwrite8( 0x0C ); // 表示 ON
lcdc_cmdwrite8( 0x06 ); // increment, no shift
//lcdc_write8( LCDC_NOCURSOR ); // カソールなし
lcdc_cls(); // ディスプレークリア
}

LCD上の16個の四角いドットは電源を入れると瞬間見えますがすぐに消えました。未だ何も表示はされません。
LCDC16xn_i2c.cの変更が必要がも、、、、です。

Re: RFC-5にi2CーLCDを使う パオさん URL

2024/12/02 (Mon) 21:47:58

「ACM1602NI-FLW-FBW-M01」の情報を調べてみました。
・コマンド送信は、ID(0xA0)、0x00、コマンド
・データ送信は、ID(0XA0)、0X80、データ
・コマンド、データ送信の間は5ms空ける
・Initは、以下コマンドを送信する(0x01,0x38,0x0f,0x06)
・表示前に、1行目なら0x80、2行目なら0xc0のコマンドを送る

だそうです。

なお、この LCD のドライバ IC は ST7032 でも PCF8574 でもはなく PIC16F689 だそうです。

https://www.ne.jp/asahi/air/variable/picmel/applications/ACM1602NI/index.html

Re: RFC-5にi2CーLCDを使う - 笛吹おじさん

2024/12/02 (Mon) 23:24:59

パオさん、今晩は。
どうも貴重な情報有難うございます。
ACM1602NIはインターフェースはPic,LCD制御がST7066Uが使われています。
I2C経由でデータをST7066Uに送り込めばLCD上に表示ができることになるのですが、そうは簡単ではなさそうです。
取り敢えず、初期化は出来ている様なのでなぜ文字が表示されないのか?それを今探っています。
SW1,2を押した状態で電源をONすると「DEFAULT SETTING」と出るのですがこれをやっても何もひょうじは出ません。
初期化の部分に文字を出すコマンドを入れて文字が出るのかどうか確認して見たいと考えて居ります。

暗中模索の状態ですね。

パオさん基板 - 笛吹おじさん

2024/11/28 (Thu) 21:57:53

皆さん、今晩は。
送って頂いた基板に部品を取り付けました。
すべて手はんだです。
CPUは8ピンタイプ、Xtalは20MHzのTCXOです。
オリジナルは26MHzですが20MHzでもOKかと思います。
まだ通電はしていませんが、果たして??です。

RF IN2がプリアンプ入力になるかと思いますがこのアンプの回路図はどこかにありますか?

Re: パオさん基板 - やどさん

2024/11/28 (Thu) 23:25:48

笛吹おじさん こんばんは。

パオさんから送ってもらった"8pin.jpg"画像の左下部分にRF IN2のアンプ回路図がありましたが、違ってたらすみません。
回路図的には、5倍アンプか20dBアンプかの選択になっています。(20dB+7dB構成もできます)
//

Re: パオさん基板 - 笛吹おじさん

2024/11/29 (Fri) 00:02:36

やどさん、今晩は。
8pin.jpg"画像はパオさんのブログにありますか?

Re: パオさん基板 パオさん URL

2024/11/29 (Fri) 09:33:55

>笛吹おじさん
まだ間違いがあるかもしれませんが、自作基板の製作方法の記事をアップしました。

特に「20dB 低雑音アンプ」については確認が不十分です。(このアンプは「5倍アンプ」の代替?追加?など・・・)

https://me-yoh.com/make_frequency_counter_11

ご確認をお願いします。
(間違いがあったら、そっと教えてください。(笑))

Re: パオさん基板 - 笛吹おじさん

2024/11/29 (Fri) 18:58:54

今晩は。
基本部分が出来ましたので、プログラムを書き込んでみました。
残念ながらうごきません。
ちゃんとCPUは認識されています、main.hexとCPUメモリのコンペアは異常なし、LCDのSCL,SDA
の信号は出ています、CPUは取り敢えず動いている感じです。
main.hexも前回書き込んでいる実績のあるものです。
20MHzのクロックも出ています。

プログラムの書き込みがまずいのかもですね。
プログラムの書き込みはあっという間に終わります。
何となく書き込みがうまく行っていない様な感じがしますね。

Re: パオさん基板 パオさん URL

2024/11/29 (Fri) 19:22:50

>笛吹おじさん
書き込みの後に自動で Verify(検証)されるので、そこで異常がなければ、正常に書き込まれているので変ですね。

後は「NRST_MODE」の書き換えは、もちろん終わっているでしょうし・・・
我が家でもプログラムの書き込みは一瞬で終わるので違いが分かりません。

Re: パオさん基板 - 笛吹おじさん

2024/11/29 (Fri) 23:12:12

今晩は。
どうもLCDが不良の様です。動いている方からLCDを外して繋げるとちゃんと表示が出ています。
I2Cの高いLCDなのに、、、、何という不運。
参りましたね。

Re: パオさん基板 - 笛吹おじさん

2024/11/30 (Sat) 08:35:42

お早うございます。
I2CーLCD、最初に電源を入れた時、表示が2列されるはずなのですが1列しか表示されていません。
この時点で何かおかしいなー?と気付くべきでした。
ハズレくじを引いたようです。

Re: パオさん基板 パオさん URL

2024/11/30 (Sat) 10:59:15

>笛吹おじさん
無事動作してよかったですね。

表示がおかしい LCD は秋月の「ACM1602NI-FLW-FBW-M01」ですね。3.3V対応で1,700円!

今回の表示異常とは異なりますが、この基板ではデジタル系とアンプ部分を切り離すために(在庫処分のために)3.3V系の LCD を使っています。

5V LCD を使用する場合は電源を別にするか、昇圧回路を追加する改造をしないと正常に表示されないので、ブログの製作記事に注意書きを追加します。

Re: パオさん基板 - やどさん

2024/11/30 (Sat) 11:08:31

笛吹おじさん おはようございます。

I2CなLCDモジュールなのですね!
秋月サイトだとサンプルプログラムが置いてあるので、Arduinoマイコンとかで動作確認すると良さそうです。

で、コントローラとI2Cスレーブアドレスが多分違うので、(だいたいSC1602/HD44780コマンドコンパチが多いみたいですが、)

> rfc-5_20220912/board/lcd/i2c_250khz.c
18行目 const int i2c_addrs = 0x4E; // PCF8574 A2..0=111
は合わせる必要があります。

違っていたらすみません。。
//

Re: パオさん基板 - 笛吹おじさん

2024/11/30 (Sat) 13:15:53

みなさん、こんにちは。

そうですねアドレスの違いがあるかもですね。
秋月のサンプルを見ると
const uint8_t address = 0x50;

となって居ますね。
後でやどさんのアドバイスを試してみます。
PCF8574 変換の場合はロータリーSWでアドレスを設定したような記憶があります。
アドレスをソフトで調べる、、、そんなこともしたような。
80歳の脳みそでは古いことは呼び起せません。

PCF8574変換したLCDは3.3Vでも動くかなとやってみましたNGですね。5Vを供給する必要が在ります。

Re: パオさん基板 - 笛吹おじさん

2024/11/30 (Sat) 14:28:59

今日は。

board.cとboard.hを下記の様に変更しました。
//#include "lcd/lcdc16xn_i2c.c"
#include "lcd/i2c_100khz.c"

i2c_100khz.cのアドレスを50に変更(これ自信がありません)
const int i2c_addrs = 0x50; //0x4E; // PCF8574 A2..0=111

コンパイルすると
board/lcd/i2c_100khz.c:26:20: error: 'I2C_SCL_PORT' undeclared (first use in this function)
26 | stm32_gpio_type( I2C_SCL_PORT, I2C_SCL_PIN, GPIO_TYPE_OD ); // open drain

I2C_SCL_PORT,I2C_SDL_PORT,I2C_SCL_PIN,,,,undeclared
(first use in this function) でエラーになりますね。
includeするのか新たにエラー項目について定義するのか、、、、必要なのかも知れませんね。
秋月のサンプルでLCDが生きているのかをチェックしてみます。

Re: パオさん基板 - 笛吹おじさん

2024/11/30 (Sat) 17:10:53

今晩は。
I2C-LCD生きてました。
使えそうです。良かった!

Re: パオさん基板 - やどさん

2024/11/30 (Sat) 20:03:51

笛吹おじさん こんにちは。

表示バッチリですね!ナイスです。
まぁ、すぐ動いちゃうより、エラー対策など頭を使っていた方が身体に良いですよね!100歳もいけそう…なんて。(^^)/

あと、RFC-5のプログラムの方ですが、、
board.cとboard.hは変更なしでOKです。

→includeしている "lcd/lcdc16xn_i2c.c"が、lcd/i2c.cを読んでいて、更にlcd/i2c_250khz.cが呼ばれています。

なので、lcd/i2c_250khz.cの18行目を 
const int i2c_addrs = 0xA0; // にすれば良いと思います

アドレス0x50を1bit左シフトして0xA0としたのは、I2Cアドレス7bit+R/W1bitの計8ビットでI2Cコマンドになるためなのですが、ちょっと自信ないですが..汗;


また、コマンドがコンパチでない場合も、同じi2c_250khz.cの中の初期化コマンドなどを合わせる必要がありますが、、まずはI2Cアドレス修正で如何でしょうか。
//




Re: パオさん基板 - パオさん URL

2024/11/30 (Sat) 21:01:44

>笛吹おじさん
高価な LCD が壊れていなくて良かったですね。

I2C アドレスを確認する方法ですが、ブログで紹介しています。(宣伝になってしまいスミマセン)
https://me-yoh.com/category/electronics/making_i2c_scanner

この中で ATtiny を使ってハードを作っていますが、それ以外に Arduino で簡単にアドレスを調べる方法を「ラジオペンチさん」が開発されています。
http://radiopench.blog96.fc2.com/blog-entry-520.html
Ardino UNO があればプログラムを書き込んで部品をつなぐだけでパソコン上にアドレスが表示されます。
便利ですよ。

RFC-5 表示用LCD - 笛吹おじさん

2024/11/26 (Tue) 18:51:50

皆さん、今晩は。
私は表示用LCDはパラレルをPCF8574でi2Cに変換したものをつかっています。でもこの変換ICは秋月ではもう売っていません。
他の所にはありますが。
やどさん、パオさんは何を使っていますか?
やどさんは変換されている様な、、、。
パオさんはi2Cタイプをお使いの様な印象です。
i2CタイプのLCD表示器はお値段が高いです。でもポチツてしまいましたが。(年金暮らしには痛いです)

Re: RFC-5 表示用LCD - パオさん URL

2024/11/26 (Tue) 20:41:52

>笛吹おじさん
私は aitendo の I2C 変換器を使用しています。(295円)
https://www.aitendo.com/product/7404

これに、部品箱の在庫の LCD をつなげました。
https://me-yoh.com/modification_i2c-lcd-adapter
https://me-yoh.com/lcd_px1602_display_test
どちらも動作しましたが、配線の変更が必要です。

これなら直結できます。(バックライトなし295円)
https://www.aitendo.com/product/17836
バックライトあり(395円)
https://www.aitendo.com/product/10147

Re: RFC-5 表示用LCD - 笛吹おじさん

2024/11/26 (Tue) 21:53:59

パオさん、今晩は。
思い出しました、パオさんご紹介の変換基板以前使ったことがあります。
PCF8574が搭載されている基板ですね。
忘却の彼方に沈んでしまってまったく記憶がありませんでした。
嫌ですね、お恥ずかしいことですが、歳を重ねるとはこういう事なのですよ。


アイテンドーを見ると在庫なしになっていますね。

Re: RFC-5 表示用LCD パオさん URL

2024/11/27 (Wed) 09:50:37

>笛吹おじさん
失礼しました。aitendo の在庫状況を見ていませんでした。

送料が色々ですが、Amazon で「PCF8574」で検索すると、変換アダプタが1個200円以下で売っているようです。

本当は安価な「ST7032」を使った I2C LCD を直付け出来ればよいのですが、プログラムのどこを変えればよいのか分かりません。(悲)

Re: RFC-5 表示用LCD - やどさん

2024/11/28 (Thu) 23:14:59

パオさん、笛吹おじさん こんばんは。

こちらも、PCF8574を積んたSC1602(HD44780)なLCDです。

ST7032なLCDを秋月サイトでみていたら、
・基本的なコマンドは、一般的なパラレル接続のSC1602と同じです
・基本的なWireコマンドで制御できます。・I2Cアドレスは0x3Eです

とありました。(AQM1602XA-RN-GBWのデータシートで)

とすると、I2Cアドレスを合わせれば、動くかもしれません。(待ち時間とかの問題あるかもですが…)

F:\rfc-5_20220912\board\lcd
i2c_250khz.c:
 18 const int i2c_addrs = 0x4E; // PCF8574 A2..0=111 -> ST7032の 0x3Eに変更

board\には、#define OLED_SSD1306_I2Cのプログラムもあったので、SSD1306のOLEDも使えそうです。

Aliで100円くらい?だったSSD1306のOLEDが余ってるはずなので、(記憶が… 汗;;)試してみようかな。。
表示文字が小さいですが、視認性がいいので組込み用に良さそうです。
//


Re: RFC-5 表示用LCD パオさん URL

2024/11/29 (Fri) 17:51:40

>やどさん
秋月の AQM1602XA-RN-GBW (aitendo の似たような I2C LCD 等)が使えると、すごくいいですね。
変換基板が省けて LCD のサイズも小さいので、組み込みに自由度が増します。
電池の持ちも良さそうです。

横長の OLED も使えると見やすくて最高ですが、キャラクタ LCD 以外に移植するのは大変そうですね。

どちらにしろ、Arduino IDE でライブラリがないと何もできない私には無理そうです・・・

RFC-5 プリント基板が出来ました パオさん URL

2024/11/10 (Sun) 20:59:40

ブログの記事は出来ていませんが製作した RFC-5 のプリント基板を組み立ててみました。

基板上には「5倍アンプ」と「20dB 低雑音アンプ」を選択出来るようになっていますが、まだ、「5倍アンプ」のみですが正常に動作しましたので、ご報告いたします。(現状で最大は 190MHz まで計測できています。)

>Ojisankoubou 様
「20dB 低雑音アンプ」とプリスケーラ基板の動作が確認できた後になりますが、この基板を配布してもよろしいでしょうか?(十数枚の予備があります。)
もちろんお代は頂かない「無料配布」の予定です。

これだけ素晴らしい機能の RFC-5 が(比較的)手軽に
作れるようになって、皆様のお手元に届けば良いなぁと考えております。

Re: RFC-5 プリント基板が出来ました - Ojisankoubou

2024/11/11 (Mon) 07:45:28

> 「20dB 低雑音アンプ」とプリスケーラ基板の動作が確認できた後になりますが、この基板を配布してもよろしいでしょうか?(十数枚の予備があります。)
> もちろんお代は頂かない「無料配布」の予定です。

もちろん OK です。
商用目的でない限り(無償または実費程度ならば)自由に配布・頒布して構いません。

Re: RFC-5 プリント基板が出来ました - パオさん URL

2024/11/15 (Fri) 12:40:16

>Ojisankoubou 様
自作基板の「無料配布」の許可を頂きありがとうございます。
ブログの記事を公開させて頂きました。

https://me-yoh.com/make_frequency_counter_10

なお、必要ないかもしれませんが、
Ojisankoubou 様
RFC-5 に書き込みを頂いた
やどさん
笛吹おじさん 様

にはご連絡を頂ければ、今回製作した基板を取り置きしておきますので差し上げます。
(機能確認の環境がないので、試験して頂きたいというのが本音ですが・・・)

Re: RFC-5 プリント基板が出来ました - やどさん

2024/11/16 (Sat) 12:21:38

パオさん、こんにちは!

ブログもみました、すごいです!
基板が余りましたら是非使ってみたいです。
20pinMCU用とプリスケーラ用基板予約お願いします 汗);
→ 別途ご連絡してSASEお送りいたします。

//

Re: RFC-5 プリント基板が出来ました パオさん URL

2024/11/16 (Sat) 13:49:09

>やどさん
3名分のプリント基板は別に保管していますので、住所が分かり次第お送りします。

>Ojisankoubou 様
ちなみに、こちらの掲示板にメールアドレスは記載しない方がよろしいでしょうか?
もし、記載がまずいようでしたら、ブログの記事へのメッセージをお願いいたします。
メッセージは公開せずに直接返信いたします。

よく見たら、掲示板にメールアドレス入力欄がありました。
失礼いたしました。

Re: RFC-5 プリント基板が出来ました パオさん URL

2024/11/16 (Sat) 22:54:18

>笛吹おじさん 様
大変申し訳ありません。

書き込み頂いたメッセージが、こちらの手違いで消えてしまったようです。
大変申し訳ありませんが、「pao@me-yoh.com」までご連絡ください。

Re: RFC-5 プリント基板が出来ました - 笛吹おじさん

2024/11/25 (Mon) 17:33:27

パオさん、基板届きました。
どうも有難うございます。

Re: RFC-5 プリント基板が出来ました パオさん URL

2024/11/25 (Mon) 19:21:46

>Ojisankoubou 様
おかげさまで、RFC-5 基板を希望される方から連絡を頂き、着々と発送しています。

その中で、バグ修正をしたバイナリを希望される方がいました。

さすがに私がコンパイルしたファイルをブログで公開するのはまずいと思ったのですが、問い合わせのあった方に個別にファイルを送ってはいけないでしょうか?

Re: RFC-5 プリント基板が出来ました - Ojisankoubou

2024/11/26 (Tue) 07:08:43

> 問い合わせのあった方に個別にファイルを送ってはいけないでしょうか?

もちろん OK です。

RFC-5 バグ修正 - Ojisankoubou

2024/10/26 (Sat) 13:25:51

RFC-5 のページにバグ修正を追記しました。

ソースの修正部分のみなので各自修正・再コンパイルしてください。

  入力周波数が 110MHz ぐらいのとき演算がオーバーフローしておかしくなる対策
   freqcounter/freqcounter_measure.c の 197行目
    int div = (f*WATCHDOG_MS)/2000;      を
    int div = ((f/10)*WATCHDOG_MS+100)/200;  に修正

Re: RFC-5 バグ修正 - 笛吹おじさん

2024/10/29 (Tue) 19:09:53

今晩は。
バグの修正をやりました。
コンパイル法、書き込み法、すべて忘却の彼方に行ってしまった老人には難しいい状態です。(笑い)
何とかコンパイルしてSTLINKで書き込みをしたのですがコネクトできずプログラマーのVersionを上げたり試行錯誤。
コネクトできる時もあり書き込みをしたのですが、結局CPUがおかしくなったようです。
新しいCPUに載せ替えてうまく書き込みが出来ました。

動作はしていますが、温度表示がメニュー操作をするにしたがって30℃台からどんどん上昇していきます。
画像では61度ですがそのままメニューカラ抜けてほって90度位になりました。

私のコンパイル、書き込みが悪い可能性が在りそうですが、どなたか?おやりになった方ご一報頂ければ有難いです。


追記
どうも電池電圧が下がっていたようです。
外部電源に切替てOKになりました。
お騒がせしましてすみませんでした。

Re: RFC-5 バグ修正 - パオさん URL

2024/11/10 (Sun) 15:39:19

>Ojisankoubou 様
RFC-5 のバグ修正ありがとうございます。
少し時間がかかりましたが、ソースを修正して当方でも問題なく動作しています。

>笛吹おじさん 様
電池電圧が下がると、その様な動作になるのですね。
参考になります。

RFC-5 の入力切替 - パオさん URL

2024/10/09 (Wed) 20:47:03

やどさん様、トーク中にすみません。

私もやっと gcc の設定をしてプログラムの書き換えが出来る環境ができました。

そこで、20 Pin の STM32G031F6P6 で
1 クロック入力の確認("ERROR HSE"は消えました。)
2 RF 入力の確認(自分のオシレータの周波数を確認できました。)
3 I2C 端子の入れ替え
4 SW 入力端子(PA13)の入れ替え
までは出来ましたが、RF 入力(PB5)の入れ替えが出来ません。

>また、タイマー入力 PB5は20pinに配線しました。
やどさん様は RF 入力の入れ替えに成功されたようですが、具体的にはどこを書き換えましたか?

Re: RFC-5 の入力切替 - やどさん

2024/10/10 (Thu) 01:01:02

パオさん、こんにちは。

"ERROR HSE"が解消したら、もう動いたようなものですね!

RF入力の入れ替えですが、
配線のつなぎかえだけで(プログラムの変更なし)OKです。プリアンプ出力線をモジュールのB6(20pin)に接続してみてください。

TSSOP20パッケージの STM32G031F6P6だと、LPTIMタイマ入力であるPB5ポートが20pinにあるからです。
元のSOP8ピンパッケージだと、SWCLKと同じ8pinにPB5が割り当てられていました。

ps.
LPTIM がないSTM32G030F6P6ではカウント動作するはずがないのですが… モノに聞くと動きます。
PB5端子はプルアップされていて動作周波数範囲が狭くなってみえるようです。PB1/0には約100Hzが出てきます!
Aliのチップがフェイクなのか、STM32G030にも仕様として隠しているLPTIMが搭載されていると思われます。
//

Re: RFC-5 の入力切替 - Ojisankoubou

2024/10/10 (Thu) 06:35:05

PA14 が Pull-down されているのを使って、PB5(LPTIM1 IN) を Pull-up して入力を中間電圧にバイアスしています。 STM32G031F6P6 では PA14 とつながっていないので PB5 につながっている適当なポートで Pull-down してやる必要があります。

>やどさん
STM32G030 に LPTIM がのっているのはおもしろいです。 昔、FLASH が小さいはずなのに上位 CPU と同じ大きさがあるということもありました。 上位 CPU でチップを作って ID だけ変えているのでしょうかね。

Re: RFC-5 の入力切替 - パオさん URL

2024/10/10 (Thu) 21:53:19

Ojisankoubou様、やどさん様ありがとうございます。

アドバイスどおりにB6(20Pin)に信号を入れても、20MHz 位までしかカウントしないのでファームをオリジナルに戻しましたが変化なし・・・と思ったら、プルダウンが必要なのですね。(データシートにはちゃんと書いてありました。)

書き換えるのが面倒なので、外付けで30~40kΩでプルダウンしたら110MHz 位まで行けました。
(オリジナルのファーム用の接続図です。)

これで一応動作することが確認できました。
後は、叶えたい夢として2つの機能があります。

1 余ったポートにスイッチを付けて「長押し」せずにメニューを出す。(値を保存する。)
2 RF IN を切り替える。
素人考えですが、PB5(LPTIM1_IN1)とPB7(LPTIM1_IN2)で切り替えることは可能でしょうか?

Re: RFC-5 の入力切替 - やどさん

2024/10/10 (Thu) 22:55:16

パオさん Ojisankoubou様、こんばんは

動作した件、ナイスです!
先ほどまで、パオさんと同じく、外付けボリュームで最適なプルダウン値を調べてました。

こちらも約34kΩで感度が最良になったので、ひとます33kΩの固定抵抗をつけました。
5倍アンプとひどい配線ですが、約210MHzまで正しくカウントしています。やったー (^^)/
→ TinySAから-7dBmの入力時で,50Ωの終端なしの場合です

パオさんのブログはすごく見やすくて内容も大変参考になります。本日、Xの方もフォローさせていただきました。Tnx!
あっ、やどさんに"様"は不要です。念のため ^^);

Ojisankoubou様

RFC-5のSTM32G031(SOP8)は、PF2/NRST端子をI2C_SDAとして使っていますが、
STM32G031x4/x6/x8のデータシートを検索してもI2C_SDAとマルチされている記述がみつかりません。
これも隠し(?)機能なのでしょうか?(見逃していたらすみません)
//

Re: RFC-5 の入力切替 - Ojisankoubou

2024/10/11 (Fri) 06:44:33

>パオさん

LPTIM1_IN2 はクロック入力としては使えなかったと思います。 LPTIM2_IN1 を使って出力を切り替えるというのはどうでしょう。

>やどさん

ソフトウェア I2C なので GPIO として使っています。

Re: RFC-5 の入力切替 - やどさん

2024/10/11 (Fri) 07:53:04

> ソフトウェア I2C なので GPIOとして

そうか、、内蔵I2Cモジュールを使っていると思い込んでいました。汗);
8ピンマイコンの数少ない端子を使って実現した、もう匠の技ですね!

Re: RFC-5 の入力切替 - パオさん URL

2024/10/11 (Fri) 13:10:08

>Ojisankoubou様

>LPTIM2_IN1 を使って出力を切り替えるというのはどうでしょう。
20 Pin の STM32G031F6P6 の LPTIM2_IN1 は PB1 のみなので難しそうですね。
入力切替はあきらめて、ハード的な方法にしてみます。


>やどさん
素人の記事を色々とご覧いただき感謝です。
X のフォローバック致しました。


ところで、当方、ソフトは Arduino IDE で LCD に文字を書いたりする程度のレベルなので掲示板汚しになって恐縮ですが、gcc について基本的な所を教えて頂けると助かります。

RFC-5 の「ソフト」欄に記載されている「ソースファイルを解凍したフォルダと同じ階層に「STM32Cube_FW_G0」を置いてください。」

の意味ですが、
1 RFC-5 の解凍したソースファイル(2種類あればそれぞれ)のフォルダー内に
2 「STM32Cube_FW_G0」を解凍した中身(430MB,23,000個のファイル)をソースファイルのそれぞれに置く

という事なのでしょうか?
(現在はそうしているのですが・・・)

Re: RFC-5 の入力切替 - やどさん

2024/10/11 (Fri) 20:17:58

パオさん、こんばんは。

>「STM32Cube_FW_G0」を置く階層

解凍した"RFC-5"のソースフォルダと横並びに(同じディレクトリに) "STM32Cube_FW_G0_V1.3.0"フォルダーを置けばOKです。

→掲示板の2022/09/09 (Fri) 14:03:48 "RFC-5 レシプロカル周波数カウンター" by.笛吹おじさんのスレッドに参考になる説明があります。

あと、Xに"いいね"も頂き恐縮です。一昨年からゴタゴタしたりで呟くのが少ないですが、よろしくお願いします。
それと全然"素人"じゃないです。ブログの構成や説明文と図表の割合とかも、とっても凄いと思います。
自分もブログ挑戦したことがあるのですが、、記事ひとつ仕上げるのに1,2日はかかってしまうので、無理~って、止めてしまいました。汗);
//

Re: RFC-5 の入力切替 - Ojisankoubou

2024/10/12 (Sat) 08:52:56

>「STM32Cube_FW_G0」を解凍した中身(430MB,23,000個のファイル)

使っているのはヘッダーファイルだけですので、
 STM32Cube_FW_G0_V1.3.0\Drivers\CMSIS 7.1MB
以外は削除してもOKです。

Re: RFC-5 の入力切替 - パオさん URL

2024/10/13 (Sun) 21:09:20

>Ojisankoubou様
失礼しました。
過去の掲示板は一通り見たつもりだったのですが、2022/09/09 のスレッドは見ていませんでした。
そのままの内容が書かれていますね。

私のように迷った方用に、解凍した STM32Cube_FW_G0_V1.3.0\Drivers\CMSIS の場所とソースファイルの位置関係を図にしました。
(ドキュメントフォルダだけ残しました。)

おかげさまで、確認用、オリジナル版とPG追加版の3か所に入れていた「STM32Cube_FW_G0」が、1つのヘッダファイル群だけになったのでHDD内がスッキリしました。

次はプリント基板を作ってみます。
動作したらご報告します。

Re: RFC-5 の入力切替 - Ojisankoubou

2024/10/14 (Mon) 07:00:28

すみません、書くのを忘れていました。
CMSIS フォルダーの中にもいらないファイルがたくさんあり、私は、
 Core
 Core_A
 Device
 Include
フォルダー以外は削除しています。

本当に必要なヘッダーファイルは残したフォルダーの中のほんの一部のファイルなのですが、ヘッダーがヘッダーを呼ぶようになっていて面倒なのでそのままにしています。

APB-1 Sweep Generator?(2) - 笛吹おじさん

2024/10/09 (Wed) 08:56:32

やどさん、お早うございます。
永くなったのでスレッドを変えました。
AD9833はサイン波のQualityがあ良くないですが、Sweep Gen.の信号源には使えるのではと思います。
Proicessingもうまく行っているようですね。私はAIはやりませんが、プログラム作成の手段としてはいいかもです。最近AIの能力が格段に上がったようです。
最終的には人間が手直しをして使いやすさを実現する必要が在りそうです。
Proicessingも支障がない様でした開示して頂ければ幸いです。

Re: APB-1 Sweep Generator?(2) - 笛吹おじさん

2024/10/09 (Wed) 11:48:42

今日は、私もCHAT GPTでAD9833のプログラムを造ってもらいました。
でも、Sweepが開始されません。この辺は自分で直すしかないようです。

Re: APB-1 Sweep Generator?(2) - やどさん

2024/10/09 (Wed) 20:38:36

笛吹おじさん、こんばんは。

ChatGPTも使われたのですね。
はじめ無料のChatGPTで同じ指示文でAD9850ボード用のコードを作らせたのですが、こちらもSweepSin波が出なかったです。。
→なんかリセットの位相が逆?でもダメ

ググると無料版ChatGPTは古い情報と思考のままだとか…
Copilotは無料で使える個人版でも、最新モデル?のGPT-4 Turboが導入されているという記事を見つけてCopilotを使いました。

難しいのは、的確な指示文(プロンプト)を書く事ですね。ChatGPTが生成する日本語より自分の方が下手ですし…(笑)
でも、ChatGPTにプロンプトメーカーというのが在って、これで直した指示文をCopilotに喰わせれば優秀な答えが返ってくるんじゃ?とか考えてます。まだ試してませんが 汗;


で、本題です。→ 画像

昨晩作らせたProcessingプログラムで、真空管FMラジオのレシオ検波出力測定値を、シリアル受信しながらグラフ化したS字カーブです。
→ ArduinoのARef=5Vのままで10bitAD測定なので、見栄えが良くなるように縦軸スケールを弄ってまして、実際の電圧ではないです。

不思議なことに、無料のChatGPTで作らせたら特にエラーなくできたのですが、Copilotで同じ指示をしたら、エラーやらグラフ描かないはで、1時間以上かかりました。汗);
まぁ、Processingって何?っていう人が1時間程度でできたなら、全然OKですけどね…

ChatGPTに指示した文です。(ArduinoのスイープGenコードの生成に続いて行っています)

・PCでProicessing4を使ってArduinoからの周波数と電圧値を受信してグラフを描く方法を教えて
・X軸をスイープ周波数に合わせたい
・Y軸に電圧値を表示したい
・X軸にもラベルを付けてほしい
・X軸のラベルは100kHz刻みにして
こんな いい加減な?指示文でできてますw

あと、
Arduinoの方は、スイープ開始・終了周波数を固定して、電源ON(リセット)1秒後にスイープが始まるように修正しました。
また、AD9850は正弦波出力だと振幅が小さいので、矩形波(5V)出力にしてスイープしています。
//

Re: APB-1 Sweep Generator?(2) - 笛吹おじさん

2024/10/09 (Wed) 21:21:06

やどさん、今晩は。
Proicessing4でのグラフ作成もうまく行ったのですね!私はまだそこまで言っていません。
AD9833のプログラムをいじって動かなくなってしまい、そのままになっています。
Proicessingについては今一理解不足状態で時間がかかりそうです。
しかし、やどさん、すごいです。短時間のあいだにほぼ期待通りの結果をだしたなんて。

もう少し、悪戦苦闘して見ます。どうもお疲れさまでした。

Re: APB-1 Sweep Generator?(2) - 笛吹おじさん

2024/10/11 (Fri) 16:32:32

今日は。
私のPCのUSBシリアルは色々なアプリで使っているせいかどうもうまく動作しない傾向がある様です。
スタンドアローンで結果をLCD表示器に表示できるようにすることができればいいと思いますが、、、、

古いノートPCがありますので、それでやってみることにします。

Re: APB-1 Sweep Generator?(2) - やどさん

2024/10/11 (Fri) 22:08:14

笛吹おじさん、こんばんは

ちょっと考えたのですが、
10MHzなどSIN出力する動いている実績のあるプログラムを基に修正・追加してくのが良さそうです。

動いたコードの修正や機能追加ならば、ChatGPTでも大丈夫そうです。
動かなくても状況を伝えるとデバッグや修正コードを造ってくれます。


・例えば、こんな指示文でいけると思います

→ 下記のArduinoUNOのコードを修正して、9600bpsで接続したシリアルモニタからサイン波の周波数を設定できるようにしてください。周波数設定後に10msのディレイをいれてください。初期周波数は1MHzにしてください。
(指示文のあとに、動作したコードも貼り付けてChatGPTやCopilotに送信)


・問題なければ
 次に
→ 開始周波数と停止周波数を"1000000 2000000"の様にシリアルモニタから入力して、その周波数間で1kHz毎にスイープするように修正してください。

・ダメだったら
→2MHzになってしまいます。とか、
 初期周波数で出力するけど、スイープしません。とか、症状を伝えて、対策コードを出させます。
→ 何が悪かったの? とか聞くと、教えてえてくれます。

あと、 "HD44780互換の16x2 LCDディスプレイに表示して"、とかも できそうです。
//

Re: APB-1 Sweep Generator?(2) - 笛吹おじさん

2024/10/11 (Fri) 22:37:21

やどさん、今晩は。
なるほど、そんなやりかたもありますね。
相手がAIですので何回でも聞き直せますので、いろいろ聞き方を変えながらやってみます。
有難うございました。


Copyright © 1999- FC2, inc All Rights Reserved.