Hallo,
ich muss an ein Device (Om5604) ein 25bit-Muster senden.
nun habe ich diese Erklärung gefunden:
write_block_data(int addr, char cmd, long vals[])
Sendet einen Datenblock zum Device. cmd ist Kommando- oder Registerangabe. Der Datenblock kann maximal 32 Bytes lang sein.
Die Funktion setzt die Länge des Blocks vor das Wertearray (d. h. das Array darf maximal 31 Bytes lang sein). Die Methode eignet sich nur für manche Devices.
nur hapert es bei mir an der Umsetzung.
Kann mir jemand erklären, wie der Befehl auszusehen hat?
Danke
smbus, 25bit senden
-
- User
- Beiträge: 8
- Registriert: Mittwoch 13. Mai 2015, 14:23
Mhh..so einfach, wie ich mir das dachte, ist es nicht...
ich habe mich durch die Datenblätter vom PCF8574 und TEA5757 gelesen.
Der TEA will seriell 25Bit haben, der Expander ist mit p0-p3 am TEA.
Jetzt habe ich es so gelöst:
Ich hab die höherwertigen Bits weggelassen, da alle low sind
Sieht gut aus, smbus meckert nich, Oszi leuchtet fröhlich...keine Reaktion.
Hat Jemand noch eine Idee, was ich falsch mache?
ich habe mich durch die Datenblätter vom PCF8574 und TEA5757 gelesen.
Der TEA will seriell 25Bit haben, der Expander ist mit p0-p3 am TEA.
Jetzt habe ich es so gelöst:
Code: Alles auswählen
bus = smbus.SMBus(2)
radio_addr=0x38
bit=[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] # Command für Suchlauf starten
#Clock W/R DATA Mo/St
# 1 0 1/0 0
for a in range(0,25):
n=bit[a]
if (n==0):
signal = 0b1000 # Clock auf high, Data-Bit=0
if (n==1): # oder
signal = 0b1010 # Clock auf high, Data-Bit=1
bus.write_byte(radio_addr,signal) # I2C schreiben
time.sleep(0.01) # warten
bus.write_byte(radio_addr,0b0000) #Clock auf low
Sieht gut aus, smbus meckert nich, Oszi leuchtet fröhlich...keine Reaktion.

Hat Jemand noch eine Idee, was ich falsch mache?