Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

Similar documents
SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

複数の Nios II を構成する際の注意事項

Nios II - Vectored Interrupt Controller の実装

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法

Quartus II はじめてガイド - Convert Programming File の使い方

ModelSim-Altera Edition インストール & ライセンスセットアップ Linux ver.11

アルテラ USB-Blastre ドライバのインストール方法 for Windows OS

Quartus II クイック・スタートガイド

Nios II SBT Flash Programmer ユーザ・ガイド

Nios II Flash Programmer ユーザ・ガイド

Microsoft Word - ALT0982_program_epcs_by_niosii_v10.doc

Nios II カスタム・インストラクションによるキャスト(型変換)の高速化

PCI-Express ハード IP を使用した DMA の実現 for Cyclone V GT FPGA 開発キット(ソフトウェア編)

Quartus Prime - プログラミング・ファイルの生成や変換(Convert Programming Files)

Quartus II はじめてガイド - プロジェクトの作成方法

ModelSim-Altera - RTL シミュレーションの方法

Nios II 簡易シミュレーション

Quartus Prime はじめてガイド - デバイス・プログラミングの方法

オンチップ・メモリ クイック・ガイド for Cyclone III

Quartus II クイック・スタート・ガイド

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

Quartus II - デバイスの未使用ピンの状態とその処理

Quartus II はじめてガイド - プロジェクトの作成方法

AN424 Modbus/TCP クイックスタートガイド CIE-H14

Quartus II Web Edition インストール・ガイド

目次 1. 概要 動作環境

SoC はじめてガイド - HPS-FPGA 間のアクセス方法(Arria® V SoC / Cyclone® V SoC 編)

Nios II マイコン活用ガイド Nios II マイコンボード紹介 ステップ 1 AuCE C3 製品紹介 AuCE C3 は ソフトコア プロセッサ Nios II( アルテラ社 ) を搭載可能なマイコンボードです 弊社の基本ソフトウェアをインストールし FPGA 開発者のデザインと Nios

Quartus II はじめてガイド - デバイス・プログラミング方法

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

Quartus II はじめてガイド - よく使用するロジック・オプション設定方法 (個別設定)

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

Nios II 簡易チュートリアル

Nios II マイコン活用ガイド マイコンの動作を確認しましょう AuCE C3 には 基本 CPU エンジン CPU0121C3880 と 対応する基本プログラムを書き込んで出荷しております 以下に AuCE C3 出荷時の状態を示します AuCE C3 FPGA Cyclone III 基本

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

ご注意 1) 本書の内容 およびプログラムの一部 または全部を当社に無断で転載 複製することは禁止されております 2) 本書 およびプログラムに関して将来予告なしに変更することがあります 3) プログラムの機能向上のため 本書の内容と実際の画面 操作が異なってしまう可能性があります この場合には 実

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

AP-RZA-1A シリアルFlashROMの書き込み方法

Quartus II はじめてガイド - EDA ツールの設定方法

ユーザー一覧をファイル出力する ユーザーを検索する 登録したユーザー数を確認する

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続

GTR Board

簡単設定でスマホをブロック!仮想化時代の情報漏えい対策に最適なツール

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

PowerPoint プレゼンテーション

仮想 COM ポートドライバ Windows 10 編 インストールマニュアル

スライド 1

AN5101 SA-Cy500S (Cyclone V SoC CPU BOARD) スタートガイド

バーコードハンディターミナル BT-1000 シリーズセットアップガイド ( 第 1 版 ) CE ***

Notes and Points for TMPR454 Flash memory

本資料のご使用につきましては 次の点にご留意願います 本資料の内容については 予告無く変更することがあります 1. 本資料の一部 または全部を弊社に無断で転載 または 複製など他の目的に使用することは堅くお断りいたします 2. 本資料に掲載される応用回路 プログラム 使用方法等はあくまでも参考情報で

Nios II IDE によるソフトウェア開発 - セクション 1

USBドライバーインストールガイド

Total Disc Makerサイレントインストールガイド

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

Quartus II はじめてガイド ‐ Device and Pin Options 設定方法

0630-j.ppt

IC-R8600をSDRに使用するには

Quartus II はじめてガイド - EDA ツールの設定方法

PCI-Express ハード IP を使用した DMA 転送の実現 for Cyclone V GT FPGA 開発キット(ハードウェア編)

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

I2Cコントローラ、ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル(TRM)

Nios II ハードウェア・チュートリアル

Nios® II HAL API を使用したソフトウェア・サンプル集 「Modular Scatter-Gather DMA Core」

現行のICカードリーダRW4040インストーラの課題

スライド 1

著作権および商標 この文書には が所有権を持つ機密事項が含まれます この資料のいかなる部分も許 可無く複製 使用 公開することを固く禁じます 本書は の従業員および許可された 取引先だけに使用が認められています 本書で提供されたデータは正確で信頼性の高いものですが このデータの使用について株式会社

HyperLynx SI/PI/Thermal ライセンス設定ガイド

Łñ“’‘‚2004

プリント

WebSAM AlertManager Ver4.2 UL1032-B03 UL1032-HB03 UL1032-JB03 セットアップカード 1 章パッケージの中身の確認 2 章セットアップの準備 3 章セットアップの方法 4 章注意事項 UL1032-XB03 SL1032B0301-1


PCI Express Compiler ユーザガイド ~シミュレーション編・SOPC Builder フロー~

Microsoft Word - TC4013BP_BF_J_P9_060601_.doc

はじめに 京セラ製スマートフォンを指定の microusb ケーブル ( 別売 ) またはこれと共通仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をインストールしてい

Microsoft PowerPoint - 3.3タイミング制御.pptx

パルス波高値計測回路の製作

HD View Single Windowsセットアップガイド

CM-3G 周辺モジュール拡張技術文書 INA226センサ(電流、電圧、電力)

ワイヤレスバーコードリーダー CM-520W1 設定資料 Bluetooth SPPの設定

KDDI Smart Mobile Safety Manager Apple Business Manager(ABM) 運用マニュアル 最終更新日 2019 年 4 月 25 日 Document ver1.1 (Web サイト ver.9.6.0)

Silicon Labs 社 CP210x クイックスタートガイド 2015 年 6 月

! STEP 2. Quartus Prime のダウンロード WEB ブラウザで以下の URL を開きます 2 ページ中段の Quartus Prime 開発ソフトウェア ライト エディ

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

はじめに URBANO PROGRESSO を microusb ケーブル 01 ( 別売 ) またはこれと共通の仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をイン

電気的特性 (Ta=25 C) 項目 記号 条件 Min. Typ. Max. 単位 読み出し周波数 * 3 fop khz ラインレート * Hz 変換ゲイン Gc ゲイン =2-5 - e-/adu トリガ出力電圧 Highレベル Vdd V -

Space-E/Draw インストールガイド 発行通知書

CommCheckerManual_Ver.1.0_.doc

Microsoft Word - FCTT_CS_Mod( )Jver1.doc

Transcription:

LIM Corp. Nios II - PIO を使用した I 2 C-Bus (2 ワイヤ ) マスタの実装 ver.1.0 2010 年 6 月 ELSEN,Inc.

目次 1. はじめに... 3 2. 適用条件... 3 3. システムの構成... 3 3-1. SOPC Builder の設定... 3 3-2. PIO の設定... 4 3-2-1. シリアル クロック ライン用 PIO の設定... 4 3-2-2. シリアル データ ライン用 PIO の設定... 4 3-2-3. Nios II を含むその他のペリフェラル... 4 4. Nios II IDE の実装... 5 4-1. SR Condition の出力処理... 5 4-2. SOP Condition の出力処理... 5 4-3. 1bit の送信処理... 6 4-4. 1bit の受信処理... 6 4-5. 1byte の送信処理... 7 4-6. 1byte の受信処理... 7 4-7. EEPROM 書き込み処理... 8 4-8. EEPROM 読み出し処理... 8 5. 補足... 9 5-1. Signalap II での波形観測... 9 5-1-1. 書き込み動作波形... 9 5-1-2. 読み出し動作波形... 9 5-1-3. データ レート... 9 ver. 1.0 2010 年 6 月 2/10 LIM Corp. / ELSEN,Inc.

1. はじめに この資料は マイクロ プロセッサとデバイス チップとの通信で一般的に使用されている I 2 C-Bus (2 ワイヤ ) 通信を PIO を使用して実現する方法を紹介しています I 2 C-Bus は シリアル クロック ライン (SCLK) とシリアル データ ライン (SD) の 2 本のバス ラインだけで構成されており 比較的低いビット レートの通信を想定したバスのため ソフトウェアで信号を制御して通信を行うことが可能です I 2 C はフィリップス社の商標です I 2 C-Bus の詳細はメーカの資料をご参照ください 2. 適用条件 本資料では Nios II をマスタ デバイス EEPROM をスレーブ デバイスとした通信を紹介していますが 複数のマスタが混在する場合や Nios II をスレーブ デバイスとした実装については この資料の中では紹介しておりません 3. システムの構成 3-1. SOPC Builder の設定 SOPC Builder では シリアル クロック ラインの接続する i2c_sclk と シリアル データ ラインに接続する i2c_sdat を PIO で作成し Nios II の data_master に接続してください ver. 1.0 2010 年 6 月 3/10 LIM Corp. / ELSEN,Inc.

3-2. PIO の設定 3-2-1. シリアル クロック ライン用 PIO の設定 Width : 1bit Direction : Output ports Only 3-2-2. シリアル データ ライン用 PIO の設定 Width : 1bit Direction : Bidirection(tristate) ports Input Option : 全て Desable 3-2-3. Nios II を含むその他のペリフェラル 本実装のために設定を変更する箇所はありません ver. 1.0 2010 年 6 月 4/10 LIM Corp. / ELSEN,Inc.

4. Nios II IDE の実装 4-1. SR Condition の出力処理 I 2 C-Bus では 一連のデータを送信する直前に SR Condition を定義しています この状態は SCLK が H の区間で SD が H から L に変化することで生成されます inline void i2c_start(long sclk, long sdat) // SD を出力ポートに IOWR_LER_VLON_PIO_DIRECION(sdat,1); // SD=1..SCLK=1 IOWR_LER_VLON_PIO_D(sdat, 1); -1 IOWR_LER_VLON_PIO_D(sclk, 1); -1 // SD=0..SCLK=0 IOWR_LER_VLON_PIO_D(sdat, 0); -2 IOWR_LER_VLON_PIO_D(sclk, 0); -3 SCLK SD 1 2 3 SCL_DELY 4-2. SOP Condition の出力処理 I 2 C-Bus では 一連のデータの終端を SOP Condition を定義しています この状態は SCLK が H の区間で SD が L から H に変化することで生成されます inline void i2c_stop(long sclk, long sdat) // SD を出力ポートに IOWR_LER_VLON_PIO_DIRECION(sdat,1); // SD=0..SCLK=1 IOWR_LER_VLON_PIO_D(sdat, 0); -1 IOWR_LER_VLON_PIO_D(sclk, 1); -1 // SD=1..SCLK=0 IOWR_LER_VLON_PIO_D(sdat, 1); -2 IOWR_LER_VLON_PIO_D(sclk, 0); -3 SCLK SD 1 2 3 SCL_DELY ver. 1.0 2010 年 6 月 5/10 LIM Corp. / ELSEN,Inc.

4-3. 1bit の送信処理 I 2 C-Bus では データの送信に SCLK が H の期間は SD の状態は一定でなければなりません したがって データを送信する場合は SCLK が L の期間に SD を変化させる必要があります inline void i2c_send_bit(long sclk, long sdat, int Data) // SCLK=0 IOWR_LER_VLON_PIO_D(sclk, 0); // SD を出力ポートに IOWR_LER_VLON_PIO_DIRECION(sdat,1); -1 // SD にデータ送出 IOWR_LER_VLON_PIO_D(sdat, (Data)?1:0); -1 // SD=1..SCLK=0 IOWR_LER_VLON_PIO_D(sclk, 1); -2 IOWR_LER_VLON_PIO_D(sclk, 0); -3 SCLK SD 1 2 3 SCL_DELY 4-4. 1bit の受信処理 I 2 C-Bus では データの受信では SCLK が H の期間に SD の値を読み出す必要があります inline int i2c_recv_bit(long sclk, long sdat) int Data; // SCLK=0 IOWR_LER_VLON_PIO_D(sclk, 0); -1 // SCLK=1 IOWR_LER_VLON_PIO_D(sclk, 1); -2 // SD を入力ポートに IOWR_LER_VLON_PIO_DIRECION(sdat,0); -2 // SD からデータを取得 Data = IORD_LER_VLON_PIO_D(sdat); -2 // SCLK=0 IOWR_LER_VLON_PIO_D(sclk, 0); -3 SCLK SD 1 2 3 SCL_DELY return Data; ver. 1.0 2010 年 6 月 6/10 LIM Corp. / ELSEN,Inc.

4-5. 1byte の送信処理 1bit 送信処理 を使用し 1byte のデータを送信します 全ての bit の送信が完了した後 1bit 受信処理 を使用しスレーブからのアクノリッジが正しく受信されたかを確認します int i2c_send_byte(long sclk, long sdat, unsigned short Data) unsigned short Mask = 1 << (BI_WIDH - 1); int i; // ビット幅分データ送信 for(i = 0;i < BI_WIDH;i ++) // 1bit 送信 i2c_send_bit(sclk, sdat, (Data & Mask)); // bit マスクをシフト Mask >>= 1; // there is a delay in this command // CK の受信 return i2c_recv_bit(sclk, sdat); 4-6. 1byte の受信処理 1bit 受信処理 を使用し 1byte 分のデータを受信します 全ての bit の受信が完了した後 1bit 送信処理 を使用しスレーブへの CK を送信します unsigned short i2c_recv_byte(long sclk, long sdat) unsigned short Data = 0; int i; // ビット幅分データ送信 for(i = 0;i < BI_WIDH;i ++) // 受信データのシフト Data <<= 1; // 1bit 受信 if(i2c_recv_bit(sclk, sdat)) Data = 0x01; // CK の送信 i2c_send_bit(sclk, sdat, 1); return Data; ver. 1.0 2010 年 6 月 7/10 LIM Corp. / ELSEN,Inc.

4-7. EEPROM 書き込み処理 EEPROM への書き込みは 下記のフォーマットのデータを送信することで行います S R 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 DEVICE DDRESS 0 WORD DDRESS WRIE D R / C C W K K void i2c_send(long sclk, long sdat, unsigned char address, unsigned char reg, unsigned char data) i2c_start(sclk, sdat); i2c_send_byte(sclk, sdat, address << 1); i2c_send_byte(sclk, sdat, reg); i2c_send_byte(sclk, sdat, data); C K S O P i2c_stop(sclk, sdat); 4-8. EEPROM 読み出し処理 S R EEPROM からの読み出しは 下記のフォーマットのデータを送受信することで行います 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 DEVICE DDRESS 0 WORD DDRESS DEVICE DDRESS 1 R R / C C / W K K W S R C K RED D C K S O P unsigned char i2c_recv(long sclk, long sdat, unsigned char address, unsigned char reg) unsigned char data; i2c_start(sclk, sdat); i2c_send_byte(sclk, sdat, (address << 1)); i2c_send_byte(sclk, sdat, reg); i2c_start(sclk, sdat); i2c_send_byte(sclk, sdat, (address << 1) 0x01); data = i2c_recv_byte(sclk, sdat); i2c_stop(sclk, sdat); return data; ver. 1.0 2010 年 6 月 8/10 LIM Corp. / ELSEN,Inc.

5. 補足 5-1. Signalap II での波形観測評価ボードでの信号を Signalap II で計測した波形を下記に示します Device : Cyclone III EP3C25F324C8 Processor core : Nios II/e 50Hz Program Memory : On-Chip RM(16Kbyte) Optimize option : -O3 5-1-1. 書き込み動作波形 5-1-2. 読み出し動作波形 5-1-3. データ レート サンプリング クロック : 50MHz = 20ns パルス周期 : 924clock データ レート : 1 / (20ns * 924clock) = 54.113Kbp ver. 1.0 2010 年 6 月 9/10 LIM Corp. / ELSEN,Inc.

免責 及び ご利用上の注意 弊社より資料を入手されましたお客様におかれましては 下記の使用上の注意を一読いただいた上でご使用ください 1. 本資料は非売品です 許可無く転売することや無断複製することを禁じます 2. 本資料は予告なく変更することがあります 3. 本資料の作成には万全を期していますが 万一ご不明な点や誤り 記載漏れなどお気づきの点がありましたら 本資料を入手されました下記代理店までご 一報いただければ幸いです 株式会社アルティマ : 222-8563 横浜市港区新横浜 1-5-5 マクニカ第二ビル EL: 045-476-2155 HP: http://www.altima.co.jp 技術情報サイト EDISON : https://www.altima.jp/members/index.cfm 株式会社エルセナ : 163-0928 東京都新宿区西新宿 2-3-1 新宿モノリス 28F EL: 03-3345-6205 HP: http://www.elsena.co.jp 技術情報サイト ES : https://www.elsena.co.jp/elspear/members/index.cfm 4. 本資料で取り扱っている回路 技術 プログラムに関して運用した結果の影響については 責任を負いかねますのであらかじめご了承ください 5. 本資料は製品を利用する際の補助的な資料です 製品をご使用になる場合は 英語版の資料もあわせてご利用ください ver. 1.0 2010 年 6 月 10/10 LIM Corp. / ELSEN,Inc.