Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

STM32F4. Урок 17 - Управление LIS302DL через SPI

На плате Discovery установлен 3х-осевой датчик ускорения (LIS302DL). Примечание: "новые" платы оснащены микросхемами LIS3DSH, библиотека для работы с ними есть в блоге автора. Данный датчик позволяет измерять ускорение по осям X, Y и Z. Датчик имеет разрядность 8 бит и разрешение +/-2g или +/-8g. Данная библиотека позволяет легко использовать микросхему, достаточно циклически вызывать функцию "UB_LIS302_Read ()" и получить значение ускорения всех трех осей (в примере используется две оси в диапазоне значений от -2000 до 2000). Датчик может быть использован через опрос по прерыванию, но для разъяснения работы необходимо связаться с автором. Внимание: в руководстве пользователя к плате STM32F4 Discovery ошибка, как чипселект указан вывод PE2, на самом деле используется PE3. Для работы микросхемы необходима библиотека STM32_UB_SPI1.

Демонстрация работы:

lis302

Используемые выводы:

SCK как PA5
MOSI как PA7
MISO как PA6
ChipSelect как PE3

Требования:

   Подключаемые модули CooCox-IDE: GPIO.
   Поддерживаемые библиотеки: STM32_UB_SPI1.

Перечисления:

typedef enum {
  SCALE_2G =0,    // Разрешение +/- 2g
  SCALE_8G        // Разрешение +/- 8g
}LIS302_SCALE_t;

typedef enum {
  FILTER_OFF =0,  // ФВЧ отключен
  FILTER_2Hz,     // Фильтр включен (2 Гц)
  FILTER_1Hz,     // Фильтр включен (1 Гц)
  FILTER_500mHz,  // Фильтр включен (0,5 Гц)
  FILTER_250mHz   // Фильтр включен (0,25 Гц)
}LIS302_FILTER_t;

Функции:

ErrorStatus UB_LIS302_Init(LIS302_SCALE_t scale);  // инициализация LIS302DL
void UB_LIS302_Read(void);                         // зачитать значение ускорения
void UB_LIS302_SetFilter(LIS302_FILTER_t filter);  // настройка фильтра

Пример использования:

//--------------------------------------------------------------
// File     : main.c
// Datum    : 06.03.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der LIS302DL Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_lis302dl.h"
#include "stm32_ub_led.h"

int main(void)
{
  ErrorStatus check;

  SystemInit(); // Инициализация настроек кварца

  UB_Led_Init(); // Инициализация светодиодов

  // Инициализация LIS302 (с разрешением +/-2G)
  check=UB_LIS302_Init(SCALE_2G);

  if(check==ERROR) {
	  // LIS302 не найден
	  // включить красный и зеленый светодиоды
	  UB_Led_On(LED_RED);
	  UB_Led_On(LED_GREEN);
	  // СТОП
	  while(1);
  }

  while(1)
  {
	  // выбрать LIS302
	  UB_LIS302_Read();
	  // когда отладочная плата наклонена влево, включить красный светодиод
	  if(LIS302.y_achse>250) UB_Led_On(LED_RED); else UB_Led_Off(LED_RED);
	  // когда отладочная плата наклонена вправо, включить зеленый светодиод
	  if(LIS302.y_achse<-250) UB_Led_On(LED_GREEN); else UB_Led_Off(LED_GREEN);
	  // когда отладочная плата наклонена назад, включить синий светодиод
	  if(LIS302.x_achse>250) UB_Led_On(LED_BLUE); else UB_Led_Off(LED_BLUE);
	  // когда отладочная плата наклонена вперед, включить желтый светодиод
	  if(LIS302.x_achse<-250) UB_Led_On(LED_ORANGE); else UB_Led_Off(LED_ORANGE);

  }
}

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 1
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Мультиметр Mastech MS8268 Макетная плата для пайки (10 шт)
вверх