Página 1 de 1

comunicação inter processadores

MensagemEnviado: 30 Jun 2011 09:17
por marcelo_asm
bom dia,

estou trabalhando num sistema que tem um DSP TI processando a parte de controle de tempo real, e estou acrescentando um cortex M3 da TI para prover um canal ethernet para fazer dump de dados e outro M3 para cuidar do acesso a 2 sd card.

A princípio pretendo usar uma rede CAN para trocar dados entre eles com velocidade alta e de de maneira determinística.

Alguém tem alguma outra sugestão para implementar essa comunicação seguindo esses requisitos ?

MensagemEnviado: 30 Jun 2011 17:26
por mastk
Que tal SPI? É simples é consegue transferir ums 10MB/s há 80Mhz, se nada lhe atrapalhar.

MensagemEnviado: 30 Jun 2011 20:35
por andre_luis
Se estiverem na mesma placa e tiver pinos disponíveis, sugiro implementar uma comunicação paralela, usando uma porta inteira para criar um barramento de dados/endereços ( com poucas instruçoes resolve o problema ).

+++

MensagemEnviado: 30 Jun 2011 21:03
por Red Neck Guy
Eu já fiz isso, e fiz assim: A primeira placa que precisei disso, era equipada com 9 MSPs, fiz a ligação através da UART. Depois fiz mais outros projetos com MCUs diversos, e também fiz utilizando a UART.
Hoje tenho uma placa com 1 LPC1768 e alguns AC32, nesse caso como eu utilizo a UART para comunicação externa, eu fiz a ligação via SPI. Ficou bom.
Eu criei um protocolo bem simples que roda ali, mas tu pode incrementar mais se precisar pq banda tem.

Re: comunicação inter processadores

MensagemEnviado: 30 Jun 2011 22:08
por Silvio51
marcelo_asm escreveu:bom dia,

estou trabalhando num sistema que tem um DSP TI processando a parte de controle de tempo real, e estou acrescentando um cortex M3 da TI para prover um canal ethernet para fazer dump de dados e outro M3 para cuidar do acesso a 2 sd card.

A princípio pretendo usar uma rede CAN para trocar dados entre eles com velocidade alta e de de maneira determinística.

Alguém tem alguma outra sugestão para implementar essa comunicação seguindo esses requisitos ?


Eu concordo com o Mastk e com o Aquino... SPI é uma ótima opção, porém não achas que tem CI demais não ? Com apenas um Cortex você mata a ethernet e os SD...

MensagemEnviado: 30 Jun 2011 22:45
por andre_luis
mastk escreveu:Que tal SPI? É simples é consegue transferir ums 10MB/s há 80Mhz, se nada lhe atrapalhar.


Os microcontroladores costumam ter módulos de SPI em hardware que implementam somente no modo Master, não Slave.

+++

MensagemEnviado: 01 Jul 2011 07:50
por Red Neck Guy
Olha, esses que citei tem ambos os modos.

Re: comunicação inter processadores

MensagemEnviado: 01 Jul 2011 08:32
por luisf.rossi
marcelo_asm escreveu:bom dia,

estou trabalhando num sistema que tem um DSP TI processando a parte de controle de tempo real, e estou acrescentando um cortex M3 da TI para prover um canal ethernet para fazer dump de dados e outro M3 para cuidar do acesso a 2 sd card.

A princípio pretendo usar uma rede CAN para trocar dados entre eles com velocidade alta e de de maneira determinística.

Alguém tem alguma outra sugestão para implementar essa comunicação seguindo esses requisitos ?


Como ja comentaram, dependendo da quantidade de dados que estamos falando, provavelmente um FPGA ja da para o gasto. Mas focando apenas no seu problema.. não use CAN para troca de grande quantidade de dados.. CAN é fantástico, mas apenas para controle, para troca de dados a banda dele é muito baixa, e a estrutura de troca de pacote muito pouco eficiente. Qual DSP você está usando e quais cortex. De modo geral, as duas soluções apresentadas são muito boas. Com interface paralela, provavelemnte você tera que fazer toda transmissão usando instruções, porém tera uma taxa de transmissão maior Com SPI provavelmente você pode usar DMA, e livrar o seu processador. Porem o que o mastk comentou está errado. Em um Cortex-M3 você não consegue colocar a SPI na mesma velocidade do processador. ARMs de modo geram são muito bons, mas para lidar com esse tipo de periférico eles apanham e feio de outras plataformas. Acredito que a máxima velocidade que você consegue na sua SPI é 1/4 da velocidade do processador. Dependendo de como foi implementado, no modo Slave até menos. Com a interface paralela, acredito que voce não consiga chavear seus pinos a mais que 12Mhz, mas usando uma porta de 8 bits vc consegue 96Mbps... Provavelmente na SPI você vai ter uns 18-20Mhz no máximo (mas olhe bem as erratas, a maioria delas aparecem em condições extremas). Se o seu DSP tiver interface à memorias externas e você quiser colocar a coisa bem no limite, acho que o mais eficiente seria você conecta-lo à um FPGA,
E usa-lo como um cntrolador de DMA.


Abs

MensagemEnviado: 01 Jul 2011 13:00
por marcelo_asm
o mais crítico é o CM3 que vai implementar a porta ethernet, esse canal vai fazer dump de dados (16 valores de 16 bits + 64 bits de status) para um computador. Inicialmente @ 2.5ms e se possível @ 1ms. Essa é uma ferramenta muito importante para o sistema, por isso estou considerando que fique um micro apenas para isso.

O DSP que estou usando é um 28335 da TI, faz todo o processamento de tempo real, não quero gastar recursos dele com outras coisas que não sejam as implementações dos algoritmos de controle.

Talvez SPI resolva, vou pensar em como organizar as coisas. O SPI do 28335 pode rodar a no máximo 24MHz, o que já me atende bem.

Obrigado a todos.