NEC ELECTRONICS NEC ELECTRONICS
NEC electronics NEC electronics NEC
ホーム
アプリケーション
製品情報
先端技術
サポート
WEBショップ
ニュース&イベント
会社案内
header
GO
詳細検索機能/特性検索
サイトマップ お問い合わせ

シリアル通信

目次

    
FAQ-ID = v85seri-nnnn
0001: 調歩同期の基本動作。(殆どのデバイスで共通的な内容)
0002: 3線式シリアル通信の基本動作 (殆どのデバイスで共通的な内容)
0003: 16ビット長にて同期式のシリアル通信をしたい。
0004: シリアル・クロックに TO2/TO3を選択した場合、TO2/TO3をタイマ出力に設定すべきか?
0005: TO2/TO3をクロックとした場合、TO2/TO3の出力は通常のポートとして使用可能か?
0006: データ出力後の通信割り込みが発生しない。
0007: 2CPU間で UART通信を行う場合の電源投入時の注意事項
0008: 送信時開始時にあらかじめデータを2バイト書き込むことは可能か? [V850E/MA1]
0009: シリアル通信の受信がはじまらない。
0010: DMA起動にソフトウエア・トリガ・ビットを使用する。 [V850E/MA1]
0011: 通信設定変更時に動作クロックを停止しないでもよいか?
0012: 同期式シリアル通信で、TRMDn=1 の時はデータ受信できない? [V850E/MA1]
0013: シリアル通信で、PM22を 1 にするタイミングはいつ? [V850E/MS1]
0014: UART入力端子が ロウ・レベルを持続したことによるエラーからの復帰
0016: UART非同期シリアルから入力されるブレーク信号を検出したい。
0017: UARTの送受信完了を割り込みを使わずに行うには?
0018: UART送信割り込みのタイミングについて [V850ES/Kx1他]
0019: I2Cバスでスタート・コンディションが発行できない [V850ES/Kx1]
0020: 3線式シリアルでデータを送信したいが、クロックがでない [V850ES/Kx1]
0021: 自動送受信機能付きシリアルの使い方 [V850ES/Kx1]
0101: CSIB1のクロックソースとしてTOP01 [V850ES/Fx2]
v85seri
-0001
調歩同期の基本動作。(殆どのデバイスで共通的な内容)
Q1
uPD70433と、uPD780023の間で UARTでシリアル通信を行います。
それぞれの CPUの UART受信にて、スタート・ビットやキャラクタ・ビット等の検出方法、 タイミング等を教えてください。
A1
UART受信の場合、受信データのビット同期とキャラクタの同期をとるためにスタート・ビットを用います。
UARTが受信動作を開始すると、

(1)スタート・ビットの始まりの検出
スタート・ビット検出のために受信信号のサンプリングを行います。
このサンプリング・クロックとしてはボー・レートを生成する元のクロック (uPD70433の場合システム・クロック、uPD780023の場合ボー・レート・ジェネレータの 5ビット・カウンタの入力) を使用します。
従って、最悪サンプリング・クロックの1周期分検出が遅れる可能性があります。
サンプリングした結果ロウ・レベルであれば、スタート・ビット検出に移ります。

[mi-sp101]

(2)スタート・ビットの検出
受信信号がロウ・レベルになったことを検出してボー・レート・ジェネレータのカウンタが動作を開始します。
スタート・ビット検出は以下のようにボー・レートで決まるビット長の 1/2の位置で行います。
このタイミングで再度サンプリングしてロウ・レベルであれば、スタート・ビットであると判断します。

[mi-sp102]

ハイ・レベルであった場合にはノイズと判断して、(1)に戻ります。

[mi-sp103]

(3)データのサンプリング
スタート・ビットの検出でサンプリング・タイミングをスタート・ビットの立ち下りから 1/2ビットずらすことにより、 それ以後はボー・レートで決まるビット長毎にサンプリングすることで、 データ・ビットのデータの中央で受信信号のサンプリングを行うことができます。

[mi-sp104]

