Página 1 de 1

READ / WRITE E2PRPOM

MensagemEnviado: 15 Mar 2019 15:37
por Guri
Olá a todos do forum.

Meus amigos, tenho uma dúvida que quero saber de vocês como devo proceder.

Eu estou utilizando um ARM 103 para LÊR e Escrever dados nela via i2c...

A minha questão é a seguinte, alguém aqui sabe me dizer se eu consigo jogar de forma simples os dados no DMA para fazer isso, e ainda mais, eu consigo fazer isso de forma "escalar" ou seja, consigo mandar 64 bytes de uma única vêz?

Re: READ / WRITE E2PRPOM

MensagemEnviado: 15 Mar 2019 17:25
por vtrx
O 103 tem um bug no I2C...

Re: READ / WRITE E2PRPOM

MensagemEnviado: 15 Mar 2019 18:16
por cfreund
STM32F103? Sim, é possível.

Re: READ / WRITE E2PRPOM

MensagemEnviado: 15 Mar 2019 23:32
por Guri
Avi....ai eu choro :cry:

Qual é esse bug...Rapaiz, num diga.

Fiquei curioso, compartilha conosco, essa descoberta.

Obrigado

Re: READ / WRITE E2PRPOM

MensagemEnviado: 16 Mar 2019 07:23
por vtrx
https://electronics.stackexchange.com/questions/272427/stm32-busy-flag-is-set-after-i2c-initialization

https://github.com/ARMmbed/mbed-os/issues/4214

Eu achei um código funcional que contorna o problema,uso no compilador KEIL.
O problema é na leitura sequencial de endereços,onde o STM trava depois da primeira leitura,feita por Hardware.

Re: READ / WRITE E2PRPOM

MensagemEnviado: 16 Mar 2019 08:17
por cfreund
vtrx escreveu:https://electronics.stackexchange.com/questions/272427/stm32-busy-flag-is-set-after-i2c-initialization

https://github.com/ARMmbed/mbed-os/issues/4214

Eu achei um código funcional que contorna o problema,uso no compilador KEIL.
O problema é na leitura sequencial de endereços,onde o STM trava depois da primeira leitura,feita por Hardware.


Li por cima e me parece ser problema com as bibliotecas.

Se o problema for no hardware e acontecer apenas na primeira leitura, ainda assim é possível utilizar DMA.

Re: READ / WRITE E2PRPOM

MensagemEnviado: 16 Mar 2019 08:17
por cfreund
Guri escreveu:Avi....ai eu choro :cry:

Qual é esse bug...Rapaiz, num diga.

Fiquei curioso, compartilha conosco, essa descoberta.

Obrigado



Normal qualquer microcontrolador acompanhar um Errata Sheet.

Para o caso: página 21: https://www.st.com/content/ccc/resource ... 190234.pdf

Re: READ / WRITE E2PRPOM

MensagemEnviado: 16 Mar 2019 09:57
por vtrx
cfreund escreveu:
vtrx escreveu:https://electronics.stackexchange.com/questions/272427/stm32-busy-flag-is-set-after-i2c-initialization

https://github.com/ARMmbed/mbed-os/issues/4214

Eu achei um código funcional que contorna o problema,uso no compilador KEIL.
O problema é na leitura sequencial de endereços,onde o STM trava depois da primeira leitura,feita por Hardware.


Li por cima e me parece ser problema com as bibliotecas.

Se o problema for no hardware e acontecer apenas na primeira leitura, ainda assim é possível utilizar DMA.


Quando pesquisei o problema na época,lí em algum lugar que era problema dos capacitores internos de filtragem do I2C.
Quando voce usa rotinas por Hardware,voce consegue ler um endereço,mas se ler outro em seguida,o ACK fica travado,não permitindo a sequencia de leitura.
Pode ser por isso que a linha 103 é tão barata.

Re: READ / WRITE E2PRPOM

MensagemEnviado: 16 Mar 2019 10:02
por cfreund
vtrx escreveu:Quando pesquisei o problema na época,lí em algum lugar que era problema dos capacitores internos de filtragem do I2C.
Quando voce usa rotinas por Hardware,voce consegue ler um endereço,mas se ler outro em seguida,o ACK fica travado,não permitindo a sequencia de leitura.
Pode ser por isso que a linha 103 é tão barata.


Isso não tem no Errata. Mas pelos links que vc postou, parece que resolveram fazendo correções nas bibliotecas. Ainda deve ser possível usar DMA.

