DIODEN-LOGO

DIODES AP33772 USB PD Sink Controller Raspberry Pi I2C-Schnittstelle

DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-PRODUKT

Einführung

  • Der AP33772 Sink Controller, der als Protokollgerät eines mit einem USB PD3.0 Typ C-Anschluss ausgestatteten Geräts (TCD, Energy Sink) fungiert, soll das richtige Power Data Object (PDO) vom mit einem USB PD3.0 Typ C-Anschluss ausgestatteten PD3.0-kompatiblen Ladegerät (PDC, Energy Source) anfordern.
  • Abbildung 1 zeigt einen TCD, eingebettet mit PD3.0 Sink Controller IC (AP33772), der physisch mit PDC verbunden ist, eingebettet mit USB PD3.0 Decoder (AP43771), über einen
  • Kabel Typ C auf Typ C. Basierend auf integrierter USB PD3.0-kompatibler Firmware würde das Paar AP33772 und AP43771 das USB PD3.0-Standardanschlussverfahren durchlaufen, um einen geeigneten PD3.0-Ladezustand herzustellen.
  • Der AP33772 Sink Controller EVB bietet Systemdesignern eine einfache Handhabung und große Vielseitigkeit, um PDOs vom USB Power Delivery Charger anzufordern, indem sie integrierte AP33772-Befehle über die I2C-Schnittstelle senden. Ein typisches Systemdesign erfordert MCU-Programmierung, die eine spezielle Software-Einrichtung (z. B. IDE) erfordert und ein zeitaufwändiger Entwicklungsprozess sein kann.
  • Im Gegensatz dazu bietet Raspberry Pi (RPI), ein Single Board Computer (SBC), der auf einem benutzerfreundlichen Linux-Betriebssystem läuft und mit flexiblen GPIO-Pins ausgestattet ist, eine unkomplizierte Möglichkeit, die Funktion des AP33772 Sink EVB mit einem PD-Ladegerät zu validieren. Ziel dieses Leitfadens ist es, Systemdesignern eine effektive Plattform zu bieten, um die Softwarevalidierung auf RPI schnell abzuschließen und die Entwicklung dann auf jede gewünschte MCU zu portieren, um den Marktanforderungen für schnelle Durchlaufzeiten gerecht zu werden.
  • Als ergänzendes Dokument zum AP33772 EVB-Benutzerhandbuch veranschaulicht dieses Benutzerhandbuch eine einfache Möglichkeit, AP33772 EVB mit einem RPI SBC über die I2C-Schnittstelle zu steuern.
  • Die Rolle des in Abbildung 1 dargestellten MCU-Blocks zur Schnittstelle mit AP33772 wird von einem RPI übernommen. Dieses Benutzerhandbuch enthält viele Informationen zur Registerdefinition und -verwendung, z. B.ampVollständige und aktuelle Informationen finden Sie jedoch im AP33772 EVB-Benutzerhandbuch. (Siehe Referenz 2)DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 1
  • Abbildung 1 – Ein typischer TCD verwendet den AP33772 PD Sink Controller mit I2C-Schnittstelle, um Strom von einem USB Type-C PD3.0/PPS Compliance Source Adapter anzufordern

Einrichtung der Validierungsplattform

AP33772 Spülen-Controller EVB
Abbildung 2 zeigt das Bild des Sink Controller EVB. Es verfügt über einen Typ-C-Anschluss, I2C-Pins, einen GPIO3-Pin für Interrupt, einen NTC-Thermistor für OTP, LED-Anzeigen zur Anzeige des Ladestatus und einen Vout-Anschluss zur Last.DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 2

Raspberry Pi Zero 2W

  • Jede aktuelle Version von RPI kann den AP33772 Sink Controller EVB über I2C-Pins steuern. In diesem Benutzerhandbuch wird aufgrund seiner Kosteneffizienz und Vielseitigkeit ein Raspberry Pi Zero 2 W (RPI Z2W) verwendet. Er hat den kleinsten Formfaktor aller RPIs und ist mit WLAN und Bluetooth ausgestattet, sodass eine drahtlose Verbindung ohne zusätzliche Komponenten möglich ist. Er erfüllt seinen Zweck als Validierungsplattform für den AP33772 Sink Controller EVB perfekt.
  • Der Benutzer kann die offizielle Raspberry Pi-Website webWebsite für weitere Informationen (https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/)DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 3DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 4

Verbindung und Einschalten der Validierungsplattform

