Über dieses System habe ich bereits geschrieben. Ich werde meine Fragen jetzt auf die Richtung "ESD-Schutz" konzentrieren.
Ich habe ein SPI-basiertes System, in dem ein Raspberry mit einem GPIO-Expender-Gerät über SPI-Kommunikation spricht. Der Chip liest und/oder schreibt '0'/'1' und sendet sie per Bus an den Raspberry.
Die Expander-GPIOs-Schaltung ist eine sehr einfache Schaltung, aber manchmal wird nach stundenlangem korrekten Betrieb ein gefährlicher Überverbrauch / Überhitzung (es brennt fast) zufällig ausgelöst. Dies hört auf, wenn ich das Gerät zurücksetze. Danach zeigt das Gerät normales Verhalten und normalen Verbrauch. Heutzutage wird das System auf einem Protoboard angeschlossen und getestet. Daher können Verkabelung oder Labormaterial ein wenig oder viel beeinflussen.
Einige Leute vermuten, dass dieses Verhalten ein durch ESD verursachtes "Latch-up" zu sein scheint. Andernfalls könnte es durch Spannungsspitzen, positive Spitzen oder negative GND-Spitzen verursacht werden. Also sagten sie mir, dass meine GPIOs mit Widerständen, Dioden und Kondensatoren geschützt werden müssen. Aber ich sehe kein Beispiel mit Dioden, Cs und Rs, die Ein- / Ausgänge in anderen Projekten auf Mikrocontroller- oder Mikroprozessorbasis schützen. Das meiste, was ich gesehen habe, sind Vorwiderstände an einigen der GPIO-Pins.
Meine Schaltung ist zu viel einfacher als die, die ich gesehen habe:
8 Expander-Pins werden Eingänge sein. Der Rest sind Ausgänge.
Expander-Ausgänge schreiben '0', niemals '1'.
Expander-Eingänge haben einen internen Rpull-up, der den Eingang auf 3,3 V setzt, wenn er nicht angeschlossen ist.
Ich habe an jeden Ausgang einen Draht gelegt und dieser Draht kann direkt mit den Eingängen verbunden werden oder nicht. Wenn also die 8 Eingangspins gelesen werden, lesen diejenigen, die mit den Eingängen verbunden sind, "0", und der Rest liest "1".
Eine Eingabe würde diese 3 Szenarien lauten:
Eine besondere Eigenschaft dieses Systems ist, dass GPIOs in der restlichen Zeit nicht als Ein- oder Ausgang konfiguriert werden. So kann während einer Ausführung ein Pin während der Initialisierung als Eingang konfiguriert werden, aber bei der nächsten Ausführung könnte derselbe Pin als Ausgang konfiguriert werden.
Dieses Überhitzungsphänomen tritt nicht mehr als ein- oder zweimal pro Tag auf. Aber ich fürchte, dass einmal ausreichen würde, um das System zu zerstören.
Beim endgültigen PCB-Design werden GPIOs-Pins durch die Platine geführt, wodurch ein 64-Pin-Anschluss erreicht wird. Eingang und Ausgang werden durch einen Draht verbunden, der während der Ausführung zwei der 64-Pin-Anschlussstifte durch menschliche Verbindung verbindet oder nicht. Auf diese Weise könnte ein Stromkreis zwischen einem Eingang und einem Ausgang geschlossen werden. Es könnten aber auch Unterbrechungen zwischen den restlichen Ein- und Ausgängen vorhanden sein.
Ich habe 10.000 Rs an jedem Geräte-GPIO hinzugefügt und verwende 100 nF zwischen VDD und GND. Es scheint vor zwei Tagen nicht mehr zu passieren, aber ich möchte meine GPIOs sicherstellen, wenn die Schaltung es wirklich braucht.
Benötigt diese Schaltung einen GPIO-Schutz? Reichen diese Widerstände aus?
Frage
Wie kommt es, dass mein MCP23S17 GPIO-Extender sehr heiß wird und verrückt spielt?
/ weitermachen, ...
Antworten
Teil 1 - Testaufbau
Ich würde vorschlagen, mit einer kleineren Version der Benutzeranforderungen zu beginnen. Anstatt die Dinge beispielsweise sehr flexibel zu gestalten, kann jeder Pin Ein- oder Ausgang sein, Sie können in der Testphase 8 Pins nur als Input und einen anderen Pin nur als Output verwenden.
PA0~7 auf Eingabemodus eingestellt
PB0~7 auf Ausgangsmodus eingestellt
Erst wenn Sie beim Testen den festen Ein-/Ausgabemodus der Pins in Ordnung finden, verallgemeinern Sie das Programm.
mcp23017_test_v0.2_2020aug0101 ÖFFENTLICH
Teil 2 – Klarstellung zu ESD und Selbsthaltung
Sie haben vielleicht bemerkt, dass die Anbieter Komponenten normalerweise in metallischen Plastiktüten und auch auf metallischen Schwämmen versenden. Das ist für Antistatik.
Die Arbeiter in den Montage- und Prüffabriken tragen antistatische Schreibbänder wie diese:
Ich bin ein Hobbyist, der mit billigen Komponenten spielt, und ich mache mir nie die Mühe, weil die Wahrscheinlichkeit, sich den ESD-Virus einzufangen, sehr, sehr gering ist.
Es war in den alten Zeiten, als elektronische Komponenten teuer waren, dass die Leute sich die Mühe machten. Oder Sie bleiben in einem sehr trockenen Land und tragen Kleidung aus Poly/Plastik/Nylon, dann müssen Sie sich die Mühe machen. Natürlich hat jeder die Chance, vom Licht getroffen zu werden. Vielleicht solltest du mal weiter googeln, um dich zu beruhigen.
(Ref A.2) ESD-Ausrüstung, die die Sicherheit und den Schutz am Arbeitsplatz verbessert – AntiStat
Teil 3 – Empfehlung zur Verwendung einer externen Stromversorgung für MCP23S17
Ich empfehle Neulingen immer, die 5-V- oder 3-V-Schiene des Rpi NICHT zur Stromversorgung von MCP23S17 oder anderen Peripheriegeräten zu verwenden, sondern zumindest für die Prototyping-Phase eine externe Stromversorgung zu verwenden.
Auf diese Weise sitzt der Rpi immer noch glücklich, wenn MCP23S17 verrückt wird. Also habe ich MCP23S17 einfach manuell zurückgesetzt und Rpi muss nicht zurückgesetzt werden, die Shows gehen weiter.
Teil 4 - Mögliche Ursachen für Überhitzung
Was Sie über Überhitzung sagen, ist ein bisschen besorgniserregend.
MCP23S17 kann keine großen Ströme verarbeiten. Normalerweise verwende ich Pufferchips, um große Ströme zu bewältigen. Wenn Sie alle 16 GPIO-Ausgangspins mit großem Strom überlasten, werden Sie in große Schwierigkeiten geraten.
Ich habe das Datenblatt überflogen und eine Zusammenfassung erstellt:
(1) Gesamtleistung = 700 mW
(2) Max. Strom VSS-Pin = 150 mA
(3) Max. Strom in VDD-Pin = 25 mA
(4) Eingangsklemmenstrom = ±20 mA
(5) Ausgangsklemmenstrom = ±20 mA
(6) Max. Ausgangsstrom, der von einem beliebigen Ausgangspin aufgenommen wird = 25 mA
(7) Max. Ausgangsstrom, der von einem beliebigen Ausgangspin bezogen wird = 25 mA
Sie sehen also, wenn Sie 6 GPIO-Pins mit 25 mA laden, liegt der Gesamtstrom über der 150-mA-Grenze des Vss-Pins. Normalerweise habe ich den 8 großen Chip ULN2803A, um die ganze schwere Arbeit zu erledigen. Jeder der 8 großen Jungs kann 500mA verarbeiten, ...
Sie scheinen 10 Ω für den Serienbegrenzungs- / Schutzwiderstand zu verwenden. Vielleicht möchten Sie die Berechnungen durchführen, um sicherzustellen, dass die individuelle GPIO- und Gesamt-Vcc-Stromgrenze nicht überschritten wird.
Teil 5 - Testen und Programmieren von Pair/Swap
Es ist oft eine gute Idee, mehr als zwei Proben zu verwenden, um Pair/Swap-Tests durchzuführen. Oft kann eine Komponente bei der Ankunft schlecht sein und/oder durch unvorsichtige Verdrahtung oder Prüfung beschädigt werden. So oft findet man nur durch tauschen und Vergleichen unachtsame Verdrahtungsfehler. Sie können MCP23s08 oder MCP23017 für Kreuztests verwenden. Es ist nur der Setup-Teil, der sich in den I2C- und SPI-Versionen von MCP23x17 unterscheidet. Die Hauptbetriebsfunktionen sind für MCp23SS17 und MCP23017 017 identisch. Das gelegentliche Fotografieren ist eine gute Dokumentation für spätere Referenzzwecke.
/ weitermachen, ...
Verweise
Teil A - Datenblätter und Artikel
(A.1) MCP23S17/MCP23017 Datenblatt – MikroChip
(A.2) ESD-Ausrüstung zur Verbesserung der Sicherheit und des Arbeitsplatzschutzes – AntiStat
(A.3) Saubere Energie für jeden IC, Teil 1: Bypass-Kondensatoren verstehen - Robert Keim, AAC 2015sep21
(A.5) Adafruit I2C 16-Kanal 12-Bit PWM/Servo-Treiber – 15 $
(A.6) Datenblatt PCA9685 PWM-Controller – NXP
(A.7) mcp23s17 Datenblatt – Mikrochip
(A.8) AliExpress MCP23S17-Modul
(A.9) TaoBao MCP23S17-Modul
(A.10) Logischer Pegelwandler (ULN2803, TBX/TSX0102/4/6/8 usw.) 1/2
(A.11) Logischer Pegelwandler (ULN2803, TBX/TSX0102/4/6/8 usw.) 2/2
(A.12) TVS, MOV-Klemmdiode – Liz London 2019mar16
(A.13) (TVS) Überspannungsschutzdiode – Wikipedia
(A.14) ESD-Schutzdioden (TVS-Dioden) – Toshiba
(A.15) ESD-Schutz durch Design von Chips und Mikroschaltungen – Online-Bibliothek, Wiley
(A.16) ESD (Elektrostatische Entladung) – Wikipedia
(A.17) Entkopplungskappen, PCB-Layout – Olin Lathrop , EE SE, 2011jun07, 80.000 Mal angesehen
Teil B - Forumsdiskussionen
Teil C - Schaltpläne
(C.1) mcp23s17_test_2020jul3002 CircuitLab-Schema - tlfong01 2020jul3001
(C.2) mcp23017_test_v0.2_2020aug0101 PUBLIC tlfong01 2020aug01
Anhänge
Anhang A – Bypass- und Entkopplungskondensatoren – Robert Keim, AAC
(A.3) Saubere Energie für jeden IC, Teil 1: Bypass-Kondensatoren verstehen - Robert Keim, AAC 2015sep21
Einführung
Es ist nicht unvorstellbar, dass ein engagierter, erfolgreicher Ingenieurstudent sein College abschließt und fast nichts über eine der am weitesten verbreiteten und wichtigsten Komponenten in realen Schaltungen weiß: den Bypass-Kondensator. Selbst erfahrene Ingenieure verstehen vielleicht nicht ganz, warum sie 0,1-µF-Keramikkondensatoren neben jedem Stromanschluss jedes ICs in jeder von ihnen entworfenen Leiterplatte einbauen.
Dieser Artikel enthält Informationen, die Ihnen helfen zu verstehen, warum Bypass-Kondensatoren notwendig sind und wie sie die Schaltungsleistung verbessern, und ein Folgeartikel konzentriert sich auf Details zur Auswahl von Bypass-Kondensatoren und den PCB-Layouttechniken, die ihre Effizienz maximieren.
Lösung
Es ist praktisch, dass ein so schwerwiegendes Problem mit einer einfachen, weit verbreiteten Komponente effektiv gelöst werden kann. Aber warum der Kondensator? Eine einfache Erklärung ist die folgende: Ein Kondensator speichert Ladung, die dem IC mit sehr niedrigem Serienwiderstand und sehr niedriger Serieninduktivität zugeführt werden kann.
Somit können transiente Ströme von dem Bypass-Kondensator (durch minimalen Widerstand und Induktivität) anstatt von der Stromleitung (durch vergleichsweise großen Widerstand und Induktivität) zugeführt werden. Um dies besser zu verstehen, müssen wir uns einige grundlegende Konzepte ansehen, die sich darauf beziehen, wie ein Kondensator einen Schaltkreis beeinflusst.
Zunächst aber eine kurze Anmerkung zur Begrifflichkeit: Die in diesem Artikel behandelten Bauelemente werden regelmäßig sowohl als „ Bypass-Kondensatoren “ als auch als „ Entkopplungskondensatoren “ bezeichnet .
Hier gibt es einen feinen Unterschied – „Entkopplung“ bezieht sich auf die Verringerung des Ausmaßes, in dem ein Teil einer Schaltung einen anderen beeinflusst, und „Bypass“ bezieht sich auf die Bereitstellung eines niederohmigen Pfads, der es dem Rauschen ermöglicht, auf seinem Weg an einem IC „vorbeizukommen“. zum Erdknoten.
Beide Begriffe können korrekt verwendet werden, da ein Bypass-/Entkopplungskondensator beide Aufgaben erfüllt. In diesem Artikel wird jedoch der „Bypass-Kondensator“ bevorzugt, um Verwechslungen mit einem in Reihe geschalteten Entkopplungskondensator zu vermeiden, der zum Blockieren der DC-Komponente eines Signals verwendet wird.
Ein Standardansatz
Die vorstehende Analyse hilft uns, ein klassisches Umgehungsschema zu verstehen:
ein 10-µF-Kondensator innerhalb von ein oder zwei Zoll des IC und
ein 0,1-µF-Keramikkondensator so nah wie möglich am Power-Pin:
Der größere Kondensator glättet niederfrequente Schwankungen in der Versorgungsspannung und der kleinere Kondensator filtert hochfrequentes Rauschen auf der Stromleitung effektiver heraus.
Wenn wir diese Bypass-Kondensatoren in die oben diskutierte 8-Inverter-Simulation einbauen, wird das Klingeln eliminiert und die Größe der Spannungsstörung von 1 mV auf 20 µV reduziert , ...
Anhang B – Erdungsproblem und Lösung
(1) Erdschleifenprobleme und wie man sie beseitigt - Tomi Engdahl 2013
(2) RpiZero-Stromversorgung über 40-poligen Strom-/GPIO-Header oder microUSB-Anschluss
(3) Erdungsproblem des Rpi-GPIO-Tastenschaltkreises
Anhang C - Altes MCP23S17/ MCP23017 Proto Board zum Testen
Ich denke darüber nach, mein altes MCP23S17 oder MCP23017 zu verwenden, um einige Tests durchzuführen. Wenn ich mir die unordentliche Verkabelung meines alten MCP23017-Boards ansehe, erinnere ich mich jetzt, warum ich das letzte Mal die Arbeit an SPI MCP23S17 aufgegeben und zu I2C MCP23017 gewechselt habe, weil die DIY-Verkabelung sehr unordentlich ist und es schwierig ist, Hardware-Fehlerbehebungen durchzuführen. Für I2C MCP23S17 gibt es billige Breakout-Boards, die mir viel Zeit für die Verkabelung geben.
Anhang D - Hinweise zur Einrichtung des MCP23s17-Protoboards
Anhang E - Testen von SPI 00, 01, 10, 11, 12 Loopback und Wiederholung senden ein Byte OK
# Program:
# spi_loopback_v55.py tlfong01 2020aug03hkt1220
#
# Function:
# 1. SPI one byte loopback
# 2. SPI repeatedly send one byte
#
# System Config:
# Rpi4B buster (r2020may23), python 3.7.3 (r2019dec20), thonny v3.2.7 (r2020jan22)
# $ date Thu 25 Jun 2020 04:36:13 PM HKT
# $ uname -a Linux raspberrypi 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l GNU/Linux
# $ ls /dev/ttyUSB* /dev/ttyUSB0
# $ ls /dev/ttyS0 /dev/ttyS0
# $ ls /dev/ttyAMA0 /dev/ttyAMA0
# Test Function Definitions:
#
# Test 1 - loopBackTest() - SPI port send and receive one byte.
# Function - Send one byte to MSOI and read it back from MISO.?
# Setup - Connet MOSI pin to MISO pin to form a loop.
#
# Test 2 - repeatSendByte() - SPI port repeatedly send out single bytes. ?
# Function - Repeat many times sending a byte, pause after each byte.
# 1. SPI ports setup notes
# To enable SPI and setup SPI 10, 11, 12 ports, add these two lines to /boot/config.txt
# dtparam=spi=on
# dtoverlay=spi1-3cs
# To list SPI devices
# pi@raspberrypi:~ $ ls /dev/spi*
# /dev/spidev0.0 /dev/spidev0.1 /dev/spidev1.0 /dev/spidev1.1 /dev/spidev1.2
# 2. Notes of loopback function
# Call example - testLoopbackOneByte(spiPort00)
# Function - send byte 0x5b to SPI MOSI and read byte from MISO
# Setup - must connect MOSI pin to MISO pin to loop back
# Note - 1. Only checks if MISO echoes MOSI, CS0, CS1, CS2 is not checked
# 2. To check if SPI 0, CS0, CS1, or SPI1 CS0, CS1, CS2, need a scope to display repeat send bytes
from time import sleep
import spidev
# *** Setup SPI Ports ***
spiPort00 = spidev.SpiDev()
spiPort00.open(0,0)
spiPort00.max_speed_hz = 100000
spiPort01 = spidev.SpiDev()
spiPort01.open(0,1)
spiPort01.max_speed_hz = 100000
spiPort10 = spidev.SpiDev()
spiPort10.open(1,0)
spiPort10.max_speed_hz = 100000
spiPort11 = spidev.SpiDev()
spiPort11.open(1,1)
spiPort11.max_speed_hz = 100000
spiPort12 = spidev.SpiDev()
spiPort12.open(1,2)
spiPort12.max_speed_hz = 100000
# *** Define SPI Functions ***
def spiSendRecvOneByte(spiPort, sendByte):
sendByteArray = [sendByte]
recvByteArray = spiPort.xfer(sendByteArray)
return recvByteArray
def loopBackOneByte(spiPort, sendByte):
recvByteArray = spiSendRecvOneByte(spiPort, sendByte)
recvByte = recvByteArray[0]
print('\nBegin testLoopbackOneByte(),....')
#print('')
print(' sendByte = ', hex(sendByte))
print(' recvByte = ', hex(recvByte))
#print('')
print('End testLoopbackOneByte(),....')
return
def repeatSendOneByte(spiPort, sendByte, pauseTimeBetweenBytes, repeatCount):
print('\nBegin repeatSendByte(),....')
print(' Now use a scope to display the SPI signals, MOSI, MISO, CSn, ...')
for i in range(repeatCount):
spiSendRecvOneByte(spiPort, sendByte)
sleep(pauseTimeBetweenBytes)
print('End repeatSendByte().')
return
# *** Test Funtions ***
def testLoopbackOneByte(spiPort, dataByte):
loopBackOneByte(spiPort, dataByte)
return
def testRepeatSendOneByte(spiPort, dataByte, pauseSeconds, repeatTimes):
repeatSendOneByte(spiPort, dataByte, pauseSeconds, repeatTimes)
return
# *** Main ***
# *** Test SPI Loopback Functions, Comment out not required tests ***
print('\n*** testLoopbackOneByte(spiPort00, 0x5b) ***', end = '')
testLoopbackOneByte(spiPort00, 0x5b)
#print('\n*** testLoopbackOneByte(spiPort01, 0x5b) ***', end = '')
#testLoopbackOneByte(spiPort01, 0x5b)
#print('\n*** testLoopbackOneByte(spiPort10, 0x5b) ***', end = '')
#testLoopbackOneByte(spiPort10, 0x5b)
#print('\n*** testLoopbackOneByte(spiPort11, 0x5b) ***', end = '')
#testLoopbackOneByte(spiPort11, 0x5b)
#print('\n*** testLoopbackOneByte(spiPort12, 0x5b) ***', end = '')
#testLoopbackOneByte(spiPort12, 0x5b)
# *** Test SPI Repeat Send One Byte Functions, Comment out not required tests ***
# *** SPI 00, 01 Repeat Send One Byte ***
#print('\n*** testRepeatSendOneByte(spiPort00, 0x5b, 0.001, 200000) ***', end = '')
#testRepeatSendOneByte(spiPort00, 0x5b, 0.001, 200000)
#print('\n*** testRepeatSendOneByte(spiPort01, 0x5b, 0.001, 200000) ***', end = '')
#testRepeatSendOneByte(spiPort01, 0x5b, 0.001, 200000)
# *** SPI Repeat Send One Byte 10, 11, 12 ***
#print('\n*** testRepeatSendOneByte(spiPort10, 0xb5, 0.001, 200000) ***', end = '')
#testRepeatSendOneByte(spiPort10, 0xb5, 0.001, 200000)
#print('\n*** testRepeatSendOneByte(spiPort11, 0xb5, 0.001, 200000) ***', end = '')
#testRepeatSendOneByte(spiPort11, 0xb5, 0.001, 200000)
#print('\n*** testRepeatSendOneByte(spiPort12, 0xb5, 0.001, 200000) ***', end = '')
#testRepeatSendOneByte(spiPort12, 0xb5, 0.001, 200000)
# End of program
''' Smple output tlfong 01 2020aug03hkt1219
>>> %Run spi_loopback_v54.py
*** testLoopbackOneByte(spiPort00, 0x5b) ***
Begin testLoopbackOneByte(),....
sendByte = 0x5b
recvByte = 0x5b
End testLoopbackOneByte(),....
*** testLoopbackOneByte(spiPort01, 0x5b) ***
Begin testLoopbackOneByte(),....
sendByte = 0x5b
recvByte = 0x5b
End testLoopbackOneByte(),....
*** testLoopbackOneByte(spiPort10, 0x5b) ***
Begin testLoopbackOneByte(),....
sendByte = 0x5b
recvByte = 0x5b
End testLoopbackOneByte(),....
*** testLoopbackOneByte(spiPort11, 0x5b) ***
Begin testLoopbackOneByte(),....
sendByte = 0x5b
recvByte = 0x5b
End testLoopbackOneByte(),....
*** testLoopbackOneByte(spiPort12, 0x5b) ***
Begin testLoopbackOneByte(),....
sendByte = 0x5b
recvByte = 0x5b
End testLoopbackOneByte(),....
>>>
Python 3.7.3 (/usr/bin/python3)
>>> %Run spi_loopback_v54.py
*** testRepeatSendOneByte(spiPort00, 0x5b, 0.001, 200000) ***
Begin repeatSendByte(),....
Now use a scope to display the SPI signals, MOSI, MISO, CSn, ...
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Python 3.7.3 (/usr/bin/python3)
>>> %Run spi_loopback_v54.py
*** testRepeatSendOneByte(spiPort01, 0x5b, 0.001, 200000) ***
Begin repeatSendByte(),....
Now use a scope to display the SPI signals, MOSI, MISO, CSn, ...
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Python 3.7.3 (/usr/bin/python3)
>>> %Run spi_loopback_v54.py
*** testRepeatSendOneByte(spiPort10, 0xb5, 0.001, 200000) ***
Begin repeatSendByte(),....
Now use a scope to display the SPI signals, MOSI, MISO, CSn, ...
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Python 3.7.3 (/usr/bin/python3)
>>> %Run spi_loopback_v54.py
*** testRepeatSendOneByte(spiPort11, 0xb5, 0.001, 200000) ***
Begin repeatSendByte(),....
Now use a scope to display the SPI signals, MOSI, MISO, CSn, ...
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Python 3.7.3 (/usr/bin/python3)
>>> %Run spi_loopback_v54.py
*** testRepeatSendOneByte(spiPort12, 0xb5, 0.001, 200000) ***
Begin repeatSendByte(),....
Now use a scope to display the SPI signals, MOSI, MISO, CSn, ...
End repeatSendByte().
>>>
'''
# *** End ***
Anhang F – Screenshots des Bereichs „Send Byte“ wiederholen
Anhang G - Einrichtung der zwei MCP23S17-Protoboards
Ende der Antwort
Nur ich
Suvi_Eu
Suvi_Eu
tlfong01
tlfong01
tlfong01
tlfong01
tlfong01
tlfong01
tlfong01
tlfong01
tlfong01
Suvi_Eu
Suvi_Eu
Suvi_Eu
Suvi_Eu
tlfong01
tlfong01
tlfong01
tlfong01
tlfong01