ไดโอด AP33772 USB PD Sink Controller Raspberry Pi อินเตอร์เฟส I2C
การแนะนำ
- AP33772 Sink Controller ซึ่งทำงานเป็นอุปกรณ์โปรโตคอลของอุปกรณ์ที่มีขั้วต่อ USB PD3.0 Type C (TCD, Energy Sink) มีวัตถุประสงค์เพื่อร้องขอ Power Data Object (PDO) ที่เหมาะสมจาก PD3.0 ที่มีขั้วต่อ USB PD3.0 Type C การปฏิบัติตามข้อกำหนด .XNUMX เครื่องชาร์จ (PDC, แหล่งพลังงาน)
- รูปที่ 1 แสดง TCD ที่ฝังตัวด้วย PD3.0 Sink controller IC (AP33772) เชื่อมต่อทางกายภาพกับ PDC ซึ่งฝังตัวด้วยตัวถอดรหัส USB PD3.0 (AP43771) ผ่าน
- สายเคเบิล Type C ถึง Type C ขึ้นอยู่กับเฟิร์มแวร์ที่เข้ากันได้กับ USB PD3.0 ในตัว คู่ AP33772 และ AP43771 จะต้องผ่านขั้นตอนการแนบมาตรฐาน USB PD3.0 เพื่อสร้างสถานะการชาร์จ PD3.0 ที่เหมาะสม
- AP33772 Sink Controller EVB มอบความง่ายในการใช้งานและความอเนกประสงค์ที่ยอดเยี่ยมสำหรับผู้ออกแบบระบบในการร้องขอ PDO จาก USB Power Delivery Charger โดยส่งคำสั่งในตัว AP33772 ผ่านอินเทอร์เฟซ I2C การออกแบบระบบโดยทั่วไปจำเป็นต้องมีการเขียนโปรแกรม MCU ซึ่งต้องมีการตั้งค่าซอฟต์แวร์เฉพาะ (เช่น IDE) และอาจเป็นกระบวนการพัฒนาที่ใช้เวลานาน
- ในทางตรงกันข้าม Raspberry Pi (RPI) ซึ่งเป็นคอมพิวเตอร์บอร์ดเดียว (SBC) ที่ทำงานบน Linux OS ที่ใช้งานง่ายและติดตั้งพิน GPIO ที่ยืดหยุ่น มีวิธีง่ายๆ ในการตรวจสอบความถูกต้องของ AP33772 Sink EVB ที่ทำงานร่วมกับ PD Charger เป้าหมายของคู่มือนี้คือเพื่อให้นักออกแบบระบบมีแพลตฟอร์มที่มีประสิทธิภาพในการตรวจสอบความถูกต้องของซอฟต์แวร์บน RPI อย่างรวดเร็ว จากนั้นจึงพอร์ตการพัฒนาไปยัง MCU ที่ต้องการเพื่อตอบสนองความต้องการของตลาดที่ตอบสนองอย่างรวดเร็ว
- ในฐานะที่เป็นเอกสารเสริมของคู่มือผู้ใช้ AP33772 EVB คู่มือผู้ใช้นี้จะแสดงวิธีง่ายๆ ในการควบคุม AP33772 EVB ด้วย RPI SBC ผ่านอินเทอร์เฟซ I2C
- บทบาทของบล็อก MCU ที่แสดงในรูปที่ 1 เพื่อเชื่อมต่อกับ AP33772 เล่นโดย RPI คู่มือผู้ใช้นี้ครอบคลุมคำจำกัดความการลงทะเบียนและข้อมูลการใช้งานเช่นampอย่างไรก็ตาม สำหรับข้อมูลที่ครบถ้วนและอัปเดตที่สุด โปรดดูที่คู่มือผู้ใช้ AP33772 EVB (ดูอ้างอิงที่ 2)
- รูปที่ 1 – TCD ทั่วไปใช้ AP33772 PD Sink Controller พร้อมอินเทอร์เฟซ I2C เพื่อขอพลังงานจาก USB Type-C PD3.0/PPS Compliance Source Adapter
การตั้งค่าแพลตฟอร์มการตรวจสอบ
AP33772 ตัวควบคุมอ่างล้างจาน EVB
รูปที่ 2 แสดงรูปภาพของ Sink Controller EVB มันมีตัวเชื่อมต่อ Type-C, พิน I2C, พิน GPIO3 สำหรับการขัดจังหวะ, เทอร์มิสเตอร์ NTC สำหรับ OTP, ไฟ LED เพื่อแสดงสถานะการชาร์จและตัวเชื่อมต่อ Vout กับโหลด
ราสเบอร์รี่ Pi ซีโร่ 2W
- RPI เวอร์ชันล่าสุดใดๆ ก็ตามสามารถควบคุม AP33772 Sink Controller EVB ผ่านพิน I2C ได้ มีการใช้ Raspberry Pi Zero 2 W (RPI Z2W) ในคู่มือผู้ใช้นี้เพื่อความคุ้มค่าและความอเนกประสงค์ มีฟอร์มแฟกเตอร์ที่เล็กที่สุดในบรรดา RPI ทั้งหมด และรวมเข้ากับ WiFi และ Bluetooth ที่ทำให้การเชื่อมต่อไร้สายไม่มีส่วนประกอบเพิ่มเติม มันตอบสนองวัตถุประสงค์ในฐานะ AP33772 Sink Controller EVB Validation Platform ได้อย่างสมบูรณ์แบบ
- ผู้ใช้สามารถตรวจสอบอย่างเป็นทางการของ Raspberry Pi webเว็บไซต์สำหรับข้อมูลเพิ่มเติม (https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/)
การตรวจสอบการเชื่อมต่อแพลตฟอร์มและการเปิดเครื่อง
รูปที่ 5 แสดงการเชื่อมต่อที่สมบูรณ์และการตั้งค่าของ Validation Platform ผู้ใช้ควรทำตามขั้นตอนเหล่านี้:
- เชื่อมต่อพิน SCL, SDA และ GND ระหว่าง RPI และ AP33772 EVB
- เชื่อมต่อเครื่องชาร์จ PD 65W และ AP33772 EVB ด้วยสาย Type-C
- เพิ่มพลังให้กับเครื่องชาร์จ RPI และ PD
การตั้งค่าซอฟต์แวร์ Raspberry Pi
ระบบปฏิบัติการ Raspberry Pi
- มีระบบปฏิบัติการต่างๆ มากมายที่รองรับ RPI ในบรรดาสิ่งเหล่านี้ Raspberry Pi OS ได้รับเลือกเนื่องจากเป็นระบบปฏิบัติการที่ใช้มากที่สุดและแนะนำโดยเว็บไซต์อย่างเป็นทางการของ RPI
ดาวน์โหลดอิมเมจ OS และเตรียมการ์ด SD
- ดาวน์โหลดและติดตั้งเครื่องมือ Raspberry Pi Imager บนพีซี (https://www.raspberrypi.com/software/). ทำตามคำแนะนำเพื่อเตรียม Micro-SD ที่โหลดอิมเมจ OS ที่ถูกต้อง (https://youtu.be/ntaXWS8Lk34/). โปรดทราบว่าแนะนำให้ใช้การ์ด Micro-SD ขนาด 32BG หรือสูงกว่า
การติดตั้งระบบปฏิบัติการ Raspberry PI
- ใส่การ์ด Micro-SD ที่โหลดด้วย Imager ก่อนหน้านี้ลงในช่องเสียบ Micro-SD ของ RPI เชื่อมต่ออะแดปเตอร์เพาเวอร์ เมาส์/คีย์บอร์ด และจอภาพ HDMI เปิด RPI และทำตามคำแนะนำเพื่อทำการติดตั้งระบบปฏิบัติการและการตั้งค่าพื้นฐานให้เสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่ามีการอัปเดตล่าสุดอยู่ในระบบปฏิบัติการ
การตั้งค่าคุณสมบัติที่จำเป็น
- เพื่อให้เรียกใช้อินเทอร์เฟซ I2C บน RPI ได้สำเร็จ เราต้องกำหนดค่าหรือติดตั้งคุณสมบัติ SSH, VNC และ I2C
การกำหนดค่า Raspberry Pi – SSH, VNC, I2C
- หลังจากการบูท RPI ให้เปิดยูทิลิตี “Raspberry Pi Configure” และเปิดฟีเจอร์ SSH, VNC และ I2C
การกำหนดค่าอัตรารับส่งข้อมูล I2C
- แทนที่บรรทัดที่เกี่ยวข้องกับ dtparam และ dtoverlay ใน /boot/config.txt file กับ:
- dtoverlay=i2c-bcm2708
- dtparam=i2c_arm=เปิด,i2c_arm_baudrate=640000
การติดตั้ง I2C-Tools
- I2C-Tools เป็นชุดเครื่องมือที่ให้คำสั่งอย่างง่ายที่ทำงานบนบรรทัดคำสั่งภายใต้ระบบปฏิบัติการ Raspberry Pi ติดตั้ง I2C-Tools บนระบบปฏิบัติการโดยเรียกใช้: sudo apt install i2c-tools
การติดตั้ง SMBus2
- SMBus2 เป็นโมดูล Python ที่มีฟังก์ชันอำนวยความสะดวกสำหรับผู้ใช้ในการควบคุมอินเทอร์เฟซ I2C ภายใต้สภาพแวดล้อม Python ติดตั้งโมดูล SMBus2 สำหรับ Python บนระบบปฏิบัติการโดยเรียกใช้: sudo pip3 ติดตั้ง smbus2
คำสั่งพื้นฐาน เช่นampเลส
- คู่มือผู้ใช้นี้สาธิตสองวิธีในการทำงานกับอินเทอร์เฟซ I2C บน RPI พวกเขาคือยูทิลิตี้ I2C-Tools และโมดูล Python SMBus2 คำสั่งพื้นฐานของทั้งสองวิธีจะแนะนำในส่วนนี้
คำสั่ง I2C-Tools เช่นampเลส
- แพ็คเกจยูทิลิตี้ I2C-Tools มีคำสั่ง i2cdetect, i2cget และ i2cset การใช้งานแบบง่ายอธิบายไว้ในตัวอย่างampในหัวข้อนี้ สำหรับข้อมูลที่สมบูรณ์เกี่ยวกับยูทิลิตี้ I2C-Tools โปรดดูที่ https://linuxhint.com/i2c-linux-utilities/.
- ตารางที่ 1 แสดงข้อมูลสรุปการลงทะเบียน AP33772 เพื่อความสะดวกของผู้ใช้ในการแยกย่อยการใช้คำสั่งในส่วนนี้ สำหรับข้อมูลการลงทะเบียนที่สมบูรณ์ โปรดดูคู่มือผู้ใช้ AP33772 Sink Controller EVB
ลงทะเบียน | สั่งการ | ความยาว | คุณลักษณะ | เปิดเครื่อง | คำอธิบาย |
ศ.ศ.ป |
ขนาด 0x00 |
28 |
RO |
ทั้งหมด 00h |
Power Data Object (PDO) ใช้เพื่อเปิดเผยความสามารถด้านพลังงานของ PD Source (SRC)
ความยาวรวม 28 ไบต์ |
พีโดนัม | 0x1C | 1 | RO | 00 ชม. | หมายเลข PDO แหล่งที่มาที่ถูกต้อง |
สถานะ | 0x1D | 1 | RC | 00 ชม. | สถานะ AP33772 |
หน้ากาก | 0x1E | 1 | RW | 01 ชม. | ขัดจังหวะเปิดใช้งานมาสก์ |
เล่มที่TAGE | ขนาด 0x20 | 1 | RO | 00 ชม. | แอลเอสบี 80mV |
ปัจจุบัน | ขนาด 0x21 | 1 | RO | 00 ชม. | แอลเอสบี 24mA |
อุณหภูมิ | ขนาด 0x22 | 1 | RO | 19 ชม. | อุณหภูมิ หน่วย: °C |
ส.ค.ส | ขนาด 0x23 | 1 | RW | 00 ชม. | เกณฑ์ OCP, LSB 50mA |
อปท | ขนาด 0x24 | 1 | RW | 78 ชม. | เกณฑ์ OTP หน่วย : °C |
ดร | ขนาด 0x25 | 1 | RW | 78 ชม. | เกณฑ์การลดอันดับ หน่วย: °C |
TR25 | ขนาด 0x28 | 2 | RW | 2710 ชม. | ความต้านทานความร้อน @25°C หน่วย: Ω |
TR50 | 0x2A | 2 | RW | 1041 ชม. | ความต้านทานความร้อน @50°C หน่วย: Ω |
TR75 | 0x2C | 2 | RW | 0788 ชม. | ความต้านทานความร้อน @75°C หน่วย: Ω |
TR100 | 0x2E | 2 | RW | 03CEh | ความต้านทานความร้อน @100°C หน่วย: Ω |
อาร์ดีโอ | ขนาด 0x30 | 4 | WO | 00000000 ชม. | Request Data Object (RDO) ใช้เพื่อขอความสามารถด้านพลังงาน |
วีดีโอ | ขนาด 0x34 | 2 | RW | 0000 ชม. | ID ผู้ขาย สงวนไว้สำหรับแอปพลิเคชันในอนาคต |
พีไอดี | ขนาด 0x36 | 2 | RW | 0000 ชม. | รหัสผลิตภัณฑ์ สงวนไว้สำหรับการใช้งานในอนาคต |
ที่สงวนไว้ | ขนาด 0x38 | 4 | – | – | สงวนไว้สำหรับการใช้งานในอนาคต |
ตารางที่ 1 – ข้อมูลสรุปการลงทะเบียน AP33772
ตรวจหาอุปกรณ์ทั้งหมดที่เชื่อมต่อกับ I2C – i2cdetect
- หากต้องการแสดงอุปกรณ์ i2c ทั้งหมดที่เชื่อมต่อกับบัส I2C-1 ในปัจจุบัน ให้พิมพ์คำสั่งต่อไปนี้ใต้พรอมต์คำสั่ง: i2cdetect -y 1
- หากเชื่อมต่อ AP33772 Sink Controller EVB ผู้ใช้จะเห็นอุปกรณ์เชื่อมต่ออยู่ที่ที่อยู่ 0x51
อ่าน SRCPDO (0x00~0x1B)
- คำสั่ง i2cget ไม่รองรับการอ่านบล็อกที่ยาวกว่า 2 ไบต์ ผู้ใช้ต้องใช้ “for loop” เพื่อแสดงข้อมูล PDO ยาว 28 ไบต์ทั้งหมด หากต้องการแสดงข้อมูล PDO ทั้งหมด ให้พิมพ์คำสั่งต่อไปนี้ใต้พรอมต์คำสั่ง bash สำหรับ i ใน {0..27}; ทำ i2cget -y 1 0x51 $ib; เสร็จแล้ว
- ข้อมูล 28 ไบต์ที่แสดงถึง 7 PDO จะแสดงขึ้น
อ่าน PDONUM (0x1C)
- หากต้องการแสดงจำนวน PDO ที่ถูกต้องทั้งหมด ให้พิมพ์ต่อไปนี้ภายใต้พร้อมท์คำสั่ง: i2cget -y 1 0x51 0x1c b
อ่านสถานะ (0x1D)
- คำสั่งนี้รายงานสถานะของ Sink Controller รวมถึง de-rating, OTP, OCP, OVP, คำขอถูกปฏิเสธ, คำขอเสร็จสมบูรณ์ และ พร้อม หากต้องการแสดงข้อมูลสถานะ ให้พิมพ์คำสั่งต่อไปนี้ใต้พรอมต์คำสั่ง: i2cget -y 1 0x51 0x1d b
- ผู้ใช้ควรใช้คำสั่งนี้หลังจากแต่ละคำขอ RDO เพื่อให้แน่ใจว่าคำขอ RDO สำเร็จโดยการอ่านบิต COMPLETE 4.1.5 เขียนหน้ากาก (0x1E)
- คำสั่งนี้เปิดใช้งานการขัดจังหวะที่ส่งสัญญาณโฮสต์ผ่านพิน GPIO3 ของ AP33772 การขัดจังหวะ ได้แก่ Derating , OTP, OCP, OVP, คำขอถูกปฏิเสธ, คำขอเสร็จสมบูรณ์ และ พร้อม หากต้องการเปิดใช้งานการขัดจังหวะเฉพาะ ให้ตั้งค่าบิตที่เกี่ยวข้องเป็นหนึ่ง สำหรับอดีตample เพื่อเปิดใช้งานการขัดจังหวะ OCP ให้ตั้งค่าบิต 4 ของการลงทะเบียน MASK เป็นหนึ่งโดยพิมพ์คำสั่งต่อไปนี้ภายใต้พรอมต์คำสั่ง: i2cset -y 1 0x51 0x1e 0x10 b
- พิน GPIO3 ของ AP33772 จะสูงขึ้นเมื่อมีการทริกเกอร์การป้องกัน OCP
อ่าน VOLTAGอี (0x20)
- คำสั่งนี้รายงานฉบับtage วัดโดย AP33772 Sink Controller เพื่อรายงานฉบับที่tage พิมพ์ต่อไปนี้ภายใต้พรอมต์คำสั่ง: i2cget -y 1 0x51 0x20 b
- หนึ่งหน่วยของค่าที่รายงานแสดงถึง 80mV
อ่านปัจจุบัน (0x21)
- คำสั่งนี้รายงานกระแสที่วัดโดย AP33772 Sink Controller หากต้องการรายงานปัจจุบัน ให้พิมพ์คำสั่งต่อไปนี้ใต้พรอมต์คำสั่ง: i2cget -y 1 0x51 0x21 b
- หนึ่งหน่วยของค่าที่รายงานแสดงถึง 24mA
อ่านอุณหภูมิ (0x22)
- คำสั่งนี้รายงานอุณหภูมิที่วัดโดย AP33772 Sink Controller หากต้องการรายงานอุณหภูมิ ให้พิมพ์คำสั่งต่อไปนี้ใต้พรอมต์คำสั่ง:
i2cget -y 1 0x51 0x22 ข - หนึ่งหน่วยของค่าที่รายงานแสดงถึง 1°C
- อ่านและเขียน OCPTHR (0x23), OTPTHR (0x24) และ DRTHR (0x25)
- เกณฑ์ OCP, OTP และ Derating สามารถเปลี่ยนเป็นค่าที่ผู้ใช้ต้องการได้โดยเขียนค่าลงในเครื่องบันทึก OCPTHR, OTPTHR และ DRTHR ในฐานะอดีตample หากต้องการเปลี่ยนเกณฑ์ OCP เป็น 3.1A ผู้ใช้ควรเขียน 0x3E (=3100/50=62=0x3E) เป็น OCPTHR โดยพิมพ์ข้อความต่อไปนี้ใต้พรอมต์คำสั่ง: i2cset -y 1 0x51 0x23 0x3e b
- หากต้องการเปลี่ยนเกณฑ์ OTP เป็น 110°C ผู้ใช้ควรเขียน 0x6E (=110) เป็น OTPTHR โดยพิมพ์ข้อความต่อไปนี้ใต้พรอมต์คำสั่ง:
- หากต้องการอ่านค่าจาก OCPTHR, OTPTHR และ DRTHR ให้พิมพ์คำสั่งต่อไปนี้ใต้พรอมต์คำสั่ง:
- i2cget -y 1 0x51 0x23 ข i2cget -y 1 0x51 0x24 ข i2cget -y 1 0x51 0x25 ข
- อ่านและเขียน TR25 (0x28~0x29), TR50 (0x2A~0x2B), TR75 (0x2C~0x2D) และ TR100 (0x2E~0x2F)
- เทอร์มิสเตอร์ค่าสัมประสิทธิ์อุณหภูมิติดลบ (NTC) ของ Murata 10KΩ NCP03XH103 บรรจุอยู่ใน AP33772 EVB ผู้ใช้ต้องการเปลี่ยนเทอร์มิสเตอร์เป็นแบบอื่นในการออกแบบขั้นสุดท้าย ผู้ใช้ควรอัปเดตค่าการลงทะเบียน TR25, TR50, TR75 และ TR100 ตามข้อกำหนดของเทอร์มิสเตอร์ที่ใช้ สำหรับอดีตampเล,
- 6.8KΩ NCP03XH682 ของ Murata ถูกนำมาใช้ในการออกแบบ ค่าความต้านทานที่ 25°C, 50°C, 75°C และ 100°C คือ 6800Ω (0x1A90), 2774Ω (0x0AD6), 1287Ω (0x0507) และ 662Ω (0x0296) ตามลำดับ ในการเขียนค่าที่สอดคล้องกับการลงทะเบียนเหล่านี้ ให้พิมพ์คำสั่งต่อไปนี้ภายใต้พร้อมท์คำสั่ง:
- i2cset -y 1 0x51 0x28 0x1a90 วัตต์ i2cset -y 1 0x51 0x2a 0x0ad6 วัตต์ i2cset -y 1 0x51 0x2c 0x0507 วัตต์ i2cset -y 1 0x51 0x2e 0x0296 วัตต์
- หากต้องการอ่านค่า ให้พิมพ์คำสั่งต่อไปนี้ใต้ command prompt: i2cget -y 1 0x51 0x28 w i2cget -y 1 0x51 0x2a w i2cget -y 1 0x51 0x2c w i2cget -y 1 0x51 0x2e w
- ค่าเอาต์พุตเป็นคำ 2 ไบต์ เนื่องจากคำสั่งจัดการกับคำ 2 ไบต์โดยตรง ผู้ใช้จึงไม่ต้องกังวลเกี่ยวกับคำสั่งไบต์ endian เล็กน้อยที่นี่
เขียน RDO (0x30~0x33)
- ในการเริ่มต้นขั้นตอนการเจรจาคำขอ PDO ข้อมูล 4 ไบต์จะถูกเขียนลงในทะเบียน RDO (Request Data Object) ตามลำดับไบต์ย่อย ในฐานะอดีตample หากต้องการร้องขอ PDO3 ด้วย 15V และ 3A 0x3004B12C จะถูกเขียนลงในทะเบียน RDO พิมพ์ต่อไปนี้ภายใต้พรอมต์คำสั่ง: i2cset -y 1 0x51 0x30 0x2c 0xb1 0x04 0x30 i
- ควรเขียนไบต์ที่มีนัยสำคัญน้อยที่สุด (0x2C) ก่อนเพื่อให้พอดีกับสัญลักษณ์ลำดับไบต์เอนเดียนเล็กน้อย โปรดดูตารางที่ 9 และตารางที่ 10 ของผู้ใช้ AP33772 Sink Controller EVB
- คำแนะนำสำหรับข้อมูลเนื้อหา RDO โดยละเอียด
- ผู้ใช้สามารถออกฮาร์ดรีเซ็ตโดยการเขียนการลงทะเบียน RDO ด้วยข้อมูลที่เป็นศูนย์ทั้งหมด: i2cset -y 1 0x51 0x30 0x00 0x00 0x00 0x00 i
- AP33772 Sink Controller จะถูกรีเซ็ตเป็นสถานะเริ่มต้นและเอาต์พุตจะถูกปิด
คำสั่ง Python SMBus2 เช่นampเลส
- Python กำลังได้รับความนิยมมากขึ้นจากโมดูลที่รองรับที่หลากหลาย SMBus2 เป็นหนึ่งในนั้นและสามารถจัดการคำสั่งอ่านและเขียน I2C ได้ SMBus2 มีคำสั่ง read_byte_data, read_word_data, read_i2c_block_data, write_byte_data, write_word_data, write_i2c_block_data การใช้งานแบบง่ายอธิบายไว้ในตัวอย่างampในหัวข้อนี้ สำหรับข้อมูลทั้งหมดเกี่ยวกับโมดูล SMBus2 โปรดดูที่ https://smbus2.readthedocs.io/en/latest/.
อ่าน SRCPDO (0x00~0x1B)
- SMBus.read_i2c_block_data เป็นคำสั่งที่มีประสิทธิภาพเพื่อรองรับการอ่านข้อมูลบล็อกสูงสุด 32 ไบต์ หากต้องการอ่านข้อมูล PDO ขนาด 28 ไบต์ทั้งหมด ให้ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อมของ python3:
- SMBus.read_i2c_block_data(0x51, 0x00, 28)
- ข้อมูล 28 หนึ่งไบต์ที่แสดงถึง 7 PDO จะถูกส่งกลับในโครงสร้างข้อมูลรายการ
อ่าน PDONUM (0x1C)
- หากต้องการอ่านจำนวน PDO ที่ถูกต้องทั้งหมด ให้ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อมของ python3:
- SMBus.read_byte_data(0x51, 0x1c)
- ข้อมูลหนึ่งไบต์ที่แสดงจำนวน PDO ที่ถูกต้องจะถูกส่งกลับ
อ่านสถานะ (0x1D)
- คำสั่งนี้รายงานสถานะของ Sink Controller รวมถึง Derating , OTP, OCP, OVP, คำขอถูกปฏิเสธ, คำขอเสร็จสมบูรณ์ และ พร้อม หากต้องการอ่านข้อมูลสถานะ ให้ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อมของ python3:
- SMBus.read_byte_data(0x51, 0x1d)
- ผู้ใช้สามารถใช้คำสั่งนี้หลังจากคำขอ RDO แต่ละครั้งเพื่อให้แน่ใจว่าคำขอ RDO สำเร็จโดยการอ่านบิต COMPLETE
เขียนหน้ากาก (0x1E)
- คำสั่งนี้เปิดใช้งานการขัดจังหวะที่ส่งสัญญาณโฮสต์ผ่านพิน GPIO3 ของ AP33772 การขัดจังหวะ ได้แก่ Derating , OTP, OCP, OVP, คำขอถูกปฏิเสธ, คำขอ
- เสร็จเรียบร้อย พร้อมอยู่ หากต้องการเปิดใช้งานการขัดจังหวะเฉพาะ ให้ตั้งค่าบิตที่เกี่ยวข้องเป็นหนึ่ง สำหรับอดีตample เพื่อเปิดใช้งานการขัดจังหวะ OCP ให้ตั้งค่าบิต 4 ของการลงทะเบียน MASK เป็นหนึ่งโดยใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อม python3:
- SMBus.write_byte_data(0x51, 0x1e, 0x10)
- พิน GPIO3 ของ AP33772 จะสูงขึ้นเมื่อมีการทริกเกอร์การป้องกัน OCP
อ่าน VOLTAGอี (0x20)
- คำสั่งนี้รายงานฉบับtage วัดโดย AP33772 Sink Controller เพื่อรายงานฉบับที่tage ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อม python3:
- SMBus.read_byte_data(0x51, 0x20)
- หนึ่งหน่วยของค่าที่รายงานแสดงถึง 80mV
อ่านปัจจุบัน (0x21)
- คำสั่งนี้รายงานกระแสที่วัดโดย AP33772 Sink Controller หากต้องการรายงานปัจจุบัน ให้ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อมของ python3
- SMBus.read_byte_data(0x51, 0x21)
- หนึ่งหน่วยของค่าที่รายงานแสดงถึง 24mA
อ่านอุณหภูมิ (0x22)
- คำสั่งนี้รายงานอุณหภูมิที่วัดโดย AP33772 Sink Controller หากต้องการรายงานอุณหภูมิ ให้ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อมของ python3:
- SMBus.read_byte_data(0x51, 0x22)
- หนึ่งหน่วยของค่าที่รายงานแสดงถึง 1°C
อ่านและเขียน OCPTHR (0x23), OTPTHR (0x24) และ DRTHR (0x25)
- เกณฑ์ OCP, OTP และ Derating สามารถเปลี่ยนเป็นค่าที่ผู้ใช้ต้องการได้โดยเขียนค่าลงในเครื่องบันทึก OCPTHR, OTPTHR และ DRTHR ในฐานะอดีตample หากต้องการเปลี่ยนเกณฑ์ OCP เป็น 3.1A ผู้ใช้ควรเขียน 0x3E (=3100/50=62=0x3E) เป็น OCPTHR โดยใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อม python3: SMBus.write_byte_data(0x51, 0x23, 0x3e)
- หากต้องการเปลี่ยนเกณฑ์ OTP เป็น 110°C ผู้ใช้ควรเขียน 0x6E (=110) เป็น OTPTHR โดยใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อม python3: SMBus.write_byte_data(0x51, 0x24, 0x6e)
- หากต้องการเปลี่ยนเกณฑ์ Derating เป็น 100°C ผู้ใช้ควรเขียน 0x64 (=100) ถึง DRTHR โดยใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อม python3: SMBus.write_byte_data(0x51, 0x25, 0x64)
- หากต้องการอ่านค่าจาก OCPTHR, OTPTHR และ DRTHR ให้ใช้ค่าต่อไปนี้ภายใต้สภาพแวดล้อม python3: SMBus.read_byte_data(0x51, 0x23) SMBus.read_byte_data(0x51, 0x24) SMBus.read_byte_data(0x51, 0x25)
- อ่านและเขียน TR25 (0x28~0x29), TR50 (0x2A~0x2B), TR75 (0x2C~0x2D) และ TR100 (0x2E~0x2F)
- เทอร์มิสเตอร์ค่าสัมประสิทธิ์อุณหภูมิติดลบ (NTC) ของ Murata 10KΩ NCP03XH103 บรรจุอยู่ใน AP33772 EVB ผู้ใช้ต้องการเปลี่ยนเทอร์มิสเตอร์เป็นแบบอื่นในการออกแบบขั้นสุดท้าย ผู้ใช้ควรอัปเดตค่าการลงทะเบียน TR25, TR50, TR75 และ TR100 ตามข้อกำหนดของเทอร์มิสเตอร์ที่ใช้ สำหรับอดีตample, 6.8KΩ NCP03XH682 ของ Murata ถูกนำมาใช้ในการออกแบบ ค่าความต้านทานที่ 25°C, 50°C, 75°C และ 100°C คือ 6800Ω (0x1A90), 2774Ω (0x0AD6), 1287Ω (0x0507) และ 662Ω (0x0296) ตามลำดับ หากต้องการเขียนค่าที่สอดคล้องกับการลงทะเบียนเหล่านี้ ให้ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อมของ python3:
- 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)
- หากต้องการอ่านค่า ให้ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อมของ python3: SMBus.read_word_data(0x51, 0x28) SMBus.read_word_data(0x51, 0x2a) SMBus.read_word_data(0x51, 0x2c) SMBus.read_word_data(0x51, 0x2e)
- ค่าที่ส่งคืนยังเป็นคำแบบ 2 ไบต์ เนื่องจากคำสั่งจัดการกับคำ 2 ไบต์โดยตรง ผู้ใช้จึงไม่ต้องกังวลเกี่ยวกับคำสั่งไบต์ endian เล็กน้อยที่นี่
เขียน RDO (0x30~0x33)
- ในการเริ่มต้นขั้นตอนการเจรจาคำขอ PDO ข้อมูล 4 ไบต์จะถูกเขียนลงในทะเบียน RDO (Request Data Object) ตามลำดับไบต์ย่อย ในฐานะอดีตample หากต้องการร้องขอ PDO3 ด้วย 15V และ 3A 0x3004B12C จะถูกเขียนลงในทะเบียน RDO ใช้สิ่งต่อไปนี้ภายใต้สภาพแวดล้อม python3:
- SMBus.write_i2c_block_data(0x51, 0x30, [0x2c, 0xb1, 0x04, 0x30])
- โปรดดูตารางที่ 9 และตารางที่ 10 ของคู่มือผู้ใช้ AP33772 Sink Controller EVB สำหรับข้อมูลเนื้อหา RDO โดยละเอียด
- ผู้ใช้สามารถทำการฮาร์ดรีเซ็ตโดยการเขียนการลงทะเบียน RDO ด้วยข้อมูลที่เป็นศูนย์ทั้งหมด:
- SMBus.write_i2c_block_data(0x51, 0x30, [0x00, 0x00, 0x00, 0x00])
- AP33772 Sink Controller จะถูกรีเซ็ตเป็นสถานะเริ่มต้นและเอาต์พุตจะถูกปิด
ปฏิบัติเช่นampเลส
Example 1: Bash I2C-Tools เช่นampไฟล์: ap33772_querypdo.bash
อดีตนี้ampตรวจสอบ PDO ที่ถูกต้องทั้งหมดและแสดงรายการฉบับtage และข้อมูลความสามารถปัจจุบันออก
รายละเอียดรหัส
การดำเนินการโค้ดและเอาต์พุต
Example 2: Python SMBus2 อดีตampไฟล์: ap33772_allpdo.py3
อดีตนี้ample ตรวจสอบ PDO ที่ถูกต้องทั้งหมดและขอทีละรายการตามลำดับขึ้นและลง
รายละเอียดรหัส
การดำเนินการโค้ดและเอาต์พุต
Exampดาวน์โหลดโค้ด
รายชื่ออดีตampเลอรหัส
- Example Codes มี Bash Script และ Python Versions
- ap33772_querypdo: สอบถามข้อมูล PDO ทั้งหมด
- ap33772_reqpdo: รายงานข้อมูล PDO ทั้งหมดและส่งคำขอ PDO ที่ระบุโดยผู้ใช้
- ap33772_allpdo: รายงานข้อมูล PDO ทั้งหมดและอธิบายคำขอ PDO ทั้งหมดในลักษณะขึ้นและลง
- ap33772_pps: รายงานข้อมูล PDO ทั้งหมด และ ramps ขึ้นและลงทั้งฉบับ PPStage มีช่วงขนาดสเต็ป 50mV
- ap33772_vit: รายงานฉบับที่tage ข้อมูลปัจจุบันและอุณหภูมิ
Exampเว็บไซต์ดาวน์โหลด
Example รหัสสามารถดาวน์โหลดได้จาก Github ใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลด: git clone https://github.com/diodinciot/ap33772.git-ap33772
อ้างอิง
- เอกสารข้อมูล AP33772 (USB PD3.0 PPS Sink Controller): https://www.diodes.com/products/power-management/ac-dc-converters/usb-pd-sink-controllers/
- AP33772 I2C Sink Controller EVB คู่มือผู้ใช้: https://www.diodes.com/applications/ac-dc-chargers-and-adapters/usb-pd-sink-controller/
- Raspberry Pi ศูนย์ 2 W: https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/
- ระบบปฏิบัติการ Raspberry Pi: https://www.raspberrypi.com/software/
- ยูทิลิตี้ I2C-Tools: https://linuxhint.com/i2c-linux-utilities/
- โมดูล SMBus2: https://smbus2.readthedocs.io/en/latest/
ประวัติการแก้ไข
การแก้ไข | วันที่ออก | ความคิดเห็น | ผู้เขียน |
1.0 | 4/15/2022 | การเปิดตัวครั้งแรก | เอ็ดเวิร์ด จ้าว |
หมายเหตุสำคัญ
- Diodes Inc. ไม่รับประกันใด ๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยปริยายเกี่ยวกับเอกสารนี้ รวมถึงแต่ไม่จำกัดเพียงการรับประกันโดยปริยายของความสามารถในการซื้อขายและความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ (และสิ่งที่เทียบเท่าภายใต้กฎหมายของเขตอำนาจศาลใด ๆ )
- Diodes Incorporated และบริษัทสาขาขอสงวนสิทธิ์ในการแก้ไข ปรับปรุง ปรับปรุง แก้ไข หรือเปลี่ยนแปลงอื่นๆ โดยไม่ต้องแจ้งให้ทราบล่วงหน้าในเอกสารนี้และผลิตภัณฑ์ใดๆ ที่อธิบายไว้ในที่นี้ Diodes Incorporated ไม่รับผิดชอบใด ๆ ที่เกิดขึ้นจากแอปพลิเคชันหรือการใช้เอกสารนี้หรือผลิตภัณฑ์ใด ๆ ที่อธิบายไว้ในที่นี้ Diodes Incorporated ไม่ได้ถ่ายทอดใบอนุญาตใด ๆ ภายใต้สิทธิบัตรหรือสิทธิ์ในเครื่องหมายการค้า หรือสิทธิ์ของผู้อื่น ลูกค้าหรือผู้ใช้เอกสารนี้หรือผลิตภัณฑ์ที่อธิบายไว้ในที่นี้ในแอปพลิเคชันดังกล่าวจะต้องรับความเสี่ยงทั้งหมดจากการใช้งานดังกล่าว และจะตกลงที่จะถือ Diodes Incorporated และบริษัททั้งหมดที่มีผลิตภัณฑ์เป็นตัวแทนใน Diodes Incorporated webเว็บไซต์ไม่เป็นอันตรายต่อความเสียหายทั้งหมด
- Diodes Incorporated ไม่รับประกันหรือยอมรับความรับผิดใด ๆ ที่เกี่ยวข้องกับผลิตภัณฑ์ใด ๆ ที่ซื้อผ่านช่องทางการขายที่ไม่ได้รับอนุญาต
หากลูกค้าซื้อหรือใช้ผลิตภัณฑ์ของ Diodes Incorporated เพื่อการใช้งานที่ไม่ได้ตั้งใจหรือไม่ได้รับอนุญาต ลูกค้าจะต้องชดใช้ค่าเสียหายและยึด Diodes - Incorporated และตัวแทนไม่เป็นอันตรายต่อการเรียกร้อง ความเสียหาย ค่าใช้จ่าย และค่าทนายความทั้งหมดที่เกิดขึ้นจากการเรียกร้องการบาดเจ็บส่วนบุคคลหรือการเสียชีวิตที่เกี่ยวข้องกับการสมัครที่ไม่ได้ตั้งใจหรือไม่ได้รับอนุญาตดังกล่าว ไม่ว่าทางตรงหรือทางอ้อม
- ผลิตภัณฑ์ที่อธิบายในที่นี้อาจได้รับการคุ้มครองโดยสิทธิบัตรของสหรัฐอเมริกา สิทธิบัตรระหว่างประเทศหรือต่างประเทศหนึ่งรายการหรือมากกว่าที่อยู่ระหว่างดำเนินการ ชื่อผลิตภัณฑ์และเครื่องหมายที่ระบุในที่นี้อาจครอบคลุมโดยเครื่องหมายการค้าของสหรัฐอเมริกา เครื่องหมายการค้าระหว่างประเทศหรือต่างประเทศหนึ่งรายการหรือมากกว่า
- เอกสารนี้เขียนเป็นภาษาอังกฤษ แต่อาจแปลเป็นหลายภาษาเพื่อใช้อ้างอิง เฉพาะเวอร์ชันภาษาอังกฤษของเอกสารนี้เท่านั้นที่เป็นรูปแบบขั้นสุดท้ายและเชิงกำหนดที่เผยแพร่โดย Diodes Incorporated
การช่วยชีวิต
- ผลิตภัณฑ์ Diodes Incorporated ไม่ได้รับอนุญาตให้ใช้เป็นส่วนประกอบที่สำคัญในอุปกรณ์หรือระบบช่วยชีวิตโดยไม่ได้รับการอนุมัติเป็นลายลักษณ์อักษรอย่างชัดแจ้งจากประธานเจ้าหน้าที่บริหารของ Diodes Incorporated ตามที่ใช้ในที่นี้:
- A. อุปกรณ์หรือระบบช่วยชีวิตคืออุปกรณ์หรือระบบที่:
- มีไว้เพื่อสอดใส่เข้าไปในร่างกายหรือ
- สนับสนุนหรือช่วยชีวิตและความล้มเหลวในการดำเนินการเมื่อใช้อย่างถูกต้องตามคำแนะนำสำหรับการใช้งานที่ระบุไว้ในฉลากสามารถคาดหวังได้อย่างสมเหตุสมผลว่าจะส่งผลให้ผู้ใช้ได้รับบาดเจ็บอย่างมีนัยสำคัญ
- B. ส่วนประกอบสำคัญคือส่วนประกอบใดๆ ในอุปกรณ์ช่วยชีวิตหรือระบบที่ความล้มเหลวในการดำเนินการสามารถคาดหวังได้อย่างสมเหตุสมผลว่าจะทำให้อุปกรณ์ช่วยชีวิตล้มเหลวหรือส่งผลต่อความปลอดภัยหรือประสิทธิภาพ
- ลูกค้ารับรองว่าพวกเขามีความเชี่ยวชาญที่จำเป็นทั้งหมดในด้านความปลอดภัยและกฎระเบียบของอุปกรณ์หรือระบบช่วยชีวิต และรับทราบและตกลงว่าพวกเขามีหน้าที่รับผิดชอบแต่เพียงผู้เดียวต่อข้อกำหนดทางกฎหมาย ข้อบังคับ และความปลอดภัยที่เกี่ยวข้องกับผลิตภัณฑ์ของตนและการใช้ไดโอดใดๆ รวมผลิตภัณฑ์ไว้ในอุปกรณ์หรือระบบช่วยชีวิตที่มีความสำคัญต่อความปลอดภัย โดยไม่คำนึงถึงข้อมูลหรือการสนับสนุนที่เกี่ยวข้องกับอุปกรณ์หรือระบบใดๆ ที่ Diodes Incorporated อาจจัดหาให้
- นอกจากนี้ ลูกค้าต้องชดใช้ค่าเสียหายอย่างเต็มที่แก่ Diodes Incorporated และตัวแทนของบริษัทจากความเสียหายใดๆ ที่เกิดขึ้นจากการใช้ผลิตภัณฑ์ Diodes Incorporated ในอุปกรณ์หรือระบบที่มีความสำคัญต่อความปลอดภัยและช่วยชีวิตดังกล่าว
- ลิขสิทธิ์ © 2017, Diodes Incorporated
- www.diodes.com
เอกสาร / แหล่งข้อมูล
![]() |
ไดโอด AP33772 USB PD Sink Controller Raspberry Pi อินเตอร์เฟส I2C [พีดีเอฟ] คู่มือการใช้งาน AP33772 USB PD Sink Controller อินเทอร์เฟซ Raspberry Pi I2C, AP33772, USB PD Sink Controller อินเทอร์เฟซ Raspberry Pi I2C, อินเทอร์เฟซ Raspberry Pi I2C, อินเทอร์เฟซ Pi I2C |