diff options
| author | shela <shelaf@users.noreply.github.com> | 2020-04-01 15:05:45 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-01 15:05:45 +0900 |
| commit | 19621354189066417c42ac840dfc237bf790f09b (patch) | |
| tree | 61b55655a3aabb8df27c61cb1676b7e76bbe74a3 /docs | |
| parent | d79be051dd80cc1ed7e7d5b46c04139b4a1c0b4f (diff) | |
| download | qmk_firmware-19621354189066417c42ac840dfc237bf790f09b.tar.gz qmk_firmware-19621354189066417c42ac840dfc237bf790f09b.zip | |
[Docs] Update Japanese translation of i2c_driver.md (#8523)
* Update Japanese translation of i2c_driver.md
* Apply a part of suggestions from code review
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/ja/i2c_driver.md | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/docs/ja/i2c_driver.md b/docs/ja/i2c_driver.md index 4030da631..56425a2fd 100644 --- a/docs/ja/i2c_driver.md +++ b/docs/ja/i2c_driver.md | |||
| @@ -1,38 +1,48 @@ | |||
| 1 | # I2C マスタドライバ | 1 | # I2C マスタドライバ :id=i2c-master-driver |
| 2 | 2 | ||
| 3 | <!--- | 3 | <!--- |
| 4 | grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh | 4 | grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh |
| 5 | original document: 85041ff05:docs/i2c_driver.md | 5 | original document: 0.8.62:docs/i2c_driver.md |
| 6 | git diff 85041ff05 HEAD -- docs/i2c_driver.md | cat | 6 | git diff 0.8.62 HEAD -- docs/i2c_driver.md | cat |
| 7 | --> | 7 | --> |
| 8 | 8 | ||
| 9 | QMK で使われる I2C マスタドライバには、MCU 間のポータビリティを提供するための一連の関数が用意されています。 | 9 | QMK で使われる I2C マスタドライバには、MCU 間のポータビリティを提供するための一連の関数が用意されています。 |
| 10 | 10 | ||
| 11 | ## 使用できる関数 | 11 | ## I2C アドレスについての重要なメモ :id=note-on-i2c-addresses |
| 12 | |||
| 13 | このドライバが期待する全てのアドレスは、アドレスバイトの上位7ビットにプッシュする必要があります。最下位ビットの設定(読み込み/書き込みを示す)は、それぞれの関数によって行われます。データシートやインターネットで列挙されているほとんど全ての I2C アドレスは、下位7ビットを占める7ビットとして表され、1ビット左(より上位)にシフトする必要があります。これは、ビット単位のシフト演算子 `<< 1` を使用して簡単に実行できます。 | ||
| 14 | |||
| 15 | これは、呼び出しごとに以下の関数を実行するか、アドレスの定義で1度だけ実行するかどちらかで行うことができます。例えば、デバイスのアドレスが `0x18` の場合: | ||
| 16 | |||
| 17 | `#define MY_I2C_ADDRESS (0x18 << 1)` | ||
| 18 | |||
| 19 | I2C アドレスと他の技術詳細について、さらなる情報を得るためには https://www.robot-electronics.co.uk/i2c-tutorial を見てください。 | ||
| 20 | |||
| 21 | ## 使用できる関数 :id=available-functions | ||
| 12 | 22 | ||
| 13 | | 関数 | 説明 | | 23 | | 関数 | 説明 | |
| 14 | |-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 24 | |-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
| 15 | | `void i2c_init(void);` | I2C ドライバを初期化します。他のあらゆるトランザクションを開始する前に、この関数を一度だけ呼ぶ必要があります。 | | 25 | | `void i2c_init(void);` | I2C ドライバを初期化します。他のあらゆるトランザクションを開始する前に、この関数を一度だけ呼ぶ必要があります。 | |
| 16 | | `uint8_t i2c_start(uint8_t address, uint16_t timeout);` | I2C トランザクションを開始します。アドレスは方向ビットのない7ビットスレーブアドレスです。 | | 26 | | `i2c_status_t i2c_start(uint8_t address, uint16_t timeout);` | I2C トランザクションを開始します。アドレスは方向ビットのない7ビットスレーブアドレスです。 | |
| 17 | | `uint8_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを送信します。アドレスは方向ビットのない7ビットスレーブアドレスです。トランザクションのステータスを返します。 | | 27 | | `i2c_status_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを送信します。アドレスは方向ビットのない7ビットスレーブアドレスです。トランザクションのステータスを返します。 | |
| 18 | | `uint8_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを受信します。アドレスは方向ビットのない7ビットスレーブアドレスです。 `length` で指定した長さのバイト列を `data` に保存し、トランザクションのステータスを返します。 | | 28 | | `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを受信します。アドレスは方向ビットのない7ビットスレーブアドレスです。 `length` で指定した長さのバイト列を `data` に保存し、トランザクションのステータスを返します。 | |
| 19 | | `uint8_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_transmit` と同様ですが、 `regaddr` でスレーブのデータ書き込み先のレジスタを指定します。 | | 29 | | `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_transmit` と同様ですが、 `regaddr` でスレーブのデータ書き込み先のレジスタを指定します。 | |
| 20 | | `uint8_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_receive` と同様ですが、 `regaddr` でスレーブのデータ読み込み先のレジスタを指定します。 | | 30 | | `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_receive` と同様ですが、 `regaddr` でスレーブのデータ読み込み先のレジスタを指定します。 | |
| 21 | | `uint8_t i2c_stop(void);` | I2C トランザクションを終了します。 | | 31 | | `i2c_status_t i2c_stop(void);` | I2C トランザクションを終了します。 | |
| 22 | 32 | ||
| 23 | ### 関数の戻り値 | 33 | ### 関数の戻り値 :id=function-return |
| 24 | 34 | ||
| 25 | `void i2c_init(void)` を除く上にあるすべての関数は、次の真理値表にある値を返します。 | 35 | `void i2c_init(void)` を除く上にあるすべての関数は、次の真理値表にある値を返します。 |
| 26 | 36 | ||
| 27 | | 戻り値 | 説明 | | 37 | |戻り値の定数 |値 |説明 | |
| 28 | |--------|------------------------------| | 38 | |--------------------|---|----------------------------| |
| 29 | | 0 | 処理が正常に実行されました。 | | 39 | |`I2C_STATUS_SUCCESS`|0 |処理が正常に実行されました。| |
| 30 | | -1 | 処理に失敗しました。 | | 40 | |`I2C_STATUS_ERROR` |-1 |処理に失敗しました。 | |
| 31 | | -2 | 処理がタイムアウトしました。 | | 41 | |`I2C_STATUS_TIMEOUT`|-2 |処理がタイムアウトしました。| |
| 32 | 42 | ||
| 33 | ## AVR | 43 | ## AVR :id=avr |
| 34 | 44 | ||
| 35 | ### 設定 | 45 | ### 設定 :id=avr-configuration |
| 36 | 46 | ||
| 37 | I2Cマスタドライバを設定するために、次の定義が使えます。 | 47 | I2Cマスタドライバを設定するために、次の定義が使えます。 |
| 38 | 48 | ||
| @@ -43,11 +53,11 @@ I2Cマスタドライバを設定するために、次の定義が使えます | |||
| 43 | 53 | ||
| 44 | AVR は通常 I2C ピンとして使う GPIO が設定されているので、これ以上の設定は必要ありません。 | 54 | AVR は通常 I2C ピンとして使う GPIO が設定されているので、これ以上の設定は必要ありません。 |
| 45 | 55 | ||
| 46 | ## ARM | 56 | ## ARM :id=arm |
| 47 | 57 | ||
| 48 | ARM の場合は、内部に ChibiOS I2C HAL ドライバがあります。この節では STM32 MCU を使用していると仮定します。 | 58 | ARM の場合は、内部に ChibiOS I2C HAL ドライバがあります。この節では STM32 MCU を使用していると仮定します。 |
| 49 | 59 | ||
| 50 | ### 設定 | 60 | ### 設定 :id=arm-configuration |
| 51 | 61 | ||
| 52 | ARM MCU 用の設定はしばしば非常に複雑です。これは、多くの場合複数の I2C ドライバをさまざまなポートに対して割り当てられるためです。 | 62 | ARM MCU 用の設定はしばしば非常に複雑です。これは、多くの場合複数の I2C ドライバをさまざまなポートに対して割り当てられるためです。 |
| 53 | 63 | ||
| @@ -82,7 +92,7 @@ ChibiOS I2C ドライバの設定項目は STM32 MCU の種類に依存します | |||
| 82 | STM32F1xx, STM32F2xx, STM32F4xx, STM32L0xx, STM32L1xx では I2Cv1 が使われます。 | 92 | STM32F1xx, STM32F2xx, STM32F4xx, STM32L0xx, STM32L1xx では I2Cv1 が使われます。 |
| 83 | STM32F0xx, STM32F3xx, STM32F7xx, STM32L4xx では I2Cv2 が使われます。 | 93 | STM32F0xx, STM32F3xx, STM32F7xx, STM32L4xx では I2Cv2 が使われます。 |
| 84 | 94 | ||
| 85 | #### I2Cv1 | 95 | #### I2Cv1 :id=i2cv1 |
| 86 | 96 | ||
| 87 | STM32 MCU の I2Cv1 では、クロック周波数とデューティ比を次の変数で変更できます。詳しくは <https://www.playembedded.org/blog/stm32-i2c-chibios/#I2Cv1_configuration_structure> を参照してください。 | 97 | STM32 MCU の I2Cv1 では、クロック周波数とデューティ比を次の変数で変更できます。詳しくは <https://www.playembedded.org/blog/stm32-i2c-chibios/#I2Cv1_configuration_structure> を参照してください。 |
| 88 | 98 | ||
| @@ -92,7 +102,7 @@ STM32 MCU の I2Cv1 では、クロック周波数とデューティ比を次の | |||
| 92 | | `I2C1_CLOCK_SPEED` | `100000` | | 102 | | `I2C1_CLOCK_SPEED` | `100000` | |
| 93 | | `I2C1_DUTY_CYCLE` | `STD_DUTY_CYCLE` | | 103 | | `I2C1_DUTY_CYCLE` | `STD_DUTY_CYCLE` | |
| 94 | 104 | ||
| 95 | #### I2Cv2 | 105 | #### I2Cv2 :id=i2cv2 |
| 96 | 106 | ||
| 97 | STM32 MCU の I2Cv2 では、信号のタイミングパラメータを次の変数で変更できます。詳しくは <https://www.st.com/en/embedded-software/stsw-stm32126.html> を参照してください。 | 107 | STM32 MCU の I2Cv2 では、信号のタイミングパラメータを次の変数で変更できます。詳しくは <https://www.st.com/en/embedded-software/stsw-stm32126.html> を参照してください。 |
| 98 | 108 | ||
| @@ -111,11 +121,11 @@ STM32 MCU では GPIO ピンを設定するとき、別の「代替機能」モ | |||
| 111 | | `I2C1_SCL_PAL_MODE` | `4` | | 121 | | `I2C1_SCL_PAL_MODE` | `4` | |
| 112 | | `I2C1_SDA_PAL_MODE` | `4` | | 122 | | `I2C1_SDA_PAL_MODE` | `4` | |
| 113 | 123 | ||
| 114 | #### その他 | 124 | #### その他 :id=other |
| 115 | 125 | ||
| 116 | `void i2c_init(void)` 関数は `weak` 属性が付いており、オーバーロードすることができます。この場合、上記で設定した変数は使用されません。可能な GPIO の設定については、 MCU のデータシートを参照してください。次に示すのは初期化関数の例です: | 126 | `void i2c_init(void)` 関数は `weak` 属性が付いており、オーバーロードすることができます。この場合、上記で設定した変数は使用されません。可能な GPIO の設定については、 MCU のデータシートを参照してください。次に示すのは初期化関数の例です: |
| 117 | 127 | ||
| 118 | ```C | 128 | ```c |
| 119 | void i2c_init(void) | 129 | void i2c_init(void) |
| 120 | { | 130 | { |
| 121 | setPinInput(B6); // Try releasing special pins for a short time | 131 | setPinInput(B6); // Try releasing special pins for a short time |
