I2C mit Stellaris Launchpad?

OP Persönliche Seite #3381483
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
#3382127
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.
Angehängte Dateien:
OP Persönliche Seite #3382398
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren