Forum: Mikrocontroller und Digitale Elektronik I2C stm32f100rb VL discovery


von Tobias G. (Firma: MS Ultraschall) (toge97)


Lesenswert?

Hallo Community,

ich bin momentan als Student daran, für einen neuen Prozessor in unserem 
nächsten Projekt die Schnittstellen zu initialisieren.

Dazu habe ich das stm32f100RB VLdiscovery Board bekommen.

Pins, Externe Interrupts, SPI habe ich schon geschafft, auch schon 
ausgiebig getestet. Kann mit der SPI sogar schon SPI-Slaves ansteuern, 
z.B. ein Digitales Poti.

Allerdings hänge ich momentan seit 2 Tagen an der I2C 
Schnittstelle...habe meinen Fehler aber jetzt gefunden.
Mein Startevent wird ausgeführt, EV5 wird durch read SR1 und write DR 
Register gecleared.
Danach sende ich die Adresse 0xA0 auf den Bus um als Master Transmitter 
zu arbeiten.
Danach wird EV6 geprüft und hierbei kommt ein Fehler auf. Ich vermute es 
liegt am Acknowlegement.... Ich habe keinen Slave am Bus.

Kann es sein, dass sich i2c hier in einen ERROR state versetzt, da er 
kein Acknowledgement bekommt?

Man kann bei der Init Struktur das Ack "disablen" aber selbst dann 
funktioniert es bei mir nicht.

Muss ich wirklich einen Slave anschließen damit das funktioniert. Bitte 
um schnelle Antwort, danke und schönen Abend! :)

von Jim M. (turboj)


Lesenswert?

Tobias G. schrieb:
> Kann es sein, dass sich i2c hier in einen ERROR state versetzt, da er
> kein Acknowledgement bekommt?

Ja. Denn beim Ack geht der Master automagisch auf "nur Lesen", und der 
Slave müsste SDA auf Masse ziehen. Macht er das nicht, ist sofort klar 
dass da niemand zuhört -> Fehler.

von Tobias G. (Firma: MS Ultraschall) (toge97)


Lesenswert?

Also MUSS ich irgendiwe nen Slave dranhängen?

Dann mal an den Lötkolben und nen alten I2C Baustein von ner 
Leiterplatte holen...^^

von Andreas S. (igel1)


Lesenswert?

Ja, aber vor dem Lötkolben bitte noch dieses Versprechen einlösen:
Beitrag "Re: STM32f100RB Discovery Board"

Ja, ja - das Internet vergisst nie ;-)

Viele Grüße

Igel1

von Tobias G. (Firma: MS Ultraschall) (toge97)


Lesenswert?

Sobald es wirklich funktionsfähig ist stelle ich ihn hoch..;)



Kann ich nicht den I2C1 des stm als master und den I2C2 als slave 
initialisieren und die beiden miteinander kommunizieren lassen?


Müsste doch normalerweise funktionieren?...

von Cristi P. (nico_2010)


Lesenswert?

Yes, you can use I2C1 as master and I2C2 as slave on the same board.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.