Lendo UART no osciloscópio para determinar baud.

357 views
Skip to first unread message

Alejandro Mesias

unread,
May 28, 2014, 10:22:20 AM5/28/14
to Garoa HC, Laboratório Hacker Campinas
Pessoal, alguém tem experiência de ter lido a serial no osciloscópio. Estou com dificuldades que a forma da onda está me parecendo bem esquisita. Tenho um adaptador de UART para rede CAN e estou fazendo engenharia reversa na comunicação desse adaptador com o Software que usam para comunicar com um microcontrolador ST10 (vários modelos de ST10).

Ele faz carregamento na ram desse ST10 para executar um monitor para fazer acesso aos bancos de memória, quando ele carrega esse monitor não consigo determinar o BAUD. Apenas consigo determinar depois que ele carregou o monitor, que aí tem um comando bem claro no protocolo de como ele troca o baud usando o monitor.

Alguma dica de como determinar o baud usando osciloscópio, não conheço forma de onda no UART. Ah, estou com 2 interfaces UART no usb, um lendo a saida e outra a entrada no adaptador.

Valeu.
--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Developer
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================

DQ

unread,
May 28, 2014, 10:37:08 AM5/28/14
to hacker...@googlegroups.com, Laboratório Hacker Campinas
Supondo que seja comunicação assíncrona comum (e não algum outro tipo de comunicação serial), o formato para cada "byte" é o seguinte:
  • Linha em repouso (nível 1)
  • Start bit: nível 0
  • Bits de dados (5 a 8)
  • Bit de paridade (opcional)
  • Stop bit: pelo menos um bit em nível 1
Obviamente seria mais simples se você tivesse um "byte" isolado e de valor conhecido. Com a comunicação rolando solta, eu faria um trigger pela borda de descida (mudança do nível 1 para 0) e varia vária medidas dos pulsos (tempo para retornar ao nível 1). O menor denominador comum entre estes tempos será a duração de cada bit, o inverso é o baud rate.

Analisando com atenção as formas de onda capturadas e procurando distinguir os starts e stops, você deve conseguir determinar o número de bits e a presença ou não da paridade. Isto será mais fácil se existir tempos grandes de repouso entre os "bytes". O formato mais comum atualmente é o 8N1 (8 bits de dados, sem paridade apenas 1 bit de stop).

Obs: Estou escrevendo "bytes" pois os dados podem ter 5 a 8 bits.

DQ

Alejandro Mesias

unread,
May 28, 2014, 10:42:31 AM5/28/14
to Garoa HC, Laboratório Hacker Campinas

A onda tava dando algo esquisito, não aquele quadrado bonitinho. De tarde envio o que estou lendo.

Respondido via Android

--
.--. .- .-. .- .--. --- ... - .- .-. . ... -.-. .-. . ...- .- .--. .- .-. .- .... .- -.-. -.- . .-. ... .--. .- -.-. . ... .--. .- - --. --- --- --. .-.. . --. .-. --- ..- .--. ... -.. --- - -.-. --- --
Regras da Lista: http://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend
Para mais informações sobre o Garoa Hacker Clube acesse http://garoa.net.br
Maiores opções sobre o Google Groups, visite: http://groups.google.com/group/hackerspacesp
.--. .- .-. .- -- .- .. ... .. -. ..-. --- .-. -- .- . ... .- -.-. . ... ... . --- .-- .. -.- ..
Epoch 0 <=> Fundação: 1298244863 s ~ 2.408064*10^52 tP (tempos de Planck)

Raimundo Nonato Pimenta Filho

unread,
May 28, 2014, 11:36:51 AM5/28/14
to hacker...@googlegroups.com
Sem um valor conhecido é difícil determinar o baud rate, ficar
procurando a menor largura entre transições...

Para os seguintes valores com 8 bits:
11111111
01111111
00111111
00011111
00001111
00000111
00000011
00000001
00000000
A forma de onda é um pulso.

[]s

Alejandro Mesias

unread,
May 28, 2014, 2:12:33 PM5/28/14
to Garoa HC
exatamente, sendo 5 ou 12 ainda é uma onda quadrada que tinha que dar, to achando bem esquisito.

Isso que estou usando um Arduino para transmitir, ler o E/S da porta, snifar a comunicação, tirei o microcontrolador e coloquei no TX direto.


--
.--. .- .-. .- .--. --- ... - .- .-. . ... -.-. .-. . ...- .- .--. .- .-. .- .... .- -.-. -.- . .-. ... .--. .- -.-. . ... .--. .- - --. --- --- --. .-.. . --. .-. --- ..- .--. ... -.. --- - -.-. --- --
Regras da Lista: http://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend
Para mais informações sobre o Garoa Hacker Clube acesse  http://garoa.net.br
Maiores opções sobre o Google Groups, visite: http://groups.google.com/group/hackerspacesp
.--. .- .-. .- -- .- .. ... .. -. ..-. --- .-. -- .- . ... .- -.-. . ... ... . --- .-- .. -.- ..
Epoch 0 <=> Fundação: 1298244863 s ~ 2.408064*10^52 tP  (tempos de Planck)

Afonso Coutinho

unread,
May 28, 2014, 2:15:45 PM5/28/14
to hacker...@googlegroups.com
Sei que é meio noob o que vou falar, mas não deve ter algum embaralhador no meio? que tipo de circuito tu tá fazendo engenharia reversa?

Alejandro Mesias

unread,
May 28, 2014, 2:16:43 PM5/28/14
to Garoa HC
não, certeza, não tem. Que os circuitos e a função do chip é conhecida.

André Oliveira

unread,
May 28, 2014, 3:02:43 PM5/28/14
to hacker...@googlegroups.com
Você está lendo a rede CAN com um conversor CAN<>UART?
Sabe como funciona o protocolo CAN?
Sobre a saída não ser uma onda quadradinha, pode não ser mesmo, mas o principal é, esse conversor CAN<>UART não precisa configurar a velocidade da rede CAN não? Vale lembrar que tem CAN de 1Mbps por ai.

Se tiver um Saleae por ai, ele tem auto detecção de baud rate e abre o protocolo CAN.

Osciloscópio não é a melhor ferramenta pra isso.

[]s,

        André M de Oliveira

.oO ineptire est juris gentium Oo.
   http://int2float.blogspot.com

Alejandro Mesias

unread,
May 28, 2014, 3:11:56 PM5/28/14
to Garoa HC
Eu poderia ler a CAN, mas o circuito do CAN é algo bem bobo. Tipo ele junta a saída da UART de RX/TX em um fio só. Já me explicaram o circuito, tem um cara que é senior em engenharia de hardware trabalhando comigo, apenas to tentando "dar meus pulos" rs.

Meio que desisti, que basicamente se leio em outra velocidade, os bit's transferidos, a massa de dados inicial bate com a transmissão. Só enviar um pouco mais devagar cada byte e o microcontrolador vai entendendo. Mas valem as dicas, ainda vou ver isso a fundo.

E o plano é estudar rede CAN depois.




--
.--. .- .-. .- .--. --- ... - .- .-. . ... -.-. .-. . ...- .- .--. .- .-. .- .... .- -.-. -.- . .-. ... .--. .- -.-. . ... .--. .- - --. --- --- --. .-.. . --. .-. --- ..- .--. ... -.. --- - -.-. --- --
Regras da Lista: http://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend
Para mais informações sobre o Garoa Hacker Clube acesse http://garoa.net.br
Maiores opções sobre o Google Groups, visite: http://groups.google.com/group/hackerspacesp
.--. .- .-. .- -- .- .. ... .. -. ..-. --- .-. -- .- . ... .- -.-. . ... ... . --- .-- .. -.- ..
Epoch 0 <=> Fundação: 1298244863 s ~ 2.408064*10^52 tP (tempos de Planck)

Alejandro Mesias

unread,
May 28, 2014, 3:24:42 PM5/28/14
to Garoa HC
Mas sendo bem mais sem noção. Se estou lendo numa velocidade inferior ao que está sendo escrito, eu perderia bytes não ?

Isso de escrever mesmo que numa frequencia diferente não me parece que teria funcionado.

André Oliveira

unread,
May 28, 2014, 3:30:13 PM5/28/14
to hacker...@googlegroups.com
Então, a resposta simples é... não sei! O comportamento pode variar conforme as ferramentas que você tem e o setup delas.

Como eu disse, os conversores que eu conheço CAN<>UART precisam ser configurados para converterem corretamente o que está passando pelo barramento. Segundo, CAN não é ponto a ponto, é um barramento, cada pacote tem uma penca de informações. 

Finalmente, não sei o que está fazendo, mas eu recomendaria um sniffer CAN ou um analisador lógico capaz de abrir o protocolo, ainda mais se está fazendo engenharia reversa.

[]s,

        André M de Oliveira

.oO ineptire est juris gentium Oo.
   http://int2float.blogspot.com

Alejandro Mesias

unread,
May 28, 2014, 3:39:44 PM5/28/14
to Garoa HC

Sério Andre não se preocupa com a rede can que estou lendo antes do conversor. Depois te mando o esquema, é ridiculo, tipo 2 transistores

Respondido via Android

Raimundo Nonato Pimenta Filho

unread,
May 28, 2014, 4:30:42 PM5/28/14
to hacker...@googlegroups.com
Olhei o CAN - Controller Area Network
http://en.wikipedia.org/wiki/CAN_bus

Em
http://en.wikipedia.org/wiki/CAN_bus#Frames

Mostra o formato.
A função de cada Bit.
O Start e o Stop como já discutido aqui.
É diferencial como o RS485.

Não li, não tenho domínio sobre CAN, mas como acho que o conjunto funciona.

O barramento tá em repouso, em nível 1, todos os dispositivos
conectados a ele estão ouvindo-o.
Um dispositivo assume o barramento com o start e o restante dos bits do pacote.
O ACK deve funcionar como no I2C - O transmissor deixa a linha em 1 e
o receptor específico faz esta linha ir a zero...

Então é só gerar os pacote e utilizar transceptores.
http://www.ti.com/lsds/ti/interface/can-products.page

[]s

Alejandro Mesias

unread,
May 28, 2014, 8:11:38 PM5/28/14
to Laboratório Hacker Campinas, Garoa HC

Ah sim Marinello. Pessoal do trabalho falou de comprar um osciloscópio desse ( com analisador logico) em breve.

Respondido via Android

Em 28/05/2014 11:39, "Thiago Marinello" <thi...@marinello.eng.br> escreveu:

Manda uma cadeia de bits de comprimento conhecido e mede o período, logo vc calcula a taxa.

Osciloscópios bons já decodificam pra vc e te mostram até as palavras.

— Thiago Marinello
   

_______________________________________________
Lista do LHC <http://lhc.net.br>
H...@listas.tia.mat.br
http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br


_______________________________________________
Lista do LHC <http://lhc.net.br>
H...@listas.tia.mat.br
http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br

Reply all
Reply to author
Forward
0 new messages