реклама на сайте
подробности

 
 
> Прошу помощи в инициализации SPI2 в STM32F100, в STM32F100
allsettingsdone
сообщение May 29 2013, 20:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284



Суть проблемы в том что у меня не получается завести как в режиме мастера, так и в режиме слейва SPI2 на отладочной плате 32F100DISCOVERY.
Самое интересное то, что SPI1 я смог настроить и передавал/принимал данные через него, но при такой же инициализации SPI2 (с учетом того что он тактируется уже от APB1) я получаю полное молчание.
Пробовал и с программной реализацией NSS и с аппаратной - результата нет вообще. Я больше чем уверен в том что я чего то не учел и не прописал.
Вот код (а также прикреплен весь проект в Keil):
CODE
void init_spi2(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //включаем тактирование порта B
RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); //включаем тактирование SPI2

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; //выбераем режим - альтернативная функция с Push-Pull
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;//PB.13 - SCK, PB.14 - MISO, PB.15 - MOSI
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //выбераем режим - с открытым стоком
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12; //PB.12 - NSS
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);



SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //режим - полный дуплекс
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //размер пакета - 8 бит
//===========================нулевой ражим работы SPI===========================
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //настройка нормального состояния на SCK (SCK опущена - когда ничего не передается/принимается)
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //передача/считывание происходит по переднему фронту на MOSI/MISO
//==============================================================================
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //управлять состоянием NSS програмно
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
//предделитель SCK = 32 (при 8 МГц, скорость SPI = 1/((8000000/32)/8)= 1 байт в 32 мкс)
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //первым отправляется старший бит
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //режим - master
SPI_Init(SPI2, &SPI_InitStructure); //функция инициализации SPI2 с заданной структурой

//SPI_I2S_ITConfig(SPI2,SPI_I2S_IT_RXNE,ENABLE); //включаем прерывание по приему байта

SPI_Cmd(SPI2, ENABLE); //включаем модуль SPI2

//SPI_NSSInternalSoftwareConfig(SPI1, SPI_NSSInternalSoft_Set);

//NVIC_EnableIRQ(SPI2_IRQn); //разрешаем прерывания от SPI2
}


Сообщение отредактировал IgorKossak - May 30 2013, 07:23
Прикрепленные файлы
Прикрепленный файл  test7_nRF24L01_.rar ( 1.91 мегабайт ) Кол-во скачиваний: 18
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 09:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016