以上の流れで、受信信号からデータをサンプリングします。
このようにUARTとしてはビットの中央 (実際にはサンプリング・クロックの関係で正確には中央とはなりません) で受信信号を検出することで、伝送路での波形の歪みの影響をできるだけ避けるようになっています。
この情報はお役にたちましたか?
Q2
UARTで受信する場合のボー・レートの許容誤差はどれくらいか。計算方法を教えてください。
A2
ボー・レートの許容誤差は、ビットの中央でサンプリングを開始し、 ボー・レートの誤差によるサンプリング位置のずれが蓄積されていった場合に、 ストップ・ビットの位置でどの程度になるかから判断します。

理想的な場合 (スタート・ビットの検出遅れがなく、サンプリングでのセットアップ時間やホールド時間が必要ない場合) にはスタート・ビット位置でのマージンは 50% (中央であることから、前後に 50%ずれても大丈夫) です。
これをストップ・ビットまでのビット数で割ることでボー・レート許容誤差が求められます。

[mi-sp105]

実際のケースでは、 サンプリング周期やデータのサンプリングでのセットアップ時間やホールド時間を加味する必要があり、 50%が 40数%になり、それをビット長で割ることでボー・レートの許容誤差が求まります。 (どの程度マージンが少なくなるかは個々のデバイスで異なります。)
このようにして得られた値は送信側と受信側の相対的な許容誤差となります。

なお、これらの値は受信信号の波形が理想的な場合の値です。
実際の受信波形は伝送路の影響で波形が歪みます。
このような場合にはデバイスがスタート・ビットを判定するレベル付近での信号の変化が緩やかになり、 しかもノイズの影響も受けやすくなり、判定タイミングがバラツキます。
このため、スタート・ビット位置でのマージンの40数%の値がさらに小さくなってしまい、 その分ボー・レートの許容誤差は少なくなります。
従って、あまり許容誤差を大きく見積もらないようにしないと、誤動作の原因となります。

[mi-sp106]
この情報はお役にたちましたか?
back to top  
(2003/05)

v85seri
-0002
3線式シリアル通信の基本動作 (殆どのデバイスで共通的な内容)
Q1
3線式シリアル通信の基本動作について教えてください。
A1
3線式シリアル通信は送信データ(SO)、受信データ(SI)及び転送クロック(SCK) の3本の信号線を用いて通信を行う方式です。
この通信方式では通信をコントロールする方をマスタと呼び、 マスタはSCK信号を出力して通信を制御します。
反対側をスレーブと呼び、こちらはマスタからのSCK信号を受けてデータを送信/受信します。

[mi-sp107]

送信と受信を同時に行えますので、効率的な転送を行うことができます。
また、調歩同期通信のように通信レートよりも高い周波数のクロックでのサンプリングが必要ありませんので、 より高速の通信が可能です。

動作の概要
通常、通信を行っていない場合の SCK信号は Hレベルになっています。
マスタは通信を開始すると、SCKを立ち下げます。
SCK信号の立ち下がりで、マスタ及びスレーブはそれぞれの SO端子に送信データを出力します。
出力されたデータは相手のSI端子に接続されていますので、マスタがSCKを立ち上げたときに取り込まれます。
この動作を8回繰り返すことで1バイトのデータを転送できます。

[mi-sp108]

この方式ではデータだけでなくクロックもやりとりしますので、 調歩同期通信のようにスタート・ビットやストップ・ビットを用いた制御は必要ありません。
また、データは必ず SCK信号に同期して取り込みますので、 送信側と受信側で転送レートが食い違って正常に受信できないと言ったことは発生しません。

このように、SCKの立ち下がりから全体の動作がスタートしますので、 SCKが Hレベルの期間に転送結果の処理を行い、次の転送の準備を完了する必要があります。

以上のような動作が基本ですが、一部のデバイスでは SCKの論理を変更できる (通信を行っていないときのレベルや送受信のエッジを変更できる) 機能が追加されたり、 外部からシリアルの動作を禁止させることができるものがあります。
また、データ長は 8ビットが基本ですが、 一部のデバイスでは 16ビットまでの可変長のデータを通信できるもの、 複数バイトのデータを転送する機能をもったものもあります。

使用する上での注意点
3線式シリアル通信方式では、マスタがSCK信号を出力する(Lに立ち下げる)前にスレーブは送受信の準備を完了(スレーブがデータを送信したい場合には送信データを書き込み、受信の場合には前のデータの読み出しを完了) しておく必要があります。このためには、別途ハンドシェイクのための信号を準備しておき、マスタは割り込みやポーリング等の手段により、スレーブ側のステータス(準備完了)を検出できるようにしておいてください。 この順序が守られないと、正常なデータ転送はできません。
この情報はお役にたちましたか?
back to top  
(2003/05)

v85seri
-0003
16ビット長にて同期式のシリアル通信をしたい。
Q1
V850から 16ビット長にて同期式のシリアル信号を出したいのですが可能でしょうか?
A1
これはバイト間の期間がどの程度まで許されるかによります。
一般のV850シリーズでは 8ビットの通信を 2回繰り返すことでの対応になります。
このときの 1バイト目と 2バイト目の間隔で CPUの処理が間に合えば使えるかと思います。
CPUの処理が無理な場合に、 V850/SB1にはハードウエアとして 16ビット長までの同期通信が可能なシリアル通信機能が内蔵されておりますので、 こちらをご使用頂くのがよろしいかと思います。
この情報はお役にたちましたか?
Q2
1バイト目と 2バイト目の具体的なタイム・ラグの時間はどれくらいになるのでしょうか?
A2
内部クロックで動作させたとすると、2バイト目の書き込みから最低 1.5クロックで次の送信を開始します。 これは、最低でも 1ビット分の間が空くことを意味します。
                                   タイム・ラグ
                                    <        >
           ____      ____      ______________      ____
      SCK      |____|    |____|     ^        |____|
           ____ _________ ___________________ _________
      SO   ____|_________|___________________|_________

                                 *  ^
                                 |  +-ここまでで書き込み
                                 +-ここで割り込み
最後のビットのクロックの立ち上がりで 2バイト目のデータの書き込みトリガされますが、 書き込みが次のクロックの立ち下がりタイミング (上記 SCKの ^部、実際にクロックが 立ち下がる訳ではない) より遅れた場合にはその分は追加されます。
スレーブ (外部クロック) の場合には、 8回目の SCKの立ち上がりでの通信完了の割り込みから SCKがハイ・レベルの期間に次の通信の準備を完了しておく必要があります。
この情報はお役にたちましたか?
Q3
DMAを使用して送信した場合と、DMAを使用せず SIOのみにて 2バイトの送信 (1バイト送信後、SIOの完了があがった時点で 2バイト目を書き込む) した場合とどちらがタイム・ラグが少ないでしょうか?
A3
DMAの方が書き込みの遅れは少なくなります。
上記のタイミングの書き込みタイミングとの兼ね合いになりますが、 そこまでに書き込みが完了していればどちらも同じになります。
これらは CPUのクロック周波数、伝送周波数、プログラムにより変わります。
この情報はお役にたちましたか?
back to top  

v85seri
-0004
シリアル・クロックに TO2/TO3を選択した場合、TO2/TO3をタイマ出力に設定すべきか?
Q1
シリアル・インタフェースの 0-3 では、クロック選択に TO2/TO3を選択できますが、 これを使用する場合は TO2/TO3を必ずタイマ出力に設定しなければならないのでしょうか。
A1
いいえ、タイマ出力に設定する必要はございません。
この情報はお役にたちましたか?
back to top  

v85seri
-0005
TO2/TO3をクロックとした場合、TO2/TO3の出力は通常のポートとして使用可能か?
Q1
シリアル・インタフェースでは TO2/TO3をクロックとして使い、 TO2/TO3の出力端子は通常のポートとして使うことはできますか?
A1
タイマ2、3をシリアルのクロックとして使用した場合でも、タイマ出力を行わなければ、 端子はポートとして使用できます。
この情報はお役にたちましたか?
back to top  