Abbildung 5 zeigt eine vollständige Verbindung und Einrichtung der Validierungsplattform. Der Benutzer sollte diese Schritte befolgen:

  1. Verbinden Sie die SCL-, SDA- und GND-Pins zwischen RPI und AP33772 EVB.
  2. Verbinden Sie das 65-W-PD-Ladegerät und das AP33772 EVB mit einem Typ-C-Kabel
  3. Schalten Sie RPI und PD-Ladegerät ein.DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 5

Raspberry Pi-Software-Setup

Raspberry Pi-Betriebssystem

  • Es gibt viele verschiedene Betriebssysteme, die RPI unterstützen. Unter diesen wurde Raspberry Pi OS ausgewählt, da es am häufigsten verwendet wird und auf der offiziellen RPI-Website empfohlen wird.

Laden Sie das Betriebssystem-Image herunter und bereiten Sie die SD-Karte vor

  • Laden Sie die Raspberry Pi Imager-Tools herunter und installieren Sie sie auf einem PC (https://www.raspberrypi.com/software/). Folgen Sie den Anweisungen, um eine Micro-SD mit dem richtigen Betriebssystem-Image vorzubereiten (https://youtu.be/ntaXWS8Lk34/). Bitte beachten Sie, dass eine Micro-SD-Karte mit 32 GB oder mehr empfohlen wird.DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 6

Raspberry PI OS Installation

  • Stecken Sie die zuvor mit dem Imager geladene Micro-SD-Karte in den Micro-SD-Steckplatz des RPI. Schließen Sie das Netzteil, die Maus/Tastatur und den HDMI-Monitor an. Schalten Sie den RPI ein und folgen Sie den Anweisungen, um die Betriebssysteminstallation und die Grundeinrichtung abzuschließen. Stellen Sie sicher, dass die neuesten Updates im Betriebssystem enthalten sind.

Einrichten der erforderlichen Funktionen

  • Um die I2C-Schnittstelle auf RPI erfolgreich auszuführen, müssen wir die SSH-, VNC- und I2C-Funktionen konfigurieren oder installieren.

Raspberry Pi-Konfiguration – SSH, VNC, I2C

  • Öffnen Sie nach dem Hochfahren des RPI das Dienstprogramm „Raspberry Pi Configure“ und aktivieren Sie die SSH-, VNC- und I2C-Funktionen.DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 7

I2C-Baudratenkonfiguration

  • Ersetzen Sie die Zeilen bezüglich dtparam und dtoverlay in /boot/config.txt file mit:
  • dtoverlay=i2c-bcm2708
  • dtparam=i2c_arm=ein,i2c_arm_baudrate=640000

I2C-Tools Installation

  • I2C-Tools ist ein Toolset, das einfache Befehle bereitstellt, die auf der Kommandozeile unter Raspberry Pi OS ausgeführt werden. Installieren Sie I2C-Tools auf dem Betriebssystem, indem Sie Folgendes ausführen: sudo apt install i2c-tools

SMBus2-Installation

  • SMBus2 ist ein Python-Modul, das dem Benutzer praktische Funktionen zur Steuerung der I2C-Schnittstelle in einer Python-Umgebung bietet. Installieren Sie das SMBus2-Modul für Python auf dem Betriebssystem, indem Sie Folgendes ausführen: sudo pip3 install smbus2

Grundlegende Befehlsübungamples

  • Dieses Benutzerhandbuch zeigt zwei verschiedene Methoden zum Arbeiten mit der I2C-Schnittstelle auf RPI. Dabei handelt es sich um das Dienstprogramm I2C-Tools und das Python SMBus2-Modul. Die grundlegenden Befehle beider Methoden werden in diesem Abschnitt vorgestellt.

 I2C-Tools Befehl Examples

  • Das Dienstprogrammpaket I2C-Tools bietet die Befehle i2cdetect, i2cget und i2cset. Vereinfachte Verwendungen werden im Beispiel beschrieben.ampDateien in diesem Abschnitt. Ausführliche Informationen zum Dienstprogramm I2C-Tools finden Sie unter https://linuxhint.com/i2c-linux-utilities/.
  • Tabelle 1 zeigt die AP33772-Registerübersicht, damit der Benutzer die Befehlsverwendung in diesem Abschnitt leichter nachvollziehen kann. Vollständige Registerinformationen finden Sie im AP33772 Sink Controller EVB-Benutzerhandbuch.
Registrieren Befehl Länge Attribut Ein Beschreibung
 

SRCPDO

 

0 x 00

 

28

 

RO

 

Alle 00h

Power Data Object (PDO) wird verwendet, um die Stromversorgungsfunktionen der PD Source (SRC) offenzulegen.

Die Gesamtlänge beträgt 28 Bytes

PDONUM 0x1C 1 RO 00 Uhr Gültige Quell-PDO-Nummer
STATUS Version: 1 RC 00 Uhr Status von AP33772
MASKE Version: 1 RW 01 Uhr Interrupt-Aktivierungsmaske
VOLTAGE 0 x 20 1 RO 00 Uhr LSB 80mV
AKTUELL 0 x 21 1 RO 00 Uhr LSB 24mA
TEMP 0 x 22 1 RO 19 Uhr Temperatur, Einheit: °C
OKPTHR 0 x 23 1 RW 00 Uhr OCP-Schwellenwert, LSB 50 mA
OTPTHR 0 x 24 1 RW 78 Uhr OTP-Schwellenwert, Einheit: °C
DRTH 0 x 25 1 RW 78 Uhr Derating-Schwellenwert, Einheit: °C
TR25 0 x 28 2 RW 2710 Uhr Thermischer Widerstand bei 25 °C, Einheit: Ω
TR50 Version: 2 RW 1041 Uhr Thermischer Widerstand bei 50 °C, Einheit: Ω
TR75 0x2C 2 RW 0788 Uhr Thermischer Widerstand bei 75 °C, Einheit: Ω
TR100 Version: 2 RW 03CEh Thermischer Widerstand bei 100 °C, Einheit: Ω
RDO 0 x 30 4 WO 00000000 Uhr Request Data Object (RDO) wird zum Anfordern von Leistungsfunktionen verwendet.
Video: 0 x 34 2 RW 0000 Uhr Hersteller-ID, Reserviert für zukünftige Anwendungen
PID 0 x 36 2 RW 0000 Uhr Produkt-ID, Reserviert für zukünftige Anwendungen
RESERVIERT 0 x 38 4 Reserviert für zukünftige Anwendungen

Tabelle 1 – AP33772 Registerübersicht

Alle an I2C angeschlossenen Geräte erkennen – i2cdetect

  • Um alle aktuell an den I2C-2-Bus angeschlossenen I1C-Geräte anzuzeigen, geben Sie in der Eingabeaufforderung Folgendes ein: i2cdetect -y 1
  • Wenn AP33772 Sink Controller EVB angeschlossen ist, sollte der Benutzer sehen, dass das Gerät an der Adresse 0x51 angeschlossen ist

SRCPDO lesen (0x00~0x1B)

  • Der Befehl i2cget unterstützt kein Blocklesen von mehr als 2 Bytes. Der Benutzer muss eine „for-Schleife“ verwenden, um alle 28 Byte langen PDO-Daten anzuzeigen. Um alle PDO-Daten anzuzeigen, geben Sie in der Bash-Eingabeaufforderung Folgendes ein: for i in {0..27}; do i2cget -y 1 0x51 $ib; done
  • Es werden 28-Byte-Daten angezeigt, die 7 PDOs repräsentieren

PDONUM lesen (0x1C)

  • Um die Gesamtzahl der gültigen PDOs anzuzeigen, geben Sie in der Eingabeaufforderung Folgendes ein: i2cget -y 1 0x51 0x1c b

STATUS lesen (0x1D)

  • Dieser Befehl meldet den Status des Sink Controllers, einschließlich Herabstufung, OTP, OCP, OVP, Anforderung abgelehnt, Anforderung abgeschlossen und Bereit. Um die Statusinformationen anzuzeigen, geben Sie in der Eingabeaufforderung Folgendes ein: i2cget -y 1 0x51 0x1d b
  • Der Benutzer sollte diesen Befehl nach jeder RDO-Anforderung verwenden, um durch Lesen des COMPLETE-Bits eine erfolgreiche RDO-Anforderung sicherzustellen. 4.1.5 MASK schreiben (0x1E)
  • Dieser Befehl aktiviert die Interrupts, die dem Host über den GPIO3-Pin von AP33772 Signale senden. Zu den Interrupts gehören Derating, OTP, OCP, OVP, Request Rejected, Request Completed und Ready. Um einen bestimmten Interrupt zu aktivieren, setzen Sie das entsprechende Bit auf eins. Zum BeispielampUm den OCP-Interrupt zu aktivieren, setzen Sie Bit 4 des MASK-Registers auf eins, indem Sie in der Eingabeaufforderung Folgendes eingeben: i2cset -y 1 0x51 0x1e 0x10 b
  • Der GPIO3-Pin von AP33772 wird hochgeschaltet, wenn der OCP-Schutz ausgelöst wird.

Lesen Sie BANDTAGE (0x20)

  • Dieser Befehl meldet den Voltage gemessen durch den AP33772 Sink Controller. Um die Lautstärke zu meldentage, geben Sie in der Eingabeaufforderung Folgendes ein: i2cget -y 1 0x51 0x20 b
  • Eine Einheit des angegebenen Wertes entspricht 80 mV.

Lesen CURRENT (0x21)

  • Dieser Befehl meldet den vom AP33772 Sink Controller gemessenen Strom. Um den Strom zu melden, geben Sie in der Eingabeaufforderung Folgendes ein: i2cget -y 1 0x51 0x21 b
  • Eine Einheit des angegebenen Wertes entspricht 24 mA.

TEMP lesen (0x22)

  • Dieser Befehl meldet die vom AP33772 Sink Controller gemessene Temperatur. Um die Temperatur zu melden, geben Sie in der Eingabeaufforderung Folgendes ein:
    i2cget -y 1 0x51 0x22 b
  • Eine Einheit des angegebenen Wertes entspricht 1 °C.
  • Lesen und Schreiben von OCPTHR (0x23), OTPTHR (0x24) und DRTHR (0x25)
  • Die OCP-, OTP- und Derating-Schwellenwerte können auf vom Benutzer gewünschte Werte geändert werden, indem die Werte in die Register OCPTHR, OTPTHR und DRTHR geschrieben werden. Als BeispielampUm den OCP-Schwellenwert auf 3.1 A zu ändern, sollte der Benutzer 0x3E (=3100/50=62=0x3E) in OCPTHR schreiben, indem er in der Eingabeaufforderung Folgendes eingibt: i2cset -y 1 0x51 0x23 0x3e b
  • Um den OTP-Schwellenwert auf 110 °C zu ändern, sollte der Benutzer 0x6E (=110) in OTPTHR schreiben, indem er in der Eingabeaufforderung Folgendes eingibt:
  • Um die Werte aus OCPTHR, OTPTHR und DRTHR auszulesen, geben Sie in der Eingabeaufforderung Folgendes ein:
  • i2cget -y 1 0x51 0x23 b i2cget -y 1 0x51 0x24 b i2cget -y 1 0x51 0x25 b
  • Lesen und Schreiben von TR25 (0x28~0x29), TR50 (0x2A~0x2B), TR75 (0x2C~0x2D) und TR100 (0x2E~0x2F)
  • Ein Murata 10KΩ Thermistor mit negativem Temperaturkoeffizienten (NTC) NCP03XH103 ist auf dem AP33772 EVB bestückt. Es liegt in der Entscheidung des Benutzers, den Thermistor im endgültigen Design durch einen anderen zu ersetzen. Der Benutzer sollte die Registerwerte TR25, TR50, TR75 und TR100 entsprechend den Spezifikationen des verwendeten Thermistors aktualisieren. Zum Beispielampich,
  • Im Design wird Muratas 6.8KΩ NCP03XH682 verwendet. Die Widerstandswerte bei 25°C, 50°C, 75°C und 100°C betragen 6800Ω (0x1A90), 2774Ω (0x0AD6), 1287Ω (0x0507) und 662Ω (0x0296). Um die entsprechenden Werte in diese Register zu schreiben, geben Sie in der Eingabeaufforderung Folgendes ein:
  • i2cset -y 1 0x51 0x28 0x1a90 w i2cset -y 1 0x51 0x2a 0x0ad6 w i2cset -y 1 0x51 0x2c 0x0507 w i2cset -y 1 0x51 0x2e 0x0296 w
  • Um die Werte auszulesen, geben Sie in der Eingabeaufforderung Folgendes ein: i2cget -y 1 0x51 0x28 w i2cget -y 1 0x51 0x2a w i2cget -y 1 0x51 0x2c w i2cget -y 1 0x51 0x2e w
  • Die Ausgabewerte sind 2-Byte-Wörter. Da die Befehle 2-Byte-Wörter direkt verarbeiten, müssen sich Benutzer hier keine Gedanken über die Little-Endian-Byte-Reihenfolge machen.

RDO schreiben (0x30~0x33)

  • Um ein PDO-Anforderungsverhandlungsverfahren einzuleiten, werden 4-Byte-Daten in Little-Endian-Bytereihenfolge in das RDO-Register (Request Data Object) geschrieben. Wie exampUm PDO3 mit 15 V und 3 A anzufordern, wird 0x3004B12C in das RDO-Register geschrieben. Geben Sie in der Eingabeaufforderung Folgendes ein: i2cset -y 1 0x51 0x30 0x2c 0xb1 0x04 0x30 i
  • Das niedrigstwertige Byte (0x2C) sollte zuerst geschrieben werden, um der Little-Endian-Bytereihenfolge zu entsprechen. Siehe Tabelle 9 und Tabelle 10 des AP33772 Sink Controller EVB User
  • Leitfaden für detaillierte Informationen zum RDO-Inhalt.
  • Der Benutzer kann einen Kaltstart durchführen, indem er das RDO-Register mit ausschließlich Nullen beschreibt: i2cset -y 1 0x51 0x30 0x00 0x00 0x00 0x00 i
  • Der AP33772 Sink Controller wird auf seinen Ausgangszustand zurückgesetzt und die Ausgabe wird ausgeschaltet.

Python SMBus2-Befehl Examples

  • Python wird aufgrund seiner großen Vielfalt an unterstützten Modulen immer beliebter. SMBus2 ist eines davon und kann I2C-Lese- und Schreibbefehle verarbeiten. SMBus2 bietet die Befehle read_byte_data, read_word_data, read_i2c_block_data, write_byte_data, write_word_data und write_i2c_block_data. Vereinfachte Verwendungen werden im Beispiel beschrieben.ampDateien in diesem Abschnitt. Ausführliche Informationen zum SMBus2-Modul finden Sie unter https://smbus2.readthedocs.io/en/latest/.

SRCPDO lesen (0x00~0x1B) 

  • SMBus.read_i2c_block_data ist ein effektiver Befehl, der das Lesen von bis zu 32-Byte-Blockdaten unterstützt. Um alle 28-Byte-PDO-Daten zu lesen, verwenden Sie Folgendes in der Python3-Umgebung:
  • SMBus.read_i2c_block_data(0x51, 0x00, 28)
  • 28 Ein-Byte-Daten, die 7 PDOs darstellen, werden in der Listendatenstruktur zurückgegeben.

PDONUM lesen (0x1C)

  • Um die Gesamtzahl der gültigen PDOs zu lesen, verwenden Sie Folgendes in der Python3-Umgebung:
  • SMBus.read_byte_data(0x51, 0x1c)
  • Es werden Ein-Byte-Daten zurückgegeben, die die gültige PDO-Anzahl darstellen.

STATUS lesen (0x1D)

  • Dieser Befehl meldet den Status des Sink Controllers, einschließlich Derating, OTP, OCP, OVP, Anfrage abgelehnt, Anfrage abgeschlossen und Bereit. Um die Statusinformationen zu lesen, verwenden Sie Folgendes in der Python3-Umgebung:
  • SMBus.read_byte_data(0x51, 0x1d)
  • Der Benutzer kann diesen Befehl nach jeder RDO-Anforderung verwenden, um durch Lesen des COMPLETE-Bits eine erfolgreiche RDO-Anforderung sicherzustellen.

MASKE schreiben (0x1E)

  • Dieser Befehl aktiviert die Interrupts, die den Host über den GPIO3-Pin von AP33772 signalisieren. Die Interrupts umfassen Derating, OTP, OCP, OVP, Request Rejected, Request
  • Abgeschlossen und Bereit. Um einen bestimmten Interrupt zu aktivieren, setzen Sie das entsprechende Bit auf eins. Zum BeispielampUm den OCP-Interrupt zu aktivieren, setzen Sie Bit 4 des MASK-Registers in der Python3-Umgebung mithilfe des Folgenden auf eins:
  • SMBus.write_byte_data(0x51, 0x1e, 0x10)
  • Der GPIO3-Pin von AP33772 wird hochgeschaltet, wenn der OCP-Schutz ausgelöst wird.

Lesen Sie BANDTAGE (0x20)

  • Dieser Befehl meldet den Voltage gemessen durch den AP33772 Sink Controller. Um die Lautstärke zu meldentage, verwenden Sie Folgendes in der Python3-Umgebung:
  • SMBus.read_byte_data(0x51, 0x20)
  • Eine Einheit des angegebenen Wertes entspricht 80 mV.

Lesen CURRENT (0x21)

  • Dieser Befehl meldet den vom AP33772 Sink Controller gemessenen Strom. Um den Strom zu melden, verwenden Sie Folgendes in der Python3-Umgebung
  • SMBus.read_byte_data(0x51, 0x21)
  • Eine Einheit des angegebenen Wertes entspricht 24 mA.

TEMP lesen (0x22)

  • Dieser Befehl meldet die vom AP33772 Sink Controller gemessene Temperatur. Um die Temperatur zu melden, verwenden Sie Folgendes in der Python3-Umgebung:
  • SMBus.read_byte_data(0x51, 0x22)
  • Eine Einheit des angegebenen Wertes entspricht 1 °C.

Lesen und Schreiben von OCPTHR (0x23), OTPTHR (0x24) und DRTHR (0x25) 

  • Die OCP-, OTP- und Derating-Schwellenwerte können auf vom Benutzer gewünschte Werte geändert werden, indem die Werte in die Register OCPTHR, OTPTHR und DRTHR geschrieben werden. Als BeispielampUm den OCP-Schwellenwert auf 3.1 A zu ändern, sollte der Benutzer beispielsweise 0x3E (=3100/50=62=0x3E) in OCPTHR schreiben, indem er in einer Python3-Umgebung Folgendes verwendet: SMBus.write_byte_data(0x51, 0x23, 0x3e)
  • Um den OTP-Schwellenwert auf 110 °C zu ändern, sollte der Benutzer 0x6E (=110) in OTPTHR schreiben, indem er in einer Python3-Umgebung Folgendes verwendet: SMBus.write_byte_data(0x51, 0x24, 0x6e)
  • Um den Derating-Schwellenwert auf 100 °C zu ändern, sollte der Benutzer 0x64 (=100) in DRTHR schreiben, indem er in einer Python3-Umgebung Folgendes verwendet: SMBus.write_byte_data(0x51, 0x25, 0x64)
  • Um die Werte aus OCPTHR, OTPTHR und DRTHR auszulesen, verwenden Sie Folgendes in einer Python3-Umgebung: SMBus.read_byte_data(0x51, 0x23) SMBus.read_byte_data(0x51, 0x24) SMBus.read_byte_data(0x51, 0x25) .
  • Lesen und Schreiben von TR25 (0x28~0x29), TR50 (0x2A~0x2B), TR75 (0x2C~0x2D) und TR100 (0x2E~0x2F)
  • Ein Murata 10KΩ Thermistor mit negativem Temperaturkoeffizienten (NTC) NCP03XH103 ist auf dem AP33772 EVB bestückt. Es liegt in der Entscheidung des Benutzers, den Thermistor im endgültigen Design durch einen anderen zu ersetzen. Der Benutzer sollte die Registerwerte TR25, TR50, TR75 und TR100 entsprechend den Spezifikationen des verwendeten Thermistors aktualisieren. Zum BeispielampIm Design wird Muratas 6.8KΩ NCP03XH682 verwendet. Die Widerstandswerte bei 25 °C, 50 °C, 75 °C und 100 °C betragen 6800Ω (0x1A90), 2774Ω (0x0AD6), 1287Ω (0x0507) und 662Ω (0x0296). Um die entsprechenden Werte in diese Register zu schreiben, verwenden Sie Folgendes in der Python3-Umgebung:
  • SMBus.write_word_data(0x51, 0x28, 0x1a90) SMBus.write_word_data(0x51, 0x2a, 0x0ad6) SMBus.write_word_data(0x51, 0x2c, 0x0507) SMBus.write_word_data(0x51, 0x2e, 0x0296)
  • Um die Werte auszulesen, verwenden Sie Folgendes in einer Python3-Umgebung: SMBus.read_word_data(0x51, 0x28) SMBus.read_word_data(0x51, 0x2a) SMBus.read_word_data(0x51, 0x2c) SMBus.read_word_data(0x51, 0x2e)
  • Die Rückgabewerte sind ebenfalls 2-Byte-Wörter. Da die Befehle 2-Byte-Wörter direkt verarbeiten, müssen sich Benutzer hier keine Gedanken über die Little-Endian-Byte-Reihenfolge machen.

RDO schreiben (0x30~0x33)

  • Um ein PDO-Anforderungsverhandlungsverfahren einzuleiten, werden 4-Byte-Daten in Little-Endian-Bytereihenfolge in das RDO-Register (Request Data Object) geschrieben. Wie exampUm PDO3 mit 15 V und 3 A anzufordern, wird 0x3004B12C in das RDO-Register geschrieben. Verwenden Sie Folgendes in der Python3-Umgebung:
  • SMBus.write_i2c_block_data(0x51, 0x30, [0x2c, 0xb1, 0x04, 0x30])
  • Detaillierte Informationen zum RDO-Inhalt finden Sie in Tabelle 9 und Tabelle 10 des AP33772 Sink Controller EVB-Benutzerhandbuchs.
  • Der Benutzer kann einen Kaltstart durchführen, indem er das RDO-Register mit ausschließlich Nullen beschreibt:
  • SMBus.write_i2c_block_data(0x51, 0x30, [0x00, 0x00, 0x00, 0x00])
  • Der AP33772 Sink Controller wird auf seinen Ausgangszustand zurückgesetzt und die Ausgabe wird ausgeschaltet.

Praktischer Examples

Example 1: Bash I2C-Tools Example: ap33772_querypdo.bash
Dieses Example prüft alle gültigen PDOs und listet die voltage und aktuelle Leistungsinformationen heraus.
CodedetailsDIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 8

Codeausführung und AusgabenDIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 9

Example 2: Python SMBus2 ExampDatei: ap33772_allpdo.py3
Dieses Example prüft alle gültigen PDOs und fordert sie der Reihe nach in auf- und absteigender Reihenfolge an.
CodedetailsDIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 10DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 11DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 12

Codeausführung und AusgabenDIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 13DIODES-AP33772-USB-PD-Sink-Controller-Raspberry-Pi-I2C-Schnittstelle-ABB. 14

Exampden Code zum Download

Liste der Example Codes

  • ExampDie Codes haben Bash-Skript- und Python-Versionen
  1. ap33772_querypdo: fragt alle PDO-Informationen ab
  2. ap33772_reqpdo: meldet alle PDO-Informationen und sendet vom Benutzer angegebene PDO-Anfragen
  3. ap33772_allpdo: meldet alle PDO-Informationen und durchläuft alle PDO-Anfragen auf und ab
  4. ap33772_pps: meldet alle PDO-Informationen und ramps auf und ab der gesamten PPS voltage-Bereich in 50mV-Schritten
  5. ap33772_vit: Berichte Voltage-, Strom- und Temperaturinformationen
Exampdie Download-Site

Example Codes können von Github heruntergeladen werden. Geben Sie zum Herunterladen den folgenden Befehl ein: git clone https://github.com/diodinciot/ap33772.git-ap33772

Verweise

  1. AP33772 Datenblatt (USB PD3.0 PPS Sink Controller): https://www.diodes.com/products/power-management/ac-dc-converters/usb-pd-sink-controllers/
  2. AP33772 I2C Sink Controller EVB-Benutzerhandbuch: https://www.diodes.com/applications/ac-dc-chargers-and-adapters/usb-pd-sink-controller/
  3. Raspberry Pi Zero 2 W: https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/
  4. Raspberry Pi-Betriebssystem: https://www.raspberrypi.com/software/
  5. I2C-Tools-Dienstprogramm: https://linuxhint.com/i2c-linux-utilities/
  6. SMBus2-Modul: https://smbus2.readthedocs.io/en/latest/

Änderungsverlauf

Revision Ausgabedatum Kommentar Autor
1.0 4 Erstveröffentlichung Edward Zhao
WICHTIGER HINWEIS
  • DIODES INCORPORATED GIBT KEINERLEI AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GARANTIEN JEGLICHER ART IN BEZUG AUF DIESES DOKUMENT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE STILLSCHWEIGENDEN GARANTIEN DER MARKTGÄNGIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK (UND DEREN Äquivalente UNTER DEN GESETZEN EINER JEGLICHEN GERICHTSBARKEIT).
  • Diodes Incorporated und seine Tochtergesellschaften behalten sich das Recht vor, ohne vorherige Ankündigung Modifikationen, Erweiterungen, Verbesserungen, Korrekturen oder andere Änderungen an diesem Dokument und allen hier beschriebenen Produkten vorzunehmen. Diodes Incorporated übernimmt keinerlei Haftung, die sich aus der Anwendung oder Verwendung dieses Dokuments oder eines hierin beschriebenen Produkts ergibt; Diodes Incorporated überträgt weder eine Lizenz unter seinen Patent- oder Markenrechten noch an den Rechten anderer. Jeder Kunde oder Benutzer dieses Dokuments oder der hierin beschriebenen Produkte in solchen Anwendungen übernimmt alle Risiken einer solchen Verwendung und erklärt sich damit einverstanden, Diodes Incorporated und alle Unternehmen, deren Produkte auf der Diodes Incorporated vertreten sind, zu schützen webWebsite, schadlos gegen alle Schäden.
  • Diodes Incorporated übernimmt keinerlei Gewährleistung oder Haftung für Produkte, die über nicht autorisierte Vertriebskanäle erworben wurden.
    Sollten Kunden Produkte von Diodes Incorporated für unbeabsichtigte oder nicht autorisierte Zwecke erwerben oder verwenden, sind sie verpflichtet, Diodes
  • Incorporated und seine Vertreter werden von allen Forderungen, Schäden, Aufwendungen und Anwaltshonoraren freigestellt, die direkt oder indirekt aus Ansprüchen aufgrund von Personenschäden oder Todesfällen im Zusammenhang mit einer solchen unbeabsichtigten oder nicht autorisierten Anwendung entstehen.
  • Die hierin beschriebenen Produkte können durch ein oder mehrere US-amerikanische, internationale oder ausländische Patente angemeldet sein. Hierin erwähnte Produktnamen und Kennzeichnungen können auch durch eine oder mehrere US-amerikanische, internationale oder ausländische Marken geschützt sein.
  • Dieses Dokument ist in englischer Sprache verfasst, kann jedoch zu Referenzzwecken in mehrere Sprachen übersetzt werden. Nur die englische Version dieses Dokuments ist das endgültige und maßgebliche Format, das von Diodes Incorporated herausgegeben wird.

LEBENSERHALTUNG

  • Produkte von Diodes Incorporated sind ohne die ausdrückliche schriftliche Genehmigung des Chief Executive Officer von Diodes Incorporated ausdrücklich nicht zur Verwendung als kritische Komponenten in lebenserhaltenden Geräten oder Systemen zugelassen. Wie hierin verwendet:
  • A. Lebenserhaltende Geräte oder Systeme sind Geräte oder Systeme, die:
  1. dazu bestimmt sind, in den Körper implantiert zu werden, oder
  2. lebenserhaltend oder lebenserhaltend sind und deren Nichterfüllung bei sachgemäßer Verwendung gemäß den Gebrauchsanweisungen auf dem Etikett vernünftigerweise zu erwarten ist, dass der Benutzer erheblich verletzt wird.
    • B. Eine kritische Komponente ist jede Komponente in einem lebenserhaltenden Gerät oder System, von deren Ausfall vernünftigerweise erwartet werden kann, dass sie den Ausfall des lebenserhaltenden Geräts verursacht oder seine Sicherheit oder Wirksamkeit beeinträchtigt.
    • Kunden erklären, dass sie über das erforderliche Fachwissen zu den Sicherheits- und Regulierungsauswirkungen ihrer lebenserhaltenden Geräte oder Systeme verfügen, und erkennen an und stimmen zu, dass sie allein für alle gesetzlichen, regulatorischen und sicherheitsrelevanten Anforderungen in Bezug auf ihre Produkte und jegliche Verwendung von Produkten von Diodes Incorporated in solchen sicherheitskritischen, lebenserhaltenden Geräten oder Systemen verantwortlich sind, ungeachtet aller geräte- oder systembezogenen Informationen oder Supportleistungen, die von Diodes Incorporated bereitgestellt werden.
    • Darüber hinaus müssen Kunden Diodes Incorporated und seine Vertreter vollständig von jeglichen Schäden freistellen, die aus der Verwendung von Produkten von Diodes Incorporated in solchen sicherheitskritischen, lebenserhaltenden Geräten oder Systemen entstehen.

Dokumente / Ressourcen

DIODES AP33772 USB PD Sink Controller Raspberry Pi I2C-Schnittstelle [pdf] Benutzerhandbuch
AP33772 USB PD Sink Controller Raspberry Pi I2C-Schnittstelle, AP33772, USB PD Sink Controller Raspberry Pi I2C-Schnittstelle, Raspberry Pi I2C-Schnittstelle, Pi I2C-Schnittstelle

Verweise

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind markiert *