記事内に広告が含まれています

KT0936M(B9)にオプション機能のパラメータを書き込んだEEPROMを接続して使ってみる

電子工作

はじめに

日々忙しい中でもようやく少し電子工作を楽しむ時間ができたので、過去の電子工作作品で取り組めて案件を少しづつ棚卸しを始めました。一つ目は、M5STACK用DSPラジオモジュールのCORE2、CORE S3での動作検証です。BASICやFIREといったCOREseriesだけでなくCORE2とCORE S3でも無事に動作させることができました。こちらについては拙作ですが、少しでも参考になればと思い、BOOTHにてラジオモジュールをご購入頂いた皆様にはご提供させて頂きました。

二つ目の棚卸しは同じくラジオ関連ですが、こちらの記事でご紹介したKT0936M(B9)を「EEPROMに設定したパラメータで動かす事が出来るのか?」を実際に検証することです。結論から言いますと、EEPROMに書き込んだパラメータ値で動作させることが出来たのですが、ネット情報には整理された情報が少なく手間取ったので、今回の記事ではEEPROMへのパラメータ書き込みについての一連をお話ししたいと思います。

準備すべきもの

EEPROMの選定

KT0936M(B9)のデータシートには次のような記述があります。

「電源ON時の初期化前に、例えば24LC02のような外部EEPROMに保存された内容を読み込むことができるI2Cインターフェースを備えています。」との記述があります。私は、この英文を少々もやもやしながらも、EEPROM容量は2Kbit以上あれば大丈夫だよな? と思いネットショップでATMEL社製のAT24LC64Aを購入し検証を始めることにしました。

書き込み装置と書き込み用ソフトウェアの選定

一方で、ネット上ではKT0936M(B9)にEEPROMを接続して使用する前例があまりないのですが、断片的な情報をつなぎ合わせると、EEPROMへパラメータを書き込む装置と書き込み用のソフトウェアが必要となります。

EEPROMへの書き込み装置としては、かなり前にPICマイコンの学習をするぞ!と意気込んでいた時に購入していた手持ちのPICKIT3を使用すればよいことがわかりました。またソフトウェアについては、MPLAB X IPEはEEPROMへのデータ書き込み用には使用することができず、少し古いソフトであるPICkit3 Programmer V3.1を使用する必要があることがわかりました。

ここで注意点として、私のPC環境によるものかもしれませんが、PICkit3 Programmer をインストールしたフォルダー(C:\Program Files (x86)\Microchip\PICkit 3 v3)にフルコントロール権限を与えておく必要がありました。ソフトウェアがこのフォルダー内に*iniファイルを作成するのですが、書き込み権限が無く、保存できないためエラーになるようです。プロパティーセキュリティからフルコントロール権限を許可して下さい。(あるいは、Program Files 以外のフォルダーにインストールできれば問題無いかもしれません)

書き込み装置とソフトウェアの準備させてできれば、あとは、PCとPICkit3をUSBで接続、PICkit3とEEPROM は適当なジャンパー線を使用しI2C接続してPCがPICkit3を認識し、PICkit3がEEPROMを認識すればひとまず成功です。

PICKit3とEEPROMの結線

EEPROMに書き込む設定パラメータについて

では、書き込むべきEEPROMの内容はと言うと、これまたネット情報が少なく、数少ないとあるサイトで紹介されているのデータを参考にさせていただき、購入した24LC64のアドレス0x00番地から0xFF番地までの2Kbit分を書き込んで試すことにしました。PICkit3を使用してEEPROMへの書き込みは特に問題無く終了し、いよいよKT0936M(B9)にEEPROMを接続し電源ONできる瞬間がやってまいりました。

ところが、KT0936M(B9) with EEPROMとの接続は正しく出来ているのですが、電源ON後すぐに8番端子に接続したTuninng indicator用のLEDが点滅し、EEPROMの内容を読み込んでいないようです。

ここで、最初のもやもやが頭をよぎりました。もしかして、2KbitのEEPROMしかダメなのではないのか?と。データシートでは24LC02を例としてあげているが、品番の例であって、容量は2Kbitのみ対応しているのではないのか・・・。そのことを念頭に再度英文を読んでみると、

