« fit-PC2の発売は6月中旬になりそう | トップページ | 回路実装完了? »

2009年5月25日 (月)

AKI-7125でシリアル通信が動かなかった理由

この日記で書いた問題、解決しました。

2年前にSTK-7125で動いていたプログラムのソースコードと現在動かそうとしているAKI-7125向けに書いたソースコードとをじっくり見比べてみると、2年前に書いた方では内部クロックの設定に関する処理を記述していません。記述していないということは、CPUの初期値のままで正しく動作していたということ。一方、今回のは自分が書いたソースコードの一番最初で内部クロックの設定を書いています。ここに問題の原因がありました。SH7125のデータシートを読み間違えてCPGのFREQCRレジスタの値を設定していました。

正しく設定できているソースコードの一部を抜粋して載せておきます。


/**
CPU周辺回路の設定
*/
void HardwareSetup(void)
{
// CPUで使用するクロックを設定する。

// SH7125の場合最大動作周波数は次の通り。
// 内部CLK = 50MHz
// バスCLK = 40Mhz
// 周辺CLK = 40MHz
// MTU2CLK = 40MHz
//
// 内部CLK >= バスCLK >= MTU2CLK >= 周辺CLK となるように設定すること。

// 秋月電子製 AKI-7125はクリスタルが12.5MHzなので、
// バスCLK, 周辺CLK, MTU2CLKは 25MHz になるよう設定する。

CPG.FRQCR.BIT.IFC  = 1; // 内部CLK = 50MHz (1/2)
CPG.FRQCR.BIT.BFC  = 3; // バスCLK = 25MHz (1/4 初期値のまま)
CPG.FRQCR.BIT._PFC = 3; // 周辺CLK = 25MHz (1/4 初期値のまま)
CPG.FRQCR.BIT.MPFC = 3; // MTU2CLK = 25MHz (1/4 初期値のまま)

// 使用する内蔵周辺回路のモジュールスタンバイを解除する。
STB.CR3.BIT._SCI1 = 0; // SCI1を使用

// UART通信に使用する端子を設定する。
PFC.PACRL2.BIT.PA4MD = 1; // PA4をTxD1として使用
PFC.PACRL1.BIT.PA3MD = 1; // PA3をRxD1として使用

}

« fit-PC2の発売は6月中旬になりそう | トップページ | 回路実装完了? »

コメント

情報、ありがとうございます〜。
来週ぐらいにはロータリーエンコーダ完成させて、少しはオドメトリ性能の試験をしたい。(あ、まだモータードライバのドライバソフトウェアの移植が必要だ)

はい。ボーレートは 19.2Kbpsにしました。
参考までにPφ=25MHzで計算した結果を公開します。

Pφ=25 のとき、
ボーレート(bps) N 誤差(%)
-------------------------------
9600 80 0.47
14400 53 0.47
19200 40 -0.76
38400 19 1.73 ※
※ 誤差は 1% 以内を推奨する。

なるほど。1%未満が推奨か。
だるまさんは、19.2kbpsにしたということですか?

ちょうどタイムリーなネタだったのですね。かみやんさんのblogにソースコードが載っているのを見て、作りが大体私と一緒だなと思いました。

ひとつ気になるとしては、ボーレートですね。かみやんさんのblogにあるソースコードでは38400bpsを設定していますが38400では誤差が1.73%程度になるのでちょっと危ないかなぁと思います。動いているならそれでいいのですが。

ハードウェアマニュアルでは誤差 1%以内を推奨していますから、19200bps(誤差は-0.76%)あたりがいいところじゃないかと思います。

なるほど。私は、CPG設定してなくて動いたのですが、25Mhzとしてビットレートレジスタを設定してました。なるほどデフォルトが25Mhzなのですね。
自分のブログにもシリアル通信のソース載せました(だるまさんには不要でしょうけど)

かみやんさん、コメントありがとうございます。お仕事の方は一段落されたでしょうか?

> 上記、私はCPGの設定何もしてないや。
> でもシリアル通信は成功しました。

そうなんですよ。CPGの設定をしない初期値のままだと周辺クロックが25MHzになるわけなんですが、私がそこを勘違いして間違った設定を書いてしまったという落ちでした。同じCPUなら、失敗しやすいところや解決策を共有できそうですね。

こんにちは~。自分のブログに書きましたが、AKI-H8/3069Fから、AKI-7125+ベースボードに変えました。
だるまさんと同じCPUでちょっと安心。
上記、私はCPGの設定何もしてないや。でもシリアル通信は成功しました。
CPGについてこれからデータシート読んでみます。

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/167990/45121101

この記事へのトラックバック一覧です: AKI-7125でシリアル通信が動かなかった理由:

« fit-PC2の発売は6月中旬になりそう | トップページ | 回路実装完了? »

最近の写真