smbus, 25bit senden

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
ReturnFalse
User
Beiträge: 8
Registriert: Mittwoch 13. Mai 2015, 14:23

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
ReturnFalse
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:

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
Ich hab die höherwertigen Bits weggelassen, da alle low sind
Sieht gut aus, smbus meckert nich, Oszi leuchtet fröhlich...keine Reaktion. :cry:

Hat Jemand noch eine Idee, was ich falsch mache?
Antworten