Главная » Микроконтроллеры
Призовой фонд
на октябрь 2021 г.
1. Рюкзак Mean Well
Компэл
2. Инвертор авто Mean Well 150 Ватт
Компэл
3. Термос MeanWell
Компэл
4. 150 руб.
От пользователей

Похожие статьи:


STM32F4. Урок 15 - Низкоуровневый SPI

Данная библиотека позволяет использовать интерфейс SPI в режиме мастер-устройства.
Выводы SPI, которые будут использоваться, должны быть указаны в C-файле (в H-файле может быть выбраны тактовая частота и делитель).
Библиотека позволяет работать с SPI только на низком уровне, можно инициализировать интерфейс (в одном из четырех режимов работы SPI) и отправить/принять байт.
Используемые чип-селекты выбираются с помощью главной функции.
В данном примере присутствуют три одинаковые библиотеки - SPI1, SPI2 и SPI3.

В программе была использована библиотека SPI2, расположение выводов следующее:

SCK к PB13
MOSI к PB15
MISO к PB14

Требования:

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

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

typedef enum {
  SPI_MODE_0 = 0,  // CPOL=0, CPHA=0
  SPI_MODE_1,      // CPOL=0, CPHA=1
  SPI_MODE_2,      // CPOL=1, CPHA=0
  SPI_MODE_3       // CPOL=1, CPHA=1 
}SPI1_Mode_t;

Функции:

ErrorStatus UB_SPI1_Init(SPI1_Mode_t mode); // инициализация интерфейса SPI
uint8_t UB_SPI1_SendByte(uint8_t wert);     // функция отправки/получения байта

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


//--------------------------------------------------------------
// File     : main.c
// Datum    : 04.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 SPI-LoLevel-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_spi2.h"

//--------------------------------------------------------------
// отправка и получение байта через SPI
//--------------------------------------------------------------
uint8_t spi_send(uint8_t wert)
{
	uint8_t ret_wert;

	// установка чип-селекта в низкий уровень

	// прием и отправка байта
	ret_wert=UB_SPI2_SendByte(wert);

	// установка чип-селекта в высокий уровень

	return(ret_wert);
}

//--------------------------------------------------------------
int main(void)
{
  uint8_t wert;

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

  // инициализация SPI2 в режиме mode0
  UB_SPI2_Init(SPI_MODE_0);

  // отправка значения 0x45 по SPI
  // и прием байта
  wert=spi_send(0x45);

  while(1)
  {

  }
}

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

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

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

Теги:

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

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

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

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

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

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

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Печатная плата для усилителя "LM3886 + AD825" Модуль радиореле на 4 канала
вверх