Raspberry Pi I2C

I2C

見つけました
連続試験で不安定なのでオシロで波形やら見なければと。それとプルアップ抵抗など。いい記事です。多謝!
400KHzについてはこちらにいい記事あり(下記にコピーした記事あり)。

Raspberry PiとI2C接続のキャラクタ・ディスプレイ その3 LCDのAQM1602A | 電子工作の環境向上
Raspberry Pi Python IoT spresense Arduino IDE LED Lチカ

I2Cの規格は厳密

I2CのStandard Modeでは、HighとLowの電圧規定は次のようになっています。Vdd=3.3Vとします(http://www.nxp.com/documents/user_manual/UM10204_JA.pdf)。

  • VIL(Low Level Input Voltage) :-0.5V~0.99V(1.5V固定の例外もある)
  • VIH(High Level Input Voltage):最小2.31V(3V固定の例外もある)

smbusでは少し異なります(http://pmbus.org/Assets/PDFS/Public/SMBus_3_0_20141220.pdf)。

  • VIL:~0.8V
  • VIH:1.35V~VDD

Raspberry PiにはI2Cバスにプルアップ抵抗1.8kΩが実装されています。8ビット・マイコンのサンプルでは10kΩが使われていたので、ずいぶん小さな抵抗値です。

キャラクタLCDモジュールのAQM1602Aをつなぐ

ラズパイのI2CインターフェースにAQM1602Aをつなぎます。電源電圧は3.1~5.5Vなので、3.3Vで利用します。消費電力は3.3V時に1mAと省エネ・デバイスです。1行に16文字、2行の表示ができます。これは、前に使ったSO1602Aと同じ表示文字数です。

変換基板のI2Cラインにはプルアップ抵抗10kΩは実装されていますが、デフォルトではつながっていません。

I2Cツールで接続を確認

i2cdetect -y 1

何も表示されません。何十回か繰り返すと、3eの表示が出ることがあります。SDAラインがLowレベルを満たしていないため、簡易的に、2.2k~3kΩでGNDにプルダウンする対応策がネット上で紹介されています。3kΩをつなぐと、3eに存在することが確認できます。

Changing the default I2C bus speed on the Raspberry Pi can help improve the performance of some projects. This is particularly important when using the I2C interface to control a display module. In the newer versions of Raspbian this change must be made using a Device Tree parameter.

The bus speed is sometimes referred to as “baudrate” although the two aren’t actually the same thing.

Step 1 – Enable the I2C Interface

Before the interface baudrate can be changed the I2C interface must be enabled. This can be done using “raspi-config” on the command line or “Raspberry Pi Configuration” on the Raspbian desktop.

For step-by-step instructions on how to do this please take a look at the Enable I2C Interface on the Raspberry Pi post.

Step 2 – Edit Config.txt File to set I2C Bus Speed

Using the following command the config.txt file can be edited :

sudo nano /boot/config.txt

Find the line containing “dtparam=i2c_arm=on”.

Add “,i2c_arm_baudrate=400000” where 400000 is the new speed (400 Kbit/s). Note the comma.

This should give you a line looking like :

dtparam=i2c_arm=on,i2c_arm_baudrate=400000

This enables the bus and sets the baudrate at the same time with a comma separating both parameters.

Use CTRL-X, then Y, then RETURN to save the file and exit.

Step 3 – Reboot

Finally, reboot the Pi for the new setting to take effect :

sudo reboot

I2C Baudrate Values

The BCM2835 ARM Peripherals specification (page 28) says that the Pi has a “fast-mode” (400Kb/s) driver. For this reason I would recommend using 100000 or 400000 as baudrate values. The default is usually set to 100000.

I successfully used 400000 with an OLED display module to increase the rate at which images could be updated.

No tags for this post.
タイトルとURLをコピーしました