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

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


Реклама ⓘ

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

AVR-программатор USB ASP
AVR-программатор USB ASP
Конструктор - Гитарная педаль Remote Delay 2.5 Pickit 2 - USB-программатор PIC-микроконтроллеров
вверх