v85seri
-0006
データ出力後の通信割り込みが発生しない。
Q1
SIO2を使用してデータを出力した後の割り込みが発生しません。
A1
(1) CPUが割り込み禁止なっていませんか?
送信完了割り込みが発生しないようですが、この場合は CPUの割り込みが禁止となっている可能性があります。
割り込みが問題かシリアルが問題かの切り分けを行うために、 CSIC2のビット7 (CSIF2) がセットされるかどうかを確認してください。
(これがセットされていれば、シリアルは動作していると判断され、これが立っていなければ、 シリアルの動作に問題があると判断できます)
(2) CSI2のクロックはちゃんと設定されているのでしょうか。(具体的な設定値が不明です)?
(送信では CSIM1の設定をコピーして、クロック選択部分だけは流用されているので、 具体的な設定値が不明です)?
(3) シリアルの設定と起動条件の関係には問題ないでしょうか?
もし、CSI2を送受信モードで使用されておられる場合は、転送起動条件は SIO2からの読み出しではなく、 SIO2へのダミー・データの書き込みとなります。
以上の点に着目してディバッグしてください。
この情報はお役にたちましたか?
back to top  

v85seri
-0007
2CPU間で UART通信を行う場合の電源投入時の注意事項
Q1
2CPU間を UART で通信させる場合、電源投入時の RXD, TXD の状態が不安定となり、 通信に影響を与えることはないでしょうか?
A1
通信を行う前に、シリアルの信号線がハイ・レベルを保持できていれば問題ありません。
しかし、ロウ・レベルになってしまうと、その長さによってはスタート・ビットと認識されてしまい、 誤動作の原因となることが考えられます。
通常、これらのシリアル信号はシリアル設定以前にはポートとして動作するようになっています。
このときにロウ・レベルとならないようにしてください。

例えばV850/SA1の場合に P14P24が TxD信号と兼用になっております。
シリアルの初期設定のときにこれらがハイ・レベルを保持するように、
   (1) P14 (P24) に 1 をセットする
   (2) PM14 (P24) に 0 (出力モード)をセット
   (3) UART の設定を行う
   (4) P14 (P24) に 0 をセットする
のように設定します。

また、これ以前の入力ポート状態でハイ・レベルを保持するためには、 端子を抵抗でプルアップしておくことをお奨め致します。
(上記の (1) の設定をビット操作で行う場合には、 他のビットの出力ラッチの内容も書き換わることが考えられるので、ご注意ください。)
この情報はお役にたちましたか?
back to top  

v85seri
-0008
送信時開始時にあらかじめデータを2バイト書き込むことは可能か? [V850E/MA1]
Q1
クロック同期式シリアル通信で送信を開始するとき、シフト・レジスタ(SIOn)と 送信バッファ・レジスタ(SOTBn)のそれぞれに 1バイトずつ、 合わせて2バイト書き込むことは可能でしょうか?
A1
最初に 2バイト分セットすることはできません。
V850E/MA1の CSIはダブル・バッファとして機能するようにはなっていないため、 最初に 2バイト分のデータを設定することはできません (SIOnは読出し専用で書き込みは許されておりません)。
この情報はお役にたちましたか?
back to top  

