mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Neues bei ST: STM32F217


Autor: Hannes S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin gerade frisch verliebt: 
http://www.st.com/internet/mcu/product/250173.jsp

Datenblatt ist verfügbar und status ist immerhin schon "preview" - mal 
schauen, wie lange wir noch warten müssen...

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes S. schrieb:
> Datenblatt ist verfügbar und status ist immerhin schon "preview" - mal
> schauen, wie lange wir noch warten müssen...

Ich habe weniger Ansprüche, eine laufende I2C Peripherie bei den 
STM-Cpus wäre schon etwas ....

Autor: Markus Müller (mmvisual)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs mal in die Übersicht vom Artikel STM32 rein geschrieben.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerd :
> Ich habe weniger Ansprüche, eine laufende I2C Peripherie bei den
> STM-Cpus wäre schon etwas ....

Was läuft denn nicht bei dem I2C im STM32 ? Hatte bisher noch keine 
Probleme, ob mit INT/DMA oder polling.

Autor: Stm32User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steffen:

Bitte den promblemlosen I2C + Int (ohne DMA) Quellcode mal zeigen. Ich 
glaube nicht das die I2C-Einheit bugfrei ist. Diverse Quellen 
reinitialsieren die gesamte Hardware nach jedem I2C Transfer, vor allem 
kombinierte Read/Write Zugriffe bringen Probleme.

Beitrag "STM32 I2C Bus bleibt hängen"
http://www.jiangsheng.tk/56.html
http://svn.openpilot.org/blame.php?repname=OpenPil...

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die kurze Beschreibung aus der Errata:
Description
When the EV7, EV7_1, EV6_1, EV6_3, EV2, EV8, and EV3 events are not managed before the current byte is being transferred, problems may be encountered such as receiving an extra byte, reading the same data twice or missing data.

Workarounds
When it is not possible to manage the EV7, EV7_1, EV6_1, EV2, EV8, and EV3 events before the current byte transfer and before the acknowledge pulse when changing the ACK control bit, it is recommended to:
1. use the I2C with DMA in general, except when the Master is receiving a single byte
2. use I2C interrupts and boost their priorities to the highest one in the application to make
them uninterruptible

Man soll als I2C Master die DMA benutzen, es sei denn man will nur ein 
Byte empfangen. Für einen Sensor der evtl. nur 2 Bytes empfängt und 2 
Bytes sendet ein ganz schöner Overhead und der DMA Channel ist für diese 
Zeit nicht für eine andere Peripherie nutzbar.

Oder der I2C Interrupt soll benutzt werden, aber nur mit der höchsten 
Priorität. Sprich, das System hängt oder "stört" den I2C Interrupt und 
bei jeden Byte das gesendet oder empfangen wird schlägt ein Interrupt 
auf.

Oder man schaltet alle Interrupts aus und macht ein auf Pollen ....


Die I2C Peripherie ist in Verbindung mit einem Real-Time-Kern nur 
bedingt benutzbar.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stm32User :

> Bitte den promblemlosen I2C + Int (ohne DMA) Quellcode mal zeigen.

so einfach zeigen kann ich das nicht, da ich den I2C unter CMX ( RTOS ) 
laufen lasse. Ich benutze dabei einige Events im CMX und das muss man 
erstmal trennen.
Ich habe an dem Bus einen EEPROM und ein Display, wobei ich das Display 
über DMA beschreibe und den EEPROM im INT-Betrieb. Die Software läuft 
seit 2 Jahren in Laborgeräten ohne Probleme.
Das Bsp. von ST im INT-Betrieb war leider ( oder ist noch ? ) falsch und 
da habe ich schon eine Weile geraucht, um den Fehler zu finden.

@ Gerd:

> Die I2C Peripherie ist in Verbindung mit einem Real-Time-Kern nur
> bedingt benutzbar.

Wie oben schon geschrieben läuft der I2C zusammen mit CMX ohne Probleme. 
Leider ist es richtig, das der I2C-INT in der höchsten Priorität laufen 
muss, stört bei meiner Applikation aber nicht, da nur selten in den 
EEPROM geschrieben wird. Ich wollte schon lange mal den EEPROM auf DMA 
umstellen, hatte aber leider dazu noch keine Zeit.

Versuchen kann ich mal, eine Applikation hier reinzustellen. Muss das 
aber erstmal aus dem System ( CMX ) trennen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.