No errata, estão estimulando utilizar DMA.

Re: READ / WRITE E2PRPOM

MensagemEnviado: 16 Mar 2019 15:27
por Guri
Apesar de eu ser NOVATO...

Acredito que possa haver sim, erro no software!

Depois dessa! Vou tentar implementar na unha uma rotina de escrita e leitura e ver o que acontece...O melhor caminho para entender algo é fazendo do inicio!

Mas concordo em partes com o cfreund. Eu particularmente já peguei muitos erros e até achava que poderia ser o mcu com bug...mas no decorrer dos meus experimentos, pude notar que 99,999% dos erros era de software! Já possíveis erros de hardware, tinham uma janela para acerto ou correção por software, tal como a dica dele em relação ao DMA. Apesar de não ter feito ainda nenhum teste que seja...

Agora convenhamos que se fosse holtek.... :cry:


Obrigado pelas dicas,

Re: READ / WRITE E2PRPOM

MensagemEnviado: 17 Mar 2019 07:51
por vtrx
Guri escreveu:Apesar de eu ser NOVATO...

Acredito que possa haver sim, erro no software!

Depois dessa! Vou tentar implementar na unha uma rotina de escrita e leitura e ver o que acontece...O melhor caminho para entender algo é fazendo do inicio!

Mas concordo em partes com o cfreund. Eu particularmente já peguei muitos erros e até achava que poderia ser o mcu com bug...mas no decorrer dos meus experimentos, pude notar que 99,999% dos erros era de software! Já possíveis erros de hardware, tinham uma janela para acerto ou correção por software, tal como a dica dele em relação ao DMA. Apesar de não ter feito ainda nenhum teste que seja...

Agora convenhamos que se fosse holtek.... :cry:


Obrigado pelas dicas,


Página 26 da errata;

https://www.st.com/content/ccc/resource/technical/document/errata_sheet/7d/02/75/64/17/fc/4d/fd/CD00190234.pdf/files/CD00190234.pdf/jcr:content/translations/en.CD00190234.pdf

Se voce usasse o KEIL,tenho a implementação disso.

Re: READ / WRITE E2PRPOM

MensagemEnviado: 17 Mar 2019 08:30
por cfreund
Guri escreveu:Apesar de eu ser NOVATO...

Acredito que possa haver sim, erro no software!

Depois dessa! Vou tentar implementar na unha uma rotina de escrita e leitura e ver o que acontece...O melhor caminho para entender algo é fazendo do inicio!


Deve ter sido corrigido nas libs do fabricante. E sim, para estudos ou dependendo da aplicação, vale a pena fazer sua própria lib. Não que utilizando STM32Cube não funcione, mas pode ser bantante otimizado. Eu, por "preciosismo", quando com um CI novo, perco dois dias de trabalho reinventando a roda, mas faço a minha lib do jeito que eu gosto de trabalhar, tento sempre procurar abstração, manter um padrão independente da plataforma.

Detalhe importante: Quando desenvolver a sua lib, SEMPRE LEIA O ERRATA.

Guri escreveu:Mas concordo em partes com o cfreund. Eu particularmente já peguei muitos erros e até achava que poderia ser o mcu com bug...mas no decorrer dos meus experimentos, pude notar que 99,999% dos erros era de software! Já possíveis erros de hardware, tinham uma janela para acerto ou correção por software, tal como a dica dele em relação ao DMA. Apesar de não ter feito ainda nenhum teste que seja...

Agora convenhamos que se fosse holtek.... :cry:


Obrigado pelas dicas,


Difícil um componente sobreviver no mercado com um defeito grave de hardware, que não possa ser contornado, ou que não seja corrigido nas próximas revisões.

Re: READ / WRITE E2PRPOM

MensagemEnviado: 17 Mar 2019 16:29
por Guri
Concordo com você Cfreund...

Agradeço a dica.

Re: READ / WRITE E2PRPOM

MensagemEnviado: 26 Abr 2019 22:42
por Guri
Olá a todos os amigos,

Como eu havia prometido, realizei os testes e não notei nenhum problema, talvez tenham corrigido o bug na i2c.

Eu usei a i2c1 e acabei usando a versão f103 com 128k.

Mas por medidas de segurança, acabei fazendo as coisas com uma implementação de buffer circular, também não usei o DMA, apenas o buffer que é chamado quando necessário, coisa bem simples...

Obrigado