v85seri
-0009
シリアル通信の受信がはじまらない。
Q1
シリアル転送でデータが受信できません。考えられる原因はありますか?
A1
受信側の起動はなされているのでしょうか?
クロック同期式シリアルはモードを設定 (動作許可) しただけでは、送信も受信もスタートしません。
送信は当然データを書き込む事で起動しますが、受信の場合にも起動トリガが必要です (受信オンリ・モードの場合は SIOの読み出し、送受信モードの場合には SOTBへのダミー・データの書き込みが必要です)。
この情報はお役にたちましたか?
Q2
双方「送受信モード」に設定後、送信側のSOTB1に送信データを書き込んだ状態では、 転送待ちの状態のままであり、その状態で受信側から SOTB1にダミー・データを書き込んで初めてデータ転送が行われるのでしょうか?
A2
そうではありません。マスタである送信側は、SOTB1に送信データを書き込むことで送信をスタートします (このとき、受信側がどのような状態でもデータを転送開始します)。
一方、スレーブである受信側では転送の起動がかかっていないと (送受信モードであれば、SOTBにダミー・データの書き込みが行われていないと)、 いくらマスタからシリアル・クロックがきても無視してしまい、転送は行いません。
つまり、スレーブ側で転送の起動がかかった状態でマスタ側が転送を起動する必要があります。
この順序を守らないと正常な転送は行えません。
この情報はお役にたちましたか?
Q3
書き込んだデータが、ダミー・データか本当のデータかは、 それぞれのプログラムで判断しなければならないのでしょうか?
A3
はい、そうです。これは、上位の通信の取り決め (プログラム) で判断していただくことになります。
基本的に、3線式シリアルでは送信時に同時に受信動作も行います。
従って、送信完了時に受信したデータを使うか使わないかはプログラムしだいです。
なお、通常は受信起動時のダミー・データとしては、FFHを書き込みます。
従って、通常のデータとして FFHを使用しないようになっていれば、 受信したデータ自体でも確認することはできます。
この情報はお役にたちましたか?
Q4
パワーをできるだけ抑えたいので、常時シリアルを動作状態にしたくありません。
受信側が前もって受信起動をかけておくことなしに、データを受信することはできますか?
A4
ハンドシェイクのための信号を別途準備することで実現できます。
シリアル信号以外にハンドシェイク信号を準備しておき、転送前にマスタからスレーブに転送要求を出し、 スレーブはそれを割り込みで受けて、 転送起動をかけたら準備完了をマスタに通知するような手順を追加してください。
また、スレーブが転送を要求する場合にも、 転送を起動してからハンドシェイク信号でマスタに転送を要求するようにしてください。
この情報はお役にたちましたか?
back to top  

v85seri
-0010
DMA起動にソフトウエア・トリガ・ビットを使用する。 [V850E/MA1]
Q1
V850E/MA1のDMAを使用した UARTの送信処理で、 チャネル・コントロール・レジスタ中のソフトウエア・トリガ・ビットをセットすることで、 最初のデータ送信のトリガとできますか?
また、このビットをクリアしておく必要がありますか?
A1
はい、DMAチャネル・コントロール・レジスタの中のソフトウエア・トリガ・ビットをセットすることで UARTの送信を起動させることができます。
なお、このビットは単なるトリガのためのビットですので、わざわざクリアする必要はございません。
この情報はお役にたちましたか?
back to top  

v85seri
-0011
通信設定変更時に動作クロックを停止しないでもよいか?
Q1
シリアル・ポートの設定のうち、フォーマットのみを変更する場合、 動作クロックを停止する必要はありますか?
A1
動作クロックの停止までは必要ありません。
しかしながら、動作そのものは停止 (TxEnRxEnを 0 に) する必要があります。
この情報はお役にたちましたか?
back to top  

v85seri
-0012
同期式シリアル通信で、TRMDn=1 の時はデータ受信できない? [V850E/MA1]
Q1
V850E/MA1ユーザーズ・マニュアル ハードウエア編の 11.3.3 制御レジスタの部分で
 (3) シリアルIOシフト・レジスタ (SIO0-SIO2) および
 (4) 受信専用シリアルIOシフト・レジスタ (SIOE0-SIOE2)
の説明にて、CSIMnレジスタの TRMDn=0 の時の動作についての記述がありますが、 TRMDn=1 の時の記述はありません。TRMDn=1 の時は受信ができないのでしょうか?
A1
いいえ、TRMDn=1のときにも送信と同時に受信動作が行われます。
ここで言いたいのは、TRMDn=1 (送受信モード) の時の通信の起動は SOTBnへの書き込みであり、 SIOnを読み出しても通信は起動せず、 TRMDn=0(受信専用モード)の時には SIOnの読み出しで通信が起動することです。

