From e4f7b4e40f0a60299bae6b46d1906e5c585c5117 Mon Sep 17 00:00:00 2001 From: nurix87 Date: Wed, 26 Feb 2020 11:38:17 +0700 Subject: [PATCH] adding gpio and i2c pages (draft) --- docs/helios64/i2c.md | 27 +++++++++++++++++++++++++++ docs/helios64/img/hardware/gpio.jpg | Bin 0 -> 14705 bytes 2 files changed, 27 insertions(+) create mode 100644 docs/helios64/i2c.md create mode 100644 docs/helios64/img/hardware/gpio.jpg diff --git a/docs/helios64/i2c.md b/docs/helios64/i2c.md new file mode 100644 index 0000000..f9a7a20 --- /dev/null +++ b/docs/helios64/i2c.md @@ -0,0 +1,27 @@ +### Check I2C Communication + +To check if the system can communicate with the I2C device, we should first scan the I2C bus to see if we can detect the device. + +1. Install the Linux i2c tools. + +``` +$ sudo apt-get install i2c-tools +``` + +2. Use **i2cdetect** tool to scan I2C Bus 1. + +``` +root@helios64:~# i2cdetect -y 1 + + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- -- +40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- -- +``` + +Here we can see there is a device detected at the address 0x3c. We can conclude is our OLED screen, unless you have connected more than just one I2C device on the **J9** header. diff --git a/docs/helios64/img/hardware/gpio.jpg b/docs/helios64/img/hardware/gpio.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2b54103831b4eb0455ed1ca3508c642e108b5419 GIT binary patch literal 14705 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