{ "cells": [ { "cell_type": "markdown", "id": "aabf203b", "metadata": {}, "source": [ "\n", "*This notebook contains material from [cbe61622](https://jckantor.github.io/cbe61622);\n", "content is available [on Github](https://github.com/jckantor/cbe61622.git).*\n" ] }, { "cell_type": "markdown", "id": "ed67788f", "metadata": {}, "source": [ "\n", "< [5.1 Interfacing with Micropython on the Raspberry Pi Pico](https://jckantor.github.io/cbe61622/05.01-Getting_Started.html) | [Contents](toc.html) | [5.3 LCD1602](https://jckantor.github.io/cbe61622/05.03-LCD1602.html) >

\"Open

\"Download\"" ] }, { "cell_type": "markdown", "id": "6e1643ca-45a2-4e99-9fd3-35e67b4b0d13", "metadata": { "nbpages": { "level": 1, "link": "[5.2 Grove Starter Kit for Raspberry Pi Pico](https://jckantor.github.io/cbe61622/05.02-Seeed_Grove_Pico_Starter_Kit.html#5.2-Grove-Starter-Kit-for-Raspberry-Pi-Pico)", "section": "5.2 Grove Starter Kit for Raspberry Pi Pico" } }, "source": [ "# 5.2 Grove Starter Kit for Raspberry Pi Pico\n", "\n", "* [Grove Starter Kit for Raspberry Pi Pico](https://www.seeedstudio.com/Grove-Starter-Kit-for-Raspberry-Pi-Pico-p-4851.html) with Free Course -- Product Page\n", "* [Wiki for Grove Starter Kit for Raspberry Pi Pico](https://wiki.seeedstudio.com/Grove_Shield_for_Pi_Pico_V1.0/)\n" ] }, { "cell_type": "markdown", "id": "3ac34041-61d2-401b-b240-64ef11e1e71f", "metadata": { "nbpages": { "level": 2, "link": "[5.2.1 Communication methods](https://jckantor.github.io/cbe61622/05.02-Seeed_Grove_Pico_Starter_Kit.html#5.2.1-Communication-methods)", "section": "5.2.1 Communication methods" } }, "source": [ "## 5.2.1 Communication methods\n", "\n", "* **SPI (Serial Peripheral Interface)**. Developed by Motorola in the 1980's for short distance communication in embedded systems. SPI typically operates at up to a few MHz with a single controller and one or more peripherals. It requires at least four wires and commonly used for SD cards and LCD displays.\n", "* **I2C (Inter-Integrated Circuit)**. A communication bus invented by Phillips Semiconductors in 1982. The purpose of the bus is to attach peripheral integrated circuits to processors over short distances. Unlike SPI, I2C can have multiple controllers and peripherals on the same bus. It has been widely adopted for embedded systems applications with data transfer requirements below about 400 kbit/second.\n", "* **UART (Universal Asynchronous Receiver/Transmitter)**. UART describes a physical circuit in a chip or microcontroller to transmit anad receive serial data from a UART located on another device. Only two wires are required in addition to a ground wire, no clock signal in needed. \n", "* **PIO (Programmable I/O)**." ] }, { "cell_type": "markdown", "id": "7e49b71f-35b4-4091-a50b-a4a3b6abd1ee", "metadata": { "nbpages": { "level": 2, "link": "[5.2.2 I2C Protocol](https://jckantor.github.io/cbe61622/05.02-Seeed_Grove_Pico_Starter_Kit.html#5.2.2-I2C-Protocol)", "section": "5.2.2 I2C Protocol" } }, "source": [ "## 5.2.2 I2C Protocol\n", "\n", "I2C refers to Inter-Integrated Circuit, a communication bus invented by Phillips Semiconductors in 1982. The purpose of the bus is to attach peripheral integrated circuits to processors over short distances. It has been widely adopted for embedded systems applications with data transfer requirements below about 400 kbit/second. This is sufficient for many instrumentation requirements.\n", "\n", "The communications bus requires two signal lines designated SDA (data)and SCL (clock). Both are open-collector (or open-drain) lines requiring pull up resistors to maintain a quiescent high state. Typical voltages are +5 or +3.3 volts.\n", "\n", "An I2C bus can have multiple controllers and peripherals. A controller initiates a data transfer, the peripheral responds. A data transfer is performed as follows:\n", "\n", "1. A controller pulls the SDA line low. The first device on the bus to pull SDA low is the controller. This is the start condition.\n", "\n", "2. The controller then pulls the SCL line low." ] }, { "cell_type": "markdown", "id": "8682f658-fa8a-49bb-b586-fbbf92c24937", "metadata": { "nbpages": { "level": 2, "link": "[5.2.3 I2C Pinout](https://jckantor.github.io/cbe61622/05.02-Seeed_Grove_Pico_Starter_Kit.html#5.2.3-I2C-Pinout)", "section": "5.2.3 I2C Pinout" } }, "source": [ "## 5.2.3 I2C Pinout\n", "\n", "The Raspberry Pi Pico provides two independent I2C channels, numbered 0 and 1, that are accessible through the GPIO pins. The following table shows GPIO pin where I2C channel 0 and I2C channel 1 can be accessed. \n", "\n", "| I2C0 SDA/SCL | I2C1 SDA/SCL |\n", "| :--: | :--: |\n", "| GP0, GP1 | GP2, GP3 |\n", "| GP4, GP5 | GP6, GP7 |\n", "| GP8, GP9 | GP10, GP11 | \n", "| GP12, GP13 | GP14, GP15 |\n", "| GP16, GP17 | GP18, GP19 |\n", "| GP20, GP21 | GP26, GP27 |\n", "\n", "![](https://microcontrollerslab.com/wp-content/uploads/2021/01/Raspberry-Pi-Pico-pinout-diagram.svg)" ] }, { "cell_type": "markdown", "id": "02d3d18c", "metadata": {}, "source": [ "\n", "< [5.1 Interfacing with Micropython on the Raspberry Pi Pico](https://jckantor.github.io/cbe61622/05.01-Getting_Started.html) | [Contents](toc.html) | [5.3 LCD1602](https://jckantor.github.io/cbe61622/05.03-LCD1602.html) >

\"Open

\"Download\"" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 5 }