I2C <=> RS232

'soir, J'ai deux cartes qui doivent discuter ensemble, l'une est en I2C et l'autre en RS232 et je voudrais =E9viter d'utiliser un uC juste pour ca : connaissez-vous un chip qui translate de l'I2C vers du RS485 ? (dans les deux sens bien entendu)

Reply to
Jean-Christophe
Loading thread data ...

"Jean-Christophe" a écrit dans le message de news: snipped-for-privacy@h12g2000vbf.googlegroups.com...

Voir chez NXP, par exemple SC16IS740 (disponible par exemple chez Digikey). Mais la mise en oeuvre de ce type de produits n'est pas si transparente que çà... Cordialement,

--
Robert Lacoste
ALCIOM - The mixed signal experts
www.alciom.com
Reply to
Robert Lacoste

"Robert Lacoste"

Correction : (...) vers du RS232 ? (dans les deux sens)

Merci Robert : je DL la datasheet pour investiguer. ( mais à première vue, s'il faut le paramétrer, autant utiliser un petit PIC à 8 pattes déja dans les tiroirs )

Reply to
Jean-Christophe

Le Wed, 09 Nov 2011 09:32:57 -0800, Jean-Christophe a écrit :

ben i2C c'est un système maître-esclave et synchrone. Le changement de sens est hard. Il est aussi multi esclave.

RS232 c'est (éventuellement) full duplex et asynchrone (le synchrone en RS232 c'est pas classique).

AMHA c'est utopique sans µC. (et même avec pas simple à cause des problèmes de tampon et d'adressage).

Reply to
moi-meme

On 10 nov, 15:21, moi-meme

Le chip propos=E9 par Robert remplit bien ces fonctions.

Mais je vais rester sur un uC minimaliste =E0 8 pattes ; j'en ai d=E9ja dans mes tiroirs et au moins je garderai la main sur la totalit=E9 du cha=EEnage soft & hard.

Reply to
Jean-Christophe

Le Thu, 10 Nov 2011 13:11:03 -0800, Jean-Christophe a écrit :

+1 c'est un problème de protocole avant d'être un problème hard.
Reply to
moi-meme

Bit banging coté RS232 => pas besoin de hard (pourquoi payer pour un composant quand on peux faire sans ?).

--
 >o_/ DEMAINE Benoit-Pierre (aka DoubleHP) http://benoit.demaine.info/
If computing were an exact science, IT engineers would'nt have work \_o<

"So all that's left, Is the proof that love's not only blind but deaf."
(FAKE TALES OF SAN FRANCISCO, Arctic Monkeys)
Reply to
DEMAINE Benoit-Pierre

Mon monde est probablement un rêve pour toi, car je l'ai fait.

En fait, on se fout de savoir si c'est un port série ou parallèle, le code est le même.

ATTENTION: sur les OS actuels, il faut faire TRES attention à la vitesse de scheduling, la VM, et la gestion de priorité des processus. J'ai eu des problèmes très fun sous Linux 2.4 parce que j'avais (à l'époque) mal compris la gestion processus et des interruptions sous Linux (et je me suis retrouvé avec 50 Bauds ... sur un AMD 1.4G, c'était un peu lent ^^ ). Tu aura le même problème (sauf si tu es sous DOS 6.x ou antérieurs: DOS 7 est multi-taches)

--
 >o_/ DEMAINE Benoit-Pierre (aka DoubleHP) http://benoit.demaine.info/
If computing were an exact science, IT engineers would'nt have work \_o<

"So all that's left, Is the proof that love's not only blind but deaf."
(FAKE TALES OF SAN FRANCISCO, Arctic Monkeys)
Reply to
DEMAINE Benoit-Pierre

On 11 nov, 05:05, DEMAINE Benoit-Pierre

| "Jean-Christophe" a crit : | J'ai deux cartes qui doivent discuter ensemble, | une est en I2C et l'autre en RS232 et je | voudrais viter d'utiliser un uC juste pour ca : | connaissez-vous un chip qui translate de l'I2C | vers du RS232 ? (dans les deux sens bien entendu)

La transmission s'effectue dans les deux sens ; l' I2C tourne =E0 100 kbps et le RS232 =E0 9,6 kbps ; et de plus les signaux I2C (SCL & SDA) ne sont pas directement mappables sur les signaux RS232 (TX & RX) Ce n'est donc pas une solution, sinon je l'aurais d=E9ja fait.

Dans un cas comme celui-ci on ne peut faire sans, un minimum de r=E9flection l'aurait montr=E9.

Reply to
Jean-Christophe

On 11 nov, 11:13, DEMAINE Benoit-Pierre

| On 10/11/11 21:21, moi-meme wrote: | AMHA c'est utopique sans =B5C. (et m=EAme avec pas simple | =E0 cause des probl=E8mes de tampon et d'adressage).

Avec un uC il n'y a pas de quoi pontifier, n'importe qui fait ca les yeux ferm=E9s. Une fois j'ai m=EAme d=FB impl=E9menter une interface USB/I2C sur un uC qui n'avait pas du tout d'interface interne I2C, en reg=E9n=E9rant les =E9tats logiques SDA/SCL par soft via un contr=F4le direct de deux pinouilles I/O. Et il n'y a vraiment pas de quoi s'enorgueillir.

Et si c'est sans uC : d=E9cris comment tu t'y es pris.

S'il y a du code alors il y a bien un uC ou un uP.

e

des

mal

^^ ).

DOS 7

J'ai bien pr=E9cis=E9 qu'il s'agit de deux cartes mais n'ai pas parl=E9 de PC ; ca c'est toi qui l'introduis en hors-sujet.

Reply to
Jean-Christophe

oui, celui de la machine ou tu as ton RS232.

-- >o_/ DEMAINE Benoit-Pierre (aka DoubleHP)

formatting link
If computing were an exact science, IT engineers would'nt have work \_o<

"So all that's left, Is the proof that love's not only blind but deaf." (FAKE TALES OF SAN FRANCISCO, Arctic Monkeys)

Reply to
DEMAINE Benoit-Pierre

On 11 nov, 12:15, DEMAINE Benoit-Pierre

| On 11/11/11 12:01, Jean-Christophe wrote: | S'il y a du code alors il y a bien un uC ou un uP.

Il y a une carte avec un port I2C, une autre avec un port RS232, et la question est : comment INTERFACER ces deux ports avec le moins de ressources possibles.

Et tu viens parler de bitbang, puis de PC sous Linux ...

Reply to
Jean-Christophe

Si tu avais regardé ce qu'est le bit banging ... tu n'aurais pas pu objecter que c'est incompatible avec le RS232 pour la raison que tu invoque.

Puisque tu dis que tu n'es pas sur un PC, c'est encore plus simple que je pensais: tu n'as donc aucun problème de scheduling. Et tu as donc la maitrise totale des signaux qui sortent de ton port. Tu déconfigure le RS232, et tu ... fais du bit banging à l'ancienne.

Sur un PC, il est */EVIDEMENT/* "utopiste" d'utiliser les pattes Tx et Rx: le bit banging se fait avec les autres pins; les 6 autres pins que tout le monde oublie ...

Sur un "pas PC", tu repasse ton port en TTL, et l'I2C se fait en bit banging les yeux fermés.

La méthode simple utilise 3 pins, ou, deux pins si tu en as une en bi-directive. Je ne sais pas si c'est possible de le faire avec seulement

2 pins unidirectives (une dans chaque sens).

Quand au débit, ce n'est pas un problème. Quand tu aura écrit tes unités correctement, tu aura remarqué que tes débits sont identiques:

- ton I2C est à 100kbps

- un RS232 CLASSIQUE tourne à 9.6kBps, ou B ne se lit pas Byte, mais BAUD. En comptant le bit de latence, ça fait 96kbps. Parce que si ton RS232 tourne à 9.6kbps, soit 960 BAUD, à ta place, je m'inquiéterais, car les modems à 1.4 k BAUD sont plus vieux que moi ... alors un PC qui ne pourrait faire que 960 BAUDs ...

=> 100 / 96 ... moins de 4% entre les deux.

Et de toute façon, la question ne se pose pas, pour deux raisons:

- un vrai bon RS232 monte à 54kB (soit 500 kbps)

- le bit banging, si tu avais cherché, ne se fait pas avec les lignes Tx Rx, mais RTS CTS. Et ton débit peut dépasser les 500kbps de très loin: tu es limité par la vitesse du CPU, pas celle du hard.

Enfin, peut être que TON I2C tourne à 100kbps, mais le protocole monte à

4M ... alors, oui, si tu bossais à 4M là j'avoue qu'un port RS232 peut se coucher, mais puisque tu n'es qu'à 100k, ça passe sans problème.

Donc, le bit banging est envisageable. Des milliers de gens l'ont fait avant moi (je ne suis pas assez malin pour ré-inventer la roue: je ne peux qu'améliorer e travail des autres, je suis incapable de créer une bonne idée).

--
 >o_/ DEMAINE Benoit-Pierre (aka DoubleHP) http://benoit.demaine.info/
If computing were an exact science, IT engineers would'nt have work \_o<

"So all that's left, Is the proof that love's not only blind but deaf."
(FAKE TALES OF SAN FRANCISCO, Arctic Monkeys)
Reply to
DEMAINE Benoit-Pierre

Effectivement, j'avais retenu "une carte et un PC"; j'avais zapé que tu avais deux cartes.

Mais pour le reste: quelle différence entre une carte et un PC ? quand tu vois que la majorité des cartes sont des ARM, et que jusqu'il y a très peu, la majorité des cartes tournaient sur 486 ...

Quand à Linux et à mes problèmes de scheduling, bah, la majorité des cartes, qu'elles soient sous 486 ou sous ARM ... ont des OS multi-tache, et la majorité supportent Linux.

Donc, à part le cas très peu probable ou tu aurais dev un firmware toi même, de zero (pratique qui tend à disparaître avec le temps), tu devrais être concerné par mes avertissements.

--
 >o_/ DEMAINE Benoit-Pierre (aka DoubleHP) http://benoit.demaine.info/
If computing were an exact science, IT engineers would'nt have work \_o<

"So all that's left, Is the proof that love's not only blind but deaf."
(FAKE TALES OF SAN FRANCISCO, Arctic Monkeys)
Reply to
DEMAINE Benoit-Pierre

On 11 nov, 12:33, DEMAINE Benoit-Pierre

J'ai impl=E9ment=E9 en ASM du bitbang sur des uP qui n'avaient pas du tout de port s=E9rie, =E0 une =E9poque o=F9 tu salissais encore tes couches.

Les vitesses des deux ports sont impos=E9es, diff=E9rentes et fixes : il est hors de question d'agir en amont pour changer ces vitesses. De plus la gestion de SCL & SDA de l' I2C ne peut se faire =E0 partir des seuls *signaux* TX & RX du RS232 sans ajouter un chip d'interfa=E7age.

Non, absolument pas. Ce ne sont pas les donn=E9es du probl=E8me que j'ai pos=E9, mais tu t'obstines =E0 r=E9pondre =E0 c=F4t=E9. Les cartes sont comme elles sont et il est hors de question d'y changer quoi que ce soit. La question pos=E9e est d'interfacer des *signaux* I2C avec des *signaux* RS232, pas de changer les ports, ni les vitesses, ni le code.

Alors autant dropper le port RS232 pour utiliser directement un port I2C et j'aurais directement deux ports I2C donc plus aucun probl=E8me d'adaptation ! Tu es t=EAtu, =E0 vouloir changer les donn=E9es du probl=E8me pos=E9 pour y apporter une solution qui n'y r=E9pond pas.

D=E9ja dit : pas de PC ici.

D=E9ja dit : pas d'action en amont. Un port I2C, un port RS232, et l'interface au milieu. Je ne vois pas ce qu'il y a de si difficile =E0 comprendre.

Je n'ai pas parl=E9 de byte : ca c'est toi qui en parles. Quand aux unit=E9s, le Baud mesure le nombre de *symboles* par seconde et dans mon cas le symbole est un bit ; alors 9,6 kbps ca veut dire 9600 bits par seconde, c'est comme ca ... sauf pour toi, apparament.

9,6 ca veut dire 9,6 et non pas 96. Si pour toi une vitesse de 9,6 k correspond =E0 96 k alors 1 =3D 10 et il y a de quoi se poser des questions.

Oh que oui, je suis inquiet : mais pas pour moi :o)

D=E9ja dit : pas de PC ici.

100 / 9,6 ca fait 1041 % ... C'est plus une paille, c'est une poutre.

Une fois pour toutes : les vitesses sont fixes et inchangeables. Tu changes les donn=E9es du probl=E8me, donc ta r=E9ponse ne s'y rapporte pas.

Sur un uC on bitbang via des ports I/O *quelconques* il n'est donc m=EAme plus question de d=E9nominations telles que CTS/RTS. Encore une fois tu parles de PC alors qu'il n'en est pas question ici. C'est lourd.

Les vitesses sont fix=E9es et inchangeables, c'est une des donn=E9es du probl=E8me : si tu tiens absolument =E0 faire l'impasse l=E0-dessus, tu ne r=E9pond pas la question pos=E9e, alors inutile de t'obstiner.

Non, et encore moins pour la gestion des signaux SCL & SDA de l' I2C. Ca aussi je l'ai d=E9ja r=E9p=E9t=E9, mais tu sembles sourd et aveugle.

d e).

Pr=E9tendre apporter une solution =E0 un probl=E8me pos=E9 en changeant les donn=E9es dudit probl=E8me, ca s'appelle r=E9pondre =E0 c=F4t=E9. Et vu que tu fais la m=EAme chose sur d'autres threads de fse, quelque chose me dit que tu ne le fais m=EAme pas expr=E8s.

Si tu tiens vraiment =E0 raconter que tu as fait du bitbang via CTS/RTS sur un PC sous Linux, ouvre un nouveau thread mais n'essaie pas d=E9risoirement d'imposer cela =E0 tout prix dans un thread o=F9 c'est hors-sujet avec la question pos=E9e.

Reply to
Jean-Christophe

On 11 nov, 12:37, DEMAINE Benoit-Pierre

Non, je ne le vois pas. Arr=EAte de projeter tes croyances sur les autres.

Je n'ai rien pr=E9cis=E9 quand aux cartes en question, car c'est hors-sujet avec la question pos=E9e.

On se fout bien de savoir si ces cartes ont un uC minimaliste =E0 8 MHz ou des uP double coeur =E0 1 GHz ni de savoir s'il y a un OS temps r=E9=E9l ou pas.

La question ne concerne QUE les deux ports physiques et leur interfa=E7age, et ca c'est *externe* aux cartes. Qu'est-ce que tu n'as pas encore compris =E0 cette question ?

Tu es encore reparti =E0 c=F4t=E9 de la plaque. Mais d'o=F9 te vient ce hobby ?

C'est bien le cas, et je ne vois pas en quoi ce serait =AB tr=E9s peu probable =BB Que tu le saches ou pas, il n'y a pas que des gus qui exigent un uP surdimensionn=E9 avec OS sous Linux quand il s'agit de d=E9velopper une carte =E9lectronique.

Tu t'es born=E9 =E0 rester r=E9solument hors-sujet en d=E9formant syst=E9matiquement chacun des termes de la question pos=E9e, tu ne vas quand m=EAme pas - en plus - faire un caprice.

Reply to
Jean-Christophe

Le Fri, 11 Nov 2011 05:03:03 -0800, Jean-Christophe a écrit :

avec des boucles de temps logicielles ...

Reply to
moi-meme

Jean-Christophe a tapoté du bout de ses petites papattes :

Vas-y, mords-le ! ;)

--
LeLapin
Reply to
LeLapin

J'ai eu tord.

-- >o_/ DEMAINE Benoit-Pierre (aka DoubleHP)

formatting link
If computing were an exact science, IT engineers would'nt have work \_o<

"So all that's left, Is the proof that love's not only blind but deaf." (FAKE TALES OF SAN FRANCISCO, Arctic Monkeys)

Reply to
DEMAINE Benoit-Pierre

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.