Dúvida SPI

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Dúvida SPI

Mensagempor elton de souza » 03 Jan 2007 16:14

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!!!
elton de souza
Nibble
 
Mensagens: 58
Registrado em: 16 Out 2006 08:48
Localização: Florianópolis - SC

Mensagempor microeletronica » 04 Jan 2007 08:30

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?
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor EDSONCAN » 04 Jan 2007 08:57

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
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Mensagempor elton de souza » 04 Jan 2007 09:59

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????
elton de souza
Nibble
 
Mensagens: 58
Registrado em: 16 Out 2006 08:48
Localização: Florianópolis - SC

Mensagempor microeletronica » 04 Jan 2007 10:30

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.
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor microeletronica » 04 Jan 2007 10:56

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.
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor microeletronica » 04 Jan 2007 11:07

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
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor elton de souza » 04 Jan 2007 13:28

Cara, estranho eu tb estou achando...

Mas não consigo encontrar a solução...
elton de souza
Nibble
 
Mensagens: 58
Registrado em: 16 Out 2006 08:48
Localização: Florianópolis - SC

Mensagempor elton de souza » 04 Jan 2007 16:26

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
elton de souza
Nibble
 
Mensagens: 58
Registrado em: 16 Out 2006 08:48
Localização: Florianópolis - SC


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

x