Данная библиотека позволяет использовать интерфейс 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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- ub_stm32f4_spi_v100_rus.rar (8 Кб)
- Demo_15_SPI_LoLevel_rus.rar (176 Кб)
Комментарии (0) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация