Arduino DUe -> Port Serie et i²c

Bonjour a tous.

Je souhaite faire un shield RS232 au format Mega/Due embarquant egalement un DS1307 sur le port i²c

Le Mega fonctionne en TTL ( 5v ), pas de Pb avec lui ....

Mais le Due lui cause en 3v3 ....
Donc il faut faire un shield compatible 3v3 et 5v

Par contre un truc me chagrine sur avec l'Arduino Due
Le Serial0 est sur l'ATmega16U2 ( qui tourne en 5V ) les 3 autres sur le Atmel SAM3X8E ARM Cortex-M3 CPU ( donc en 3V3 )


La Premiere Question est donc : Serial0 en 5v ou 3v3 ?


Quand au DS1307 qui tourne lui sous 5V, j'ai lu ca et la que L'arduino Due était compatible ( je sais tres bien que le DUE possede un RTC interne )
Mais les 2 bus i²c entre sur le SAM3X8E ( donc en 3V3 )
Mais quand on lit le datasheet => http://datasheets.maximintegrated.com/en/ds/DS1307.pdf
on trouve les niveaux suivant :

Supply Voltage VCC Min 4.5 - Typique 5 - Max 5.5V
Logic 1 Input VIH Min 2.2 - Max VCC+0.3V
Logic 0 Input VIL Min -0.3 Max +0.8V
Logic 0 Output (IOL = 5mA) VOL Max 0.4V

Mais rien sur VOH qui devrait correspondre a Logic 1 Output

Donc j'imagine qu'il faut mettre les resistances de tirage ( voir le datasheet TYPICAL OPERATING CIRCUIT => Resistance RPU ) a 3v3 et non au 5V, sinon le Due ne va pas aimer

Meme si sur cette page http://www.adrirobot.it/rtc_module/rtc_module_arduino-due.htm il n'y a pas de resistance sur le module !


La seconde question est donc : Comment faite vous pour cabler un DS1307 a un Due ???


Reponse =>
Resistances de tirage au 3v3 sur les SCL et SDA.

Merci d'avance pour vos lumieres !

Salut,

  1. Normal qu'il n'y ai pas de VOH puisque c'est le niveau qui est défini par les résistances de tirage qui peuvent être interne au µC (c'est le cas sur les arduino "classiques" j'imagine que c'est pareil sur la DUE) ce qui explique l'absence de R de tirage externe sur certains montages. Mais il est recommandé d'en mettre.

En i2c la communication ne nécessite qu'un transistor en fait qui devient passant pour faire un zéro. Quand aucun n'est passant (maitre et esclave(s)) c'est la résistance de tirage qui fixe l'état à 1

  1. Comme sur n'importe quelle autre Arduino :wink: VCC = 5V SDA = SDA SCL = SCL et GND = ... GND !

Ok, donc la reponse a la question 2 est :

Resistance de tirage au 3v3 sur les SCL et SDA.

J'edite mon premier post ... pour les autres qui cherchent p'tre !

tout reste entier concernant la question 1 :wink: