Forum: Mikrocontroller und Digitale Elektronik I2C mit Stellaris Launchpad?


von Uwe B. (boerge) Benutzerseite


Lesenswert?

MoinMoin,

ich versuche diesen Abend vergeblich einen DS1307 mit einem Stellaris 
Launchpad anzusprechen. Ich möchte dazu gern I2C-Kanal 1(!) benutzen...

Hardwareseitig sind SCL/SDA des DS1307 mit PA6/PA7 des Launchpads 
verbunden. Es existieren die entsprechenden zwei 10k-PullUps gegen 3,3V 
des Stellaris-Boards...

Das relevante Codefragment sieht ungefähr so aus:
1
...
2
#define ADDR_DS1307      0x68
3
...
4
// I2C(1) initialisieren  
5
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C1);
6
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
7
GPIOPinConfigure(GPIO_PA6_I2C1SCL);
8
GPIOPinConfigure(GPIO_PA7_I2C1SDA);
9
GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7);
10
I2CMasterInitExpClk(I2C1_MASTER_BASE, SysCtlClockGet(), false); // 100kHz
11
...
12
I2CMasterSlaveAddrSet(I2C1_MASTER_BASE, ADDR_DS1307, false); // write
13
I2CMasterDataPut(I2C1_MASTER_BASE, 0x00); // Sekunden
14
I2CMasterControl(I2C1_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND);
15
while(I2CMasterBusBusy(I2C1_MASTER_BASE)){}
16
I2CMasterSlaveAddrSet(I2C1_MASTER_BASE, ADDR_DS1307, true); // read
17
I2CMasterControl(I2C1_MASTER_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE);
18
while(I2CMasterBusBusy(I2C1_MASTER_BASE)){}
19
ret = I2CMasterDataGet(I2C1_MASTER_BASE);
20
...

...ich bekomme immer 0 in ret zurück!

Es wäre schön, wenn jemand eine Idee hätte!

Grüße & Danke Uwe

: Bearbeitet durch User
von Gerhard G. (g_g)


Angehängte Dateien:

Lesenswert?

Hallo,

in deiner Init musst du folgendes eingeben:

falsch:

GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7);

richtig:

ROM_GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_7);
GPIOPinTypeI2CSCL(GPIO_PORTA_BASE, GPIO_PIN_6);


dann funktioniert deine Routine!

aber.. die RTC DS1307 ist nicht für 3,3 Volt geeignet.
Das ist ein reiner 5 Volt Type.

Besser ist der DS1338-3 oder DS1338-33

Ich habe dir mal mein Programm angehängt.

Gruß G.G.









Gruß G.G.

von Uwe B. (boerge) Benutzerseite


Lesenswert?

MoinMoin,

danke für die Rückmeldung...

Gerhard Gehlert schrieb:
> Ich habe dir mal mein Programm angehängt.
>
ok, ich habe mal die API_i2c in mein Programm eingebaut, sieht dann auch 
übersichtlicher aus...

Gerhard Gehlert schrieb:
> Besser ist der DS1338-3 oder DS1338-33
>
naja, ich hätte gern etwas (für mich Ü40 mit Brille) Lötbares, aber...

Gerhard Gehlert schrieb:
> .. die RTC DS1307 ist nicht für 3,3 Volt geeignet.
> Das ist ein reiner 5 Volt Type.
>
scheint aber trotzdem zu funktionieren. Ich habe gerade die beiden 
PullUps von 10k auf 5k verringert und jetzt kommt irgend etwas an, muss 
ich mal verifizieren und rumspielen.

Der DS1307 wird mit 5V versorgt, kommt ja auch vom Launchboard. Die 
beiden PullUps gehen zu den 3,3V des Boards.

Grüße & erst mal Danke,
Uwe

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.