I2C richtigen Clock Takt erstellen

OP #5977308
Hallo zusammen,

ich programmiere einen STM32F429BI und betreibe damit auch einige I2C 
Bausteine. Jetzt ist meine Frage, wie ich meine I2C selber genauer 
erstelle.
Ich verwende aktuell eine for Schleife um die kleinen Pausen für den SCL 
Takt zu erstellen. Jetzt will ich das umbauen, damit ich die vollen 400 
kHz aus meinen Bauteilen mitnehmen kann.

Ich programmiere in C und würde meine Clock am Liebsten mit dem Quarz 
oder den internen System Clock.

Wie genau mache ich damit einen Timer, damit ich auf die 2,5 µs pro Takt 
genau komme, oder hat von euch noch jemand eine Idee, wie ich das am 
Besten mache ?

Danke schon mal für eure Hilfe.
Gast
> Der STM32F429xx hat doch bis zu drei I2C-Interfaces, was hindert den TO
> daran eines davon zu verwenden?

Er muesste ein Datenblatt lesen. Das geht gar nicht. Datenblaetter 
meistens laenger wie eine WhatUp Nachricht!

Olaf
Gast
Raphael K. schrieb:
> Wie genau mache ich damit einen Timer, damit ich auf die 2,5 µs pro Takt
> genau komme,

Das ist Korinthenkackerei, denn die halbe Mikrosekunde (oder was
auch immer sonst) beim Betrieb mit I2C Bus herauszuholen ist
völlig sinnlos.

a) du spürst den Gewinn nicht, kannst den effektiven Gewinn
kaum nachweisen.

b) Der I2C Bus hört nicht schlagartig auf, jenseits von 400KHz
zu funktionieren.
(Firma: Vescomp)
Raphael K. schrieb:
> Wie genau mache ich damit einen Timer, damit ich auf die 2,5 µs pro Takt
> genau komme, oder hat von euch noch jemand eine Idee, wie ich das am
> Besten mache ?

 Kein Problem.
  a) Alle 1.25µs wird Timer Interrupt angesprungen.
     Hin- und Rücksprung, sowie das retten von entsprechenden Registern
     und Pintoggle brauchen ja kaum Zeit, bleibt dir mehr als genug
     für main()

  b) For Schleife rausschmeissen, ein Do loop verwenden.

 Auf diese Weise kannst du den SCL auf ein paar nanosekunden genau
 abstimmen, I2C Bausteine mögen es nämlich ganz genau, ein Fehler von
 mehr als 1ns ist unerwünscht und verschlechtert die Kommunikation
 unheimlich.

 P.S.
 Falls dies nicht hilft, wäre das lesen von entsprechendem Datenblatt
 und Suche nach eingebautem Hardware-I2C auch hilfreich.
Gast
Marc V. schrieb:
> Auf diese Weise kannst du den SCL auf ein paar nanosekunden genau
>  abstimmen, I2C Bausteine mögen es nämlich ganz genau, ein Fehler von
>  mehr als 1ns ist unerwünscht und verschlechtert die Kommunikation
>  unheimlich.

ROFL

(hoffentlich geht das nicht in die Hose ...)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.