collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: [Ajuda] STM32F3 SD Card  (Lida 13848 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: [Ajuda] STM32F3 SD Card
« Responder #15 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  é 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

Qual era o problema?

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [Ajuda] STM32F3 SD Card
« Responder #16 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  é 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

Qual era o problema?

Estou a usar a biblioteca "stm32303c_eval_i2c_ee.c" e não estou a conseguir ler nenhum valor.

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [Ajuda] STM32F3 SD Card
« Responder #17 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.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: [Ajuda] STM32F3 SD Card
« Responder #18 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?
Avr fanboy

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [Ajuda] STM32F3 SD Card
« Responder #19 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);
  //-------------------------------------------------------------------------------------

« Última modificação: 15 de Agosto de 2013, 20:29 por nunosilvarocha »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: [Ajuda] STM32F3 SD Card
« Responder #20 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.
Avr fanboy

Offline nunosilvarocha

  • Mini Robot
  • *
  • Mensagens: 337
Re: [Ajuda] STM32F3 SD Card
« Responder #21 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.