「電源が投入されると、KT0936M(B9)はEEPROMに保存されたすべてのデータを読み取り、それらを内部レジスタバンクに書き込みます。」

すなわち、2kBit以上の容量を持つEEPROM内のすべてのデータを読み込めないためにエラーになってしまうのではないかと。(24LC64のメモリ構成が8K x 8なのでNGなのか?と推測)

あいにくDIPタイプEEPROMの入手性がよくなかったため、Aliexpressから24LC02を含むEEPROMROMセットを購入し、約1週間後に再検証することとしました。

EEPROMが到着し2Kbitの24LC02Bで試したところ、今度は無事にTuninng indicator用のLEDは点滅することもなく、KT0936M(B9)はEEPROMから2Kbit分のデータを読み込むことができたようです。

結論的には、メモリ構成が理由だったのかどうか真相はわかりませんでしたが、24LC02(256×8)、04(256x8x2)、08(256x8x4)、16(2Kx8)は使用できて、24LC32(4Kx8)、64(8Kx8)は使用できませんでした。

準備するものリスト

  1. 2Kbit EEPROM(24LC02など)
  2. PICkit3(または類するEEPROM書き込み装置)
  3. PICkit3 Programmer V3.1(または類するEEPROM書き込み用プログラム)
  4. ジャンパ―ワイヤー(PICkit3とEEPROMとの間の接続用に必要)
  5. 300Ω~10kΩ程度の抵抗(I2Cラインのプルアップ抵抗。KT0936M(B9)を接続している場合は内部プルアップ抵抗47KΩで代用可能)
  6. KT0936M(B9)モジュール

PICKit3 Programmerの使い方

  • PCとPICkit3をUSBケーブルで接続しPICkit Programmer V3.1を起動させる。
  • MPLABモードからPICkitモードへの切替
    初めて使う場合は、Tool – Download PICkit Operating System を行う。
  • Device Family からEEPROMを選択し24LCを選択する。
  • Deviceの選択肢から24LC02Bを選択する。
  • 中央にHEXでパラメータを入力し、Writeで書き込みできます。このとき、PICkit3から電源供給する場合は、VDD PICkit3 On にチェックを入れておきます。
  • 書き込みが上手くいかない場合は、USBケーブルを抜き差し「Tool-Check Communication」でPCとPICkit3の再接続を行ったり、EEPROMの選択を再度行ってみると良いようです。
  • EEPROMへの書き込みや読み込み時に、VDD PICkit3にチェックマークが入っているかどうかも確認が必要です。
  • 入力したパラメータは、File – Import / Export で”.bin”ファイルとしてPCに保存したり、PCから読み込んだりできます。
  • 使用後は、PICkit3をMPLABモードに戻しておくのがよさそうです。

パラメータ設定について

すべてのパラメータ設定について試してはいませんが、基本的にはデータシートに記載されている通りのアドレスに必要なパラメータ値を書き込みすれば問題はありませんが、使用するパラメータは、FM、AM、SWのいずれも周波数間隔と周波数範囲の設定がメインになるかと思いますが、Audio Gain ControlやAM Selection filter bandwidthを変化させてみるのも面白いかもしれません。

ここで、重要なことがわかったのですが、データシートには記載されていないレジスタ設定として、少なくとも0x02 と0x03に適切な値が書き込まれていないとEEPROMから読み込めない(読み込まない?)ようで起動できません。書き込む値は、それぞれ”4B”と”54″であることには気を付けて下さい。(もちろん、他のレジスタにも値が記載されていないとラジオを聴くことができません)

おわりに

通常の日本のラジオ放送を聴くための使用であれば、EEPROMにパラメータ設定値を書き込む必要もないのかな?と思いますが、ICを使い倒すようなマニアックに楽しみたい場合はなかなか面白いかもしれません。

最後まで読んでいただいたマニア向けにクイズを出させて頂きますと、上記「パラメータ設定について」で記載しました”4B“と”54“の意味がわかりますか?KTMicroの他のラジオIC KT0913やKT0937をデーターシートをよく読んだ方ならピンとくるかもしれませんね。

個人的には重要な内容がちりばめられた記事にできたと思いますのでお気に召しましたらご支援を頂けると嬉しいです🙇

コメント

タイトルとURLをコピーしました