LusoRobótica - Robótica em Português

Sistemas específicos => ARM => Tópico iniciado por: nunosilvarocha em 05 de Agosto de 2013, 16:50

Título: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 05 de Agosto de 2013, 16:50
Boa tarde pessoal,

Estou na iniciação em ARM e neste momento necessito de guardar dados num cartão SD mas não me estou a entender com isto, será que alguém me pode dar umas dicas?
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: metRo_ em 05 de Agosto de 2013, 17:04
Olá,
Tens aqui um capitulo sobre isso: http://www.cs.indiana.edu/~geobrown/book.pdf (http://www.cs.indiana.edu/~geobrown/book.pdf) posso-te dizer que foi aquele que achei mais complicado e os resultados não correram lá muito bem. Talvez na internter encontres bibliotecas já prontas a usar.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 05 de Agosto de 2013, 17:13
Olá,
Tens aqui um capitulo sobre isso: http://www.cs.indiana.edu/~geobrown/book.pdf (http://www.cs.indiana.edu/~geobrown/book.pdf) posso-te dizer que foi aquele que achei mais complicado e os resultados não correram lá muito bem. Talvez na internter encontres bibliotecas já prontas a usar.

Estava à espera da alguma biblioteca de preferência com exemplo para tentar por isto a trabalhar.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: senso em 05 de Agosto de 2013, 17:58
FatFS do ElmChan, nem acredito que não a tenhas encontrado numa pesquisa de 2 segundos.
https://sites.google.com/site/stm32discovery/stm32-resources-and-links/sd-cards-and-fat-filesystems-for-stm32-cortex-m3 (https://sites.google.com/site/stm32discovery/stm32-resources-and-links/sd-cards-and-fat-filesystems-for-stm32-cortex-m3)

http://www.stf12.org/developers/FatFS.html (http://www.stf12.org/developers/FatFS.html)
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 05 de Agosto de 2013, 19:18
FatFS do ElmChan, nem acredito que não a tenhas encontrado numa pesquisa de 2 segundos.
https://sites.google.com/site/stm32discovery/stm32-resources-and-links/sd-cards-and-fat-filesystems-for-stm32-cortex-m3 (https://sites.google.com/site/stm32discovery/stm32-resources-and-links/sd-cards-and-fat-filesystems-for-stm32-cortex-m3)

http://www.stf12.org/developers/FatFS.html (http://www.stf12.org/developers/FatFS.html)

Por acaso já tinha estado nesse link mas mesmo assim não me consigo desenrascar precisava de mais alguma ajuda.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: senso em 05 de Agosto de 2013, 19:42
E que ajuda é que queres, convinha especificares um bocdo mais o teu problema..
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 05 de Agosto de 2013, 19:48
E que ajuda é que queres, convinha especificares um bocdo mais o teu problema..

Ainda não consegui perceber que ficheiros tenho que usar e depois como os usar. Neste momento estou no nivel zero.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: senso em 05 de Agosto de 2013, 20:16
A biblioteca tem exemplos, acho que podias começar por ver os exemplos.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 05 de Agosto de 2013, 23:49
A biblioteca tem exemplos, acho que podias começar por ver os exemplos.

Ja adicionei mas parece que ainda não tenho tudo, pois faltam algumas funções.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: senso em 06 de Agosto de 2013, 00:20
Isso tem vários niveis, só leitura, leitura e escrita, e mais umas coisas que são configuraveis.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 06 de Agosto de 2013, 00:31
Isso tem vários niveis, só leitura, leitura e escrita, e mais umas coisas que são configuraveis.

Eu só preciso de escrever para um ficheiro.
Das pesquisas que tenho feito é tudo com Chibios e eu não estou a usar nada disso.
E a biblioteca que saquei parece não ter os ficheiros todos. Cada vez percebo menos disto
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: senso em 06 de Agosto de 2013, 00:41
Podias dar mais informação, não gosto de jogar ás 40 perguntas....
Site oficial:
http://elm-chan.org/fsw/ff/00index_e.html (http://elm-chan.org/fsw/ff/00index_e.html)

Implementado em STM32:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_stm32 (http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_stm32)
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: metRo_ em 06 de Agosto de 2013, 10:01
Lê o Livro que te disse, o capítulo sobre sdcard, sempre te da uma explicação de como funciona.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 06 de Agosto de 2013, 18:26
Podias dar mais informação, não gosto de jogar ás 40 perguntas....
Site oficial:
http://elm-chan.org/fsw/ff/00index_e.html (http://elm-chan.org/fsw/ff/00index_e.html)

Implementado em STM32:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_stm32 (http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_stm32)

Depois de tanta confusão em iniciar-me com o fatfs encontrei esta placa http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252996 (http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252996) que usa tambem um stm32F3 e o Demo do projeto mostra como trabalhar com o SD com fatfs.

Tentei implementar na minha programação mas até agora não consegui inicializar o cartão. O cartão é de 8Gb e penso que isso possa ser um problema mas de momento não tenho mais nenhum disponível.
Alguém faz ideia do que poderá ser para alem disso? 
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 10 de Agosto de 2013, 18:51
Já está tudo a trabalhar direito, já consigo guardar dados no cartão.
O projeto Demo da placa  http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252996 (http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252996)  é um bom exemplo para conseguir por o SD a tarbalhar

Agora falta configurar o I2C para ler dados do sensor https://www.sparkfun.com/products/10239 (https://www.sparkfun.com/products/10239)
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: metRo_ em 11 de Agosto de 2013, 04:37
Já está tudo a trabalhar direito, já consigo guardar dados no cartão.
O projeto Demo da placa  http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252996 (http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252996)  é um bom exemplo para conseguir por o SD a tarbalhar

Agora falta configurar o I2C para ler dados do sensor https://www.sparkfun.com/products/10239 (https://www.sparkfun.com/products/10239)

Qual era o problema?
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 13 de Agosto de 2013, 16:08
Já está tudo a trabalhar direito, já consigo guardar dados no cartão.
O projeto Demo da placa  http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252996 (http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252996)  é um bom exemplo para conseguir por o SD a tarbalhar

Agora falta configurar o I2C para ler dados do sensor https://www.sparkfun.com/products/10239 (https://www.sparkfun.com/products/10239)

Qual era o problema?

Estou a usar a biblioteca "stm32303c_eval_i2c_ee.c" e não estou a conseguir ler nenhum valor.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 15 de Agosto de 2013, 18:03
Qual a lógica a seguir para conseguir ler dados deste sensor?
Ainda não consegui ler valor nenhum.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: senso em 15 de Agosto de 2013, 18:37
Ler a datasheet para saberes que endereço usar, ver que registos configurar, tens os pull-ups no bus i2c?
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 15 de Agosto de 2013, 20:10
Ler a datasheet para saberes que endereço usar, ver que registos configurar, tens os pull-ups no bus i2c?
No datasheet diz que tenho que ler o endereço 10 para a sensibilidade e o 12 para offset.
E tenho os pull-ups no bus do i2c.
Esta é a minha configuração para o I2C

Código: [Seleccione]
  /* Configure the I2C clock source. The clock is derived from the SYSCLK */
  RCC_I2CCLKConfig(RCC_I2C2CLK_SYSCLK);
   
  /* sEE_I2C_SCL_GPIO_CLK and sEE_I2C_SDA_GPIO_CLK Periph clock enable */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOF, ENABLE);
 
  /* sEE_I2C Periph clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);
 
  /* Connect PXx to I2C_SCL*/
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource6,  GPIO_AF_4);
 
  /* Connect PXx to I2C_SDA*/
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_4);
 
  /* GPIO configuration */ 
  /* Configure sEE_I2C pins: SCL */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
 
  /* Configure sEE_I2C pins: SDA */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_Init(GPIOA, &GPIO_InitStructure);   
  //-----------------------------------------------------------------------------------
  /*!< I2C configuration */
  /* sEE_I2C configuration */
  I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
  I2C_InitStructure.I2C_DigitalFilter = 0x00;
  I2C_InitStructure.I2C_OwnAddress1 = 0x00;
  I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStructure.I2C_Timing = sEE_I2C_TIMING;
 
  /* Apply sEE_I2C configuration after enabling it */
  I2C_Init(I2C2, &I2C_InitStructure);
 
  /* sEE_I2C Peripheral Enable */
  I2C_Cmd(I2C2, ENABLE);
  //-------------------------------------------------------------------------------------

Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: senso em 15 de Agosto de 2013, 21:00
Tipicamente em i2c queres um limite na velocidade a que o sinal transita de nivel lógico(o chamado slew rate), pinos com largura de banda de 50Mhz devem oscilar um bocadinho, mas não deve ser esse o problema.
Tens o endereço i2c correcto, por vezes tens de fazer um shift á direita ou á esquerda em relação ao valor da datasheet para ficar em concordancia como o motor i2c do chip que estás a usar.
Título: Re: [Ajuda] STM32F3 SD Card
Enviado por: nunosilvarocha em 15 de Agosto de 2013, 22:37
Tipicamente em i2c queres um limite na velocidade a que o sinal transita de nivel lógico(o chamado slew rate), pinos com largura de banda de 50Mhz devem oscilar um bocadinho, mas não deve ser esse o problema.
Tens o endereço i2c correcto, por vezes tens de fazer um shift á direita ou á esquerda em relação ao valor da datasheet para ficar em concordancia como o motor i2c do chip que estás a usar.

Ja tentei alterar o endereço do I2C e nada.

Para ler o I2C estou a usar o seguinte codigo:

Código: [Seleccione]
  printf("\n\rTerminou inicialização");
 
  I2C_GenerateSTART(I2C2, ENABLE);
   
  sEE_WaitEepromStandbyState();
 
  printf("\n\rPonto 1");

  I2C_TransferHandling(I2C2, 0xA0 , 255, I2C_Reload_Mode, I2C_Generate_Start_Read);
 
  while(I2C_GetFlagStatus(I2C2, I2C_FLAG_RXNE) == RESET); //<----- bloqueia nesta função
  printf("\n\r FLAG [Receive data register not empty] set");
   
  uint16_t rxi2c=I2C_ReceiveData(I2C2);
  printf("\n\rRerebido -> %d", rxi2c);

Ainda estou muito verde em ARM, mas tenho que terminar este sensor.