Armadilloフォーラム

拡張インターフェース(CON15)のA1_STP0_IPD3/A1_STP0_IPD4を使用したUART通信について

kasawa.ms

2015年1月6日 15時52分

Armadillo-800を用いて、拡張インターフェースCON15のA1_STP0_IPD3/A1_STP0_IPD4に接続された機器とUARTで通信を行いたいと思っております。

SCIFA_RXD_4/SCIFA_TXD_4を有効化するようレジスタの設定を行い、/dev/ttySC4でデータの送受信を行っていますが、データの送信はできるのですが受信ができないという現象に陥っています。
(CON15のコネクタで波形を確認し、データの送信/受信とも確認できているのですがアプリケーションでデータを受信することができません。)

【質問①】
 以下のようにレジスタ設定を行っているのですが、レジスタ設定が正しいか
 またはほかに設定すべき項目があるかなどご教示頂けませんでしょうか。
 詳細は添付のソースをご確認ください。

 [レジスタ設定]
  board-armadillo800eva.c - rma1evb_init()で以下の設定を追加
   gpio_request(GPIO_FN_PORT94_SCIFA4_RXD, NULL);
   gpio_request(GPIO_FN_PORT93_SCIFA4_TXD, NULL);
   writeb(0x13, 0xE605105D);
   writeb(0xE3, 0xE605105E);

 [アプリケーション(uart.c)での処理の概要]
  ・"/dev/ttySC4"をopen
  ・cfsetspeed()でボーレート設定
  ・tcsetattr()でシリアルポートの設定適用
  ・write()でデータ送信
   →正常に送信できることを確認
  ・select()またはread()でデータ受信待ち
   →波形ではCON15にデータが来ていることは確認できるが、selecet()/read()の応答が返ってこない

【質問②】
 拡張インタフェースを使用する上で、作法や注意点がございましたら、ご教示頂けませんでしょうか。

ファイル ファイルの説明
source.zip

コメント

at_yashi

2015年1月7日 20時56分

> 【質問①】
>  以下のようにレジスタ設定を行っているのですが、レジスタ設定が正しいか
>  またはほかに設定すべき項目があるかなどご教示頂けませんでしょうか。

脳内での返答でもうしわけないのですが、MSEL5CRにあるSCIFA_RXD_4を選択するbitを
確認してもらえますか?

> 【質問②】
>  拡張インタフェースを使用する上で、作法や注意点がございましたら、ご教示頂けませんでしょうか。

具体的に困っていることがあれば、教えてもらえるとなにかコメントできるかもしれません。

kasawa.ms

2015年1月7日 21時12分

ご回答ありがとうございます。

> 脳内での返答でもうしわけないのですが、MSEL5CRにあるSCIFA_RXD_4を選択するbitを
> 確認してもらえますか?

MSEL5CR は 0x02001048となっており、SCIFA_RXD_4を選択するbit MSEL[12:11]は
「10」となっていますので、意図した値が設定されている認識です。

> 具体的に困っていることがあれば、教えてもらえるとなにかコメントできるかもしれません。

SCIFA_RXD_4を使用する上で、レジスタの設定に不足がないか、レジスタを設定するタイミングがあるかなど
ノウハウ的なことがあれば教えていただければと思っております。

at_kojiro.yamada

2015年1月30日 17時23分

> SCIFA_RXD_4を使用する上で、レジスタの設定に不足がないか、レジスタを設
> 定するタイミングがあるかなどノウハウ的なことがあれば教えていただければ
> と思っております。
添付のsource.zipに含まれるソースコードをビルドして実行した結果、正常に送受信できております。
そのままではuart.cをビルドできなかったため、若干の修正を行いましたが、送受信の処理は変更していません。
修正後のソースコードと実行ファイルを添付します。

故障またはケーブルの不良なども考えられますので、
CON15に接続されている機器を外して、以下の手順でループバックテストを行っていただけますか?

■ループバックテスト手順
現在ご利用中のカーネルで下記の手順を実施してください。

1. Armadillo-800 EVAの電源を切る
2. CON15 45pin(TxD)とCON15 46pin(RxD)をショートする
3. Armadillo-800 EVAを起動
4. Armadillo-800EVA上でアプリケーション(添付のuart.tar.gzに含まれるuart)を実行
5. オシロスコープでデータの波形を確認
6. アプリケーションがデータを受信できていることを確認

もし、上記手順でデータが受信できなければ、故障の可能性がありますので、
「評価ボードの製品保証についての注意事項[1]」及び「製品保証規定[2]」を確認の上、「交換のお申込み[3]」をお願いします。

[1] http://www.atmark-techno.com/support/evaluation
[2] http://www.atmark-techno.com/support/warranty-policy
[3] http://www.atmark-techno.com/support/exchange1

ファイル ファイルの説明
uart.tar.gz 修正後のソース(uart.c)と実行ファイル

kasawa.ms

2015年2月3日 9時35分

ご回答ありがとうございました。

ケーブルを変更して確認してみたところ、送受信できることが確認できました。
お手数をおかけして申し訳ありません。

今後ともよろしくお願いいたします。