獣医さんの電子工作とパソコン研究室
 
 40−3.H8/3664 内臓512バイトEEPROMの使用とシリアル通信

以下の内容は、ルネサスHEWでの開発を前提にした内容となっております。
また、あくまで私的に実験した内容ですので、間違っている部分もあるかと思います。

 

 ■ シリアル通信(RS232Cによる通信)

 シリアル通信ポートを使用してみました。これが利用できると、デバッグ時にもプログラム中にシリアルポートへの出力をプログラム中に散りばめて置くことで、どこで止まっているのかを知ることができます。 使用に際してはいくつかのポイントがありました。

 
  シリアルポート使用関数群
  file:SCI_232c.h
  TEKUROBO工作室 109.パソコンとシリアル通信する を参考にさせていただきました。
  
http://homepage1.nifty.com/rikiya/software/109serial1.htm
  とりあえず動作していますが、エラー処理がいい加減です。
 
  使用するポート
    ●P21 RxD , P22 TxD
 い
 SCI_init( void )
 SCI_rx( void )
 SCI_tx( char data )
 SCI_print( char *str )
 SCI_crlf( void )
 SCI_print_hex(int digit, unsigned long data)
 SCI_print_dec( unsigned long data )
 SCI_wait_msec(int msec)
シリアル通信初期化ルーチン
シリアル1文字受信ルーチン
シリアル1文字送信ルーチン
シリアル文字列送信ルーチン
シリアルポートへ CR/LFを送信
数値を指定した桁数で 16進文字列として送信
数値を10進文字列として送信1文字表示
ウエイトサブルーチン
 
   
  AKI-3664N実験資料
  (エクセルファイルをLZH圧縮)
  1.裏側から見たピン配置
  2.ピン対称一覧表
  3.実験回路図
 
   シリアル通信関係関数 SCI_232c.h
 
 次に、SCI関連レジスタ設定の様子を示します。

 レジスタの設定で、PMR1-Bit1 TXDビットを1にしないと送信されません。
このレジスタだけ関係ないところにあるので、最初は気づきませんでした。
 
 SCI関連関数の実際の使用方法は、ページ最後に掲げてあるサンプルプログラムをご参照ください。
 
 ■ 内臓EEPROMを使う
 H8-3664Nの本体に4Kビット(512バイト)のEEPROMが内蔵されていますので、これを利用したいと思います。
このEEPROMへのアクセスはI2Cインターフェースを利用してアクセスします。
 最初はルネサスのアプリケーションノート「EEPROMリード・ライト」j502130_apn.pdf を参考にしたのですが、どうもうまく動作しません。いろいろ調べているうちに3664N内臓のEEPROMはいろいろ問題があるらしいことがわかりました。
こちらの記事をご参照ください。H8 Mailing List archive
   [H8-ML(4672)] Re: 3664Nの内蔵EEPROMへのアクノリッジポーリング動作について

適当なところにウェイトを挟み込むことで動作しているものができました。

 
  I2C EEPROM使用関数群
  file:IIC_EEPROM.h
  ルネサスのアプリケーションノートを参考にしました。
  バイトリード/ライトしか動作確認はしていません。
 
  使用するポート
    ●P56 SDA、P57 SCL 両ポートは10kΩの抵抗でプルアップしておく。
 い
 EEPROM_init() 
 Write_byte_EEPROM( unsigned short adrs , unsigned char wr_data )
 Read_byte_EEPROM( unsigned short adrs )
 
ポートのイニシャライズ
指定したアドレスに1バイト書込み
指定したアドレスから1バイト読込
 
内臓EEPROM読み書き関数  IIC_EEPROM.h
 
ポート設定部分です。
使用するときには、P56、57を入力に設定するのと、データを0x00にしておくことが必要です。
 
ルネサスのアプリケーションノートにプラスした場所です。
書込みでは下赤丸部分への10msのウエイトの挿入が必須です。これより短いと正常に動作しませんでした。 
読み込み部では赤線部分にウエイトを入れてみましたが、必要ないかもしれません。
 
  シリアル送受信と内臓I2C-EEPROMテストプログラム
 最後に、上で紹介した関数群を使用したプログラムを紹介します。
シリアルでコンソール上に表示とコンソールキーボードからの入力を受け付けます。
RS232Cで接続したPCでは、TeraTermやハイパーターミナルなどのソフトで、H8-3664N基板からのデータを送受信します。
   テストプログラム test_EEPROM_SCI.c
   HEWプロジェクトファイル test_EEPROM_SCI.lzh ツールチェインは 6.2.0.0です。

EEPROMのテストは4種類用意しました。
 
1.書き込むアドレスの下2桁を連続して書込む
2.0xFFを連続して書き込む
3.0x00を連続して書き込む
4.1バイト読込→ビット反転→同じアドレスに書込み。
 この動作を繰り返し行なう。
 
一連の動作の後、連続して読み出し表示しています。

★テスト4では、書込み動作の後に10msのウエイトを入れないと正常に動作しませんでした。
 というわけで、H8-3664Nでシリアル通信と内臓I2C-EEPROMが使えるようになりました。
Last up date 2007/6/28

 

This page count Total:15773 / Today:6 / Yesterday:2  

 本業のページ