Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: kemahli24 - 29 Mayıs 2021, 18:17:18

Başlık: STM32 DISCOVERY ve LIS3DSH
Gönderen: kemahli24 - 29 Mayıs 2021, 18:17:18
Merhaba herkese,

Discovery board da bulunan lis3dsh accelometre sensörü ile veri almaya çalışıyorum. Cubemx ile spı ayarlarını yaptım ve hal kütüphaneleri ile değerleri alabildim. Şimdi ise değerleri register lar yardımıyla almaya çalışıyorum. Fakat şuana kadar bunu gerçekleştiremedim. Aşağıdaki write ve read fonksiyonlarını check edebilecek biri var mı? Sizce nerede yanlış yapıyorum?

void write(uint8_t adress, uint8_t data)
{
   uint8_t a = 0;
   HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET);

   SPI1->DR = adress;
   while (!(SPI1->SR & 1)) {

   }
   a=SPI1->DR;
   SPI1->DR = data;
   while (!(SPI1->SR & 1)) {

      }
      a=SPI1->DR;

   HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);
}


uint8_t read(uint8_t adress1)
{
   adress1 = adress1 | 0x80;
      uint8_t data1 = 0;
   HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET);

   SPI1->DR = adress1;
   while (!(SPI1->SR & 1)) {

      }
   data1 = SPI1->DR;
   SPI1->DR = 0;
   while (!(SPI1->SR & 1)) {

         }
   data1 = SPI1->DR;


   HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);
   return data1;
}

// burdan sonrası int main()
HAL_GPIO_WritePin(GPIOE,  GPIO_PIN_3, GPIO_PIN_SET);
     SPI1->CR1 |= (1<<6);
       write(0x25,0x80);
       write(0x23,1);

       write(0x20,0x67);
       write(0x25,0x64);
       write(0x23,0x48);
       write(0x24,0x48);

       i=read(0x20);


  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
     x = read(x1);



      y = read(y1);

          z = read(z1);

  }
Başlık: Ynt: STM32 DISCOVERY ve LIS3DSH
Gönderen: kemahli24 - 30 Mayıs 2021, 14:50:11
Problem çözüldü arkadaşlar.
Başlık: Ynt: STM32 DISCOVERY ve LIS3DSH
Gönderen: Proteus - 31 Mayıs 2021, 08:20:19
Bende daha önce haberleşmede sorun yaşamamıştım elimde ki disco boardların b revizyonuna yükledim aynı kodu çalıştı c revizyonunda çalışmamıştı.Şemayı incelediğimde farklı parçalar olduğunu görmüştüm.