また、受信専用モードの場合に、受信したデータを読み出したいが、 次の通信を起動させたくないときのために SIOEn が用意されています。
つまり、TRMDn=1 (送受信モード) の時には SIOEnを使用する必要がないので記載しておりません。
この情報はお役にたちましたか?
back to top  

v85seri
-0013
シリアル通信で、PM22を 1 にするタイミングはいつ? [V850E/MS1]
Q1
シリアル・インタフェースを使用する場合、PM22をどのタイミングで 1 にすればよいでしょうか?
A1
V850E/MS1では、リセット解除後に PM2 は FF になっております。
従って、初期値のままであれば操作する必要はありません。
どうしても設定をされるのであれば、P2に値を設定した後で、 シリアルの設定を行う前に PM22を設定されることをお奨めします。
(その他のビットで出力ポートに設定した端子に不定値が出力されないようにするために P2にデータを設定した後とします)。
この情報はお役にたちましたか?
back to top  

v85seri
-0014
UART入力端子が ロウ・レベルを持続したことによるエラーからの復帰
Q1
受信データに ロウ・レベルが持続すると受信エラー (パリティ・エラー、ストップ・ビットが無い) が発生しますが、プログラムにて受信エラー処理 (受信バッファ (RXB0) を読み出す) を行えば、 次から正常に受信できますか?
A1
いいえ、それでは不十分です。
V850E/MS1 の UARTは入力にロウ・レベルが持続すると、 その間はボー・レートで決まった時間で連続的にデータを受信動作します。
従って、この間は受信エラーが連続して発生します。

なお、最後のところでは正常受信と解釈されることも考えられます (受信をスタートして、途中で入力がハイ・レベルに立ち上がることが考えられます。 この場合は異常なデータを受信してもエラーにならないケースがあります)。
これらを考えに入れた受信処理が必要です。
たとえば、連続してフレーミング・エラーと受信データが 00 の状態が発生したら、 入力がハイ・レベルになるのを外部割り込み信号で検出するようにして、UARTの動作を停止することも考えられます。
この情報はお役にたちましたか?
back to top  

v85seri
-0016
UART非同期シリアルから入力されるブレーク信号を検出したい。
Q1
非同期シリアルの接続開始時に、端末側から送られて来るブレーク信号 (180〜250mSのマーク状態)を検出する方法はありますか?
A1
該当するポートの PMレジスタが入力として設定されていれば、 RXD0〜2の端子状態をポートとして読むことが可能です。
これをプログラムでチェックしてください。
この情報はお役にたちましたか?
back to top  
(2001/08)

v85seri
-0017
UARTの送受信完了を割り込みを使わずに行うには?
Q1
V850/SF1のシリアル・インタフェース (UART) の送受信完了を割り込みを使わずに行う方法がありますか?
A1
割り込みをマスクしておいて、STIC0 (または STIC1) のビット7 がセットされるのをプログラムで確認 (ポーリング)し、セットされていたら送信完了と判断してください。
受信に関しては CSIC1 (または CSIC3) を確認してください。
どちらの場合にもセットされていたら完了で、プログラムでフラグをリセットしてください。
この情報はお役にたちましたか?
back to top  

v85seri
-0018
UART送信割り込みのタイミングについて [V850ES/Kx1他]
Q1
UARTで送信割り込みを使用して非同期方式半二重通信を行いたい。
送信を開始したい時に最初の割り込みはどのタイミングで発生するのか?
A1
UARTの割り込みは送信完了割り込みですので、 送信したデータのストップ・ビットのタイミングで割り込みが発生します。

<解説>
マイコンに内蔵されている UARTの送信関係の割り込みとしては、殆どのデバイスで“送信完了割り込み”です。
また、V850ES/SG2や SJ2 (以下 V850ES/SJ2 で代表させます) の UARTAn の場合には“送信許可割り込み”となります。

いずれの場合にも、送信を許可しただけでは割り込みは発生しません。
最初のデータを書き込み、そのデータの送信が完了したときに割り込みが発生 (V850ES/SJ2では送信シフト・レジスタにデータが転送されたときに割り込みが発生) します。

2バイト目以降の送信データは割り込みのタイミングで書き込むことになります。
最初のデータの送信と、2バイト目以降では処理が異なりますのでご注意ください。

なお、V850E/ME2では FIFOを内蔵しているので、送信の割り込みは特殊な動作となりますのでここでは触れません。
この情報はお役にたちましたか?
Q2
送信許可を有効にした時に最初の送信割り込みが発生、 以後送信完了毎に割り込みを発生させることはできるか?
A2
可能です。
この場合には、送信許可を有効にした後で、送信完了の割り込み要求フラグをプログラムでセットしてください。
これにより送信完了の割り込みが発生したのと同じ動作をさせることができますので、 データの送信処理を共通の割り込み処理ルーチンで行うことができます。

初期化時に送信完了の割り込み要求フラグをプログラムでセットすることで、 送信完了割り込み要求フラグを送信可能フラグとして使用することができます。
この場合には、送信するデータがない場合には、送信完了割り込みに対するマスクをセットしておいてください。
これにより無用な割り込みの発生を抑えられます。
この情報はお役にたちましたか?
back to top  
(2003/06)

v85seri
-0019
I2Cバスでスタート・コンディションが発行できない [V850ES/Kx1]
Q1
IICF0設定値を 0x01 にすると、(動作許可、ストップ・コンディション検出後、スタート・コンディション生成) マスタ通信スタート関数のスタート・コンディション・チェックで引っかかり、通信できなくなります。
IICF0設定値を 0x03 にすると動作します。
A1
I2Cバスではコントローラ段階では初期状態でバスが使用されているかどうかを示すような情報が得られません。
そのため、従来のコントローラでは起動後にストップ・コンディションを検出して始めてバスを使用できる (スタート・コンディションを発行できる) ようになっておりました。
従って、上位のプログラムがバスが空いているかどうかを判断して、ストップ・コンディションを発行し、 その後にスタート・コンディションを発行することで I2Cバスを使用できるようになります。
IICF0が 0x01の場合がこの場合に該当します。

一方、V850ES/Kx1のように新しいデバイスではストップ・コンディションを検出することなく、 スタート・コンディションを発行できるような機能が追加されています。
この機能を使用する (IICF0が 0x3 の場合がこれにあたります) ことで、 直ちにスタート・コンディションを発行して I2Cバスを使用できるようになります。
この情報はお役にたちましたか?
back to top  
(2003/06)

v85seri
-0020
3線式シリアルでデータを送信したいが、クロックがでない [V850ES/Kx1]
Q1
CSI00 を転送クロックとしてタイマ50 の出力を使ってデータを転送したいが、 データを書き込んでもクロックが出力されない。
具体的な設定は以下のとおり。
  (1) __DI();
  (2) TCL50   = 0x04;
  (3) CR50    = 0x11;
  (4) TMC50   = 0x80;
  (5) CSIC0   = 0x06;
  (6) CSIM00  = 0xd0;
  (7) CSI0IC0 = 0x05;
  (8) PMC4    = 0x07;
  (9) __EI();
A1
タイマ5 の設定で、TMC50レジスタのビット1 (TMC501) が 0 になっているのが原因です。
TMC50 には 0x80 ではなく、0x82 を設定してください。

(CSI00 のクロックはあくまで TO50 です。
TMC501 がセットされていないと出力F/F が反転せず、TO50 が変化しません。
TMC50レジスタの設定では、実際に TO50 を外部に出力する/しないにかかわらず、 出力F/F は反転動作するようにしてください。)
この情報はお役にたちましたか?
back to top  
(2003/06)

v85seri
-0021
自動送受信機能付きシリアルの使い方 [V850ES/Kx1]
Q1
自動送受信機能付きシリアルでデータを送信する方法がよく分かりません。
A1
自動送受信機能付きシリアル (CSIAn) を用いて、 マスタとしてデータを連続して送信する場合の手順は以下のようになります。

(1) CSIMAnレジスタの CSIAEnビットをセットすることで CSIAnを動作許可状態にします。
(これで、バッファRAMにアクセス可能になります。)
(2) CSISnレジスタでシリアル・クロックを選択します。
(3) BRGCAnレジスタでシリアル・クロックの分周比を設定し通信速度を指定します。
(4) バッファRAMの FFFFFE00Hから順に送信したいデータを書き込みます。
(5) ADTPnレジスタに送信したい データ数−1 を設定します。
(6) CSIMAnレジスタの ATEnビットと MASTERnビットをセットして、 自動転送モードでのマスタ動作を設定します。
(7) CSIMAnレジスタの TXEAnビットをセットして送信可能状態にします。
(8) ADTInレジスタにデータの送信間隔を設定します。
(9) CSIA0の場合には PFC5レジスタのビット4,5 を 0 に、 PMC5レジスタのビット4,5 を 1 に設定します。
CSIA1の場合には PFC9レジスタのビット11,12 を 1 に、 PMC9レジスタのビット11,12 を 1 に設定します。

これで、自動送受信機能付きシリアルで自動送信を行う場合の必要な設定は完了しました。
CSIT0nレジスタの ATSTAnビットをセットすることで、自動送信処理が起動されます。

自動送信処理が起動すると、CSISnレジスタの TSFnビットをセットし、 バッファRAMの先頭から順に読み出したデータを送信します。
ADTPnで指定されたデータを送信し終わると割り込み要求 (INTCSIAn) を発生し、 CSISnレジスタの TSFnビットをクリアします。

引き続き次のデータを送信したい場合には、新しいデータをバッファRAMにセットし、 (5)ADTPnレジスタへのデータ数の設定を行った後に CSIT0nレジスタの ATSTAnビットをセットします。

送受信を行う際には、(7)RXEAnビットもセットし、 (9)PFC5レジスタのビット3 も 0、PMC5レジスタのビット3 も 1 (CSIA1では PFC9レジスタのビット10 も 1、 PMC9レジスタのビット10 も 1) にセットします。

転送が完了すると、バッファRAMに受信したデータが格納されていますので、読み出します。
この情報はお役にたちましたか?
Q2
下記のような設定を行ったが SCKA0が出力されません。

  CSIMA = 0xDC;
  CSIS0 = 0x40;
  CSIT0 = 0x01;
  BRGCA0 = 0x00;
  ADTP0 = 0x07;
  ADTI0 = 0x03;
  P5 = 0x07;
  PM5 = 0xc8;
  PMC5 = 0x38;
  PF5 = 0x00;
  PFC5 = 0x00;
  PU5 = 0x00;
A2
設定の順序や設定の仕方に問題があります。
お問い合わせの設定の範囲では、
 ・CSIMA0レジスタのビット7 と 6だけを設定します
 ・その後に、CSIMA0の残りのビットを設定します

ATSTA0を除く全ての設定が完了した後、
 ・最後に CSIT0レジスタの ATSTA0をセットしてください。
この情報はお役にたちましたか?
back to top  
(2004/06)

v85seri
-0101
CSIB1のクロックソースとしてTOP01 [V850ES/Fx2]
Q1
3線式シリアル・インターフェースCSIB1の入力クロックとしてTOP01を使用する際に、TOP01の端子出力を禁止する方法はありますか?
A1
TOP01端子から出力しない場合は、TOP01端子をポートモードにしてください。
  • TOP01端子はポートモードとして使用
  • SCKB1にTOP01を入力クロックとして選択
  • タイマPのレジスタ設定後、タイマPを動作
なお、タイマ出力を禁止にしてしまうと、TOP01出力をCSIB1のクロックソースとして使用できません。

(2007/12)

この情報はお役にたちましたか?
back to top  
(2007/12)









































 ご利用にあたって  個人情報保護について  RSS       © 1995-2008  NEC Electronics Corporation