Página 1 de 1
Dúvida SPI

Enviado:
03 Jan 2007 16:14
por elton de souza
Creio que seja uma dúvida básica, mas vamos lá:
-desejo setar a comunicação SPI com o controlador CAN (mcp2515)para 1Mbps, no entanto, a SPI por software seria inviavel de se realizar, haja visto que tenho um OSC de 20MHz e caso gerasse uma interrupção para chegar a esta velocidade não consiguiria realizar mais nada em meu programa.Por software consigo no máximo uma velocidade de 250Kps.
-tentei partir para comunicação SPI por hardware, pois a mesma é mais rapida e efetiva, porém só consigo enviar 8 bits por transmissão, quando tento enviar os 3 bytes necessários, ocorre um espaçamento no CLOCK (CLK) da SPI de aproximadamente 4us entre um byte e outro, o que está impossibilitando a correta programação do controlador CAN.
-Minha dificuldade está em escrever os 24 bits simultaneamente para o
controlador CAN com o baude rate de 1Mbps.
Pessoal, como possar encontrar a solução para este problema???
Obrigado!!!

Enviado:
04 Jan 2007 08:30
por microeletronica
Ola Elton.
Quando utilizei um ADC externo de 16 bits da Analog, com um PIC18F252 comandando a SPI, aconteceu a mesma coisa. O PIC deixa esses espacos, e le a cada 8 bits... Estava utilizando o C18 pro projeto e nao vi uma forma de resolver este problema tambem.
Mas a leitura do AD funcionou. É necessario mesmo que seja sequencial pra programar os registradores do MCP2515?

Enviado:
04 Jan 2007 08:57
por EDSONCAN
Oi
Dei uma olhada rapida no datasheet e nao ha limite para velocidade minima (TABLE 12.6).
O que deve estar ocorrendo é que apos transmitir o primeiro byte o /CS vai para High e o seu chip exige que ele fique em low ate o final do tx que pode ser de 1,2,3 ... n bytes, portanto desabilite o controle automatico de /CS e controle no programa, mantendo-o em 0 ate o final da transmissao.
Edson

Enviado:
04 Jan 2007 09:59
por elton de souza
Edson, o CS fica habilitado ate o final da transmissão...
E deve ser enviado os 24 bits em sequência, ao menos é o que está no datasheet do controaldor CAN, algo que só consigo fazer com o SPI por software, o que já está funcionando há um bom tempo. Mas agora, que resolvi aumentar o tempo da SPI por necessidade do projeto, encontrei esta dificuldade.
microeletronica, como vc fez esta leitura de seu AD?SPI por software ou hardware????

Enviado:
04 Jan 2007 10:30
por microeletronica
Foi por hardware;;;
Enato cara - Precisava mandar um byte e receber 3...
Os clks eram espacados... Nao sei porque isso acontece.
Nao consegui resolver... Mas funcionou mesmo espacado.

Enviado:
04 Jan 2007 10:56
por microeletronica
No seu caso, o mcp2515 tah esperando 24 bits seguidos...
no meu caso, o pic tava esperando os 24 biits. Por isso funcionou no meu caso.
O pic apenas transfere 8 bits de cada vez. Existem outros micros que vc pode configurar o numero de bits que vc pode enviar por vez...
Mas estou achando estranho ter que programar a SPI em SW pra fazer esse MCP funcionar.

Enviado:
04 Jan 2007 11:07
por microeletronica
Mas esse cara fez funcionar, mandando de 8 em 8 bits, dando CS no comeco e no fim.
http://www.siwawi.arubi.uni-kl.de/avr_projects/can/index.html

Enviado:
04 Jan 2007 13:28
por elton de souza
Cara, estranho eu tb estou achando...
Mas não consigo encontrar a solução...

Enviado:
04 Jan 2007 16:26
por elton de souza
Realmente ele escreve de 8 em 8 bits...
Mas será que existe o tal espaçamento do CLK? Pelo que vi em seu código fonte, ele escreve o byte a ser enviado diretamente em um registrador,seria isso? Mas não consigui visualizar nada quanto ao CLK...
Também, pelo que me parece, ele não está alcançando uma velocidade muita alta no SPI...
[]'s