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

 
 
> Как заставить SPI работать (stm32f4Discovery), Использую стандартную библиотеку: stmperiph
BlackOps
сообщение Jun 8 2012, 04:13
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



конфигурирую пины PB13 - SPI2_SCK, PB15 - SPI2_MOSI: в режиме SPI только посылаю.

вот код:
CODE
int main(void)
{
/*!< At this stage the microcontroller clock setting is already configured,
this is done through SystemInit() function which is called from startup
file (startup_stm32f4xx.s) before to branch to application main.
To reconfigure the default setting of SystemInit() function, refer to
system_stm32f4xx.c file
*/
uint8_t d0 = 0xd9; // 11011001, test data0




// declare SPI init data structure
SPI_InitTypeDef spi2;

// declare GPIO init data structure
GPIO_InitTypeDef gpiob;

// enable SPI2 clock
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);

// enable SPI2 pins
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

// connecting Alternate Functions to GPIOB pins
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);


// GPIOB configuration
gpiob.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
gpiob.GPIO_Mode = GPIO_Mode_AF;
gpiob.GPIO_OType = GPIO_OType_PP;
gpiob.GPIO_Speed = GPIO_Speed_50MHz;
gpiob.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &gpiob);

// initializing the SPI2
SPI_I2S_DeInit(SPI2);
spi2.SPI_Direction = SPI_Direction_1Line_Tx;
spi2.SPI_DataSize = SPI_DataSize_8b;
spi2.SPI_CPOL = SPI_CPOL_High;
spi2.SPI_CPHA = SPI_CPHA_1Edge;
spi2.SPI_FirstBit = SPI_FirstBit_LSB;
spi2.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
spi2.SPI_Mode = SPI_Mode_Master;

SPI_Init(SPI2, &spi2);


// enable the SPI2
SPI_Cmd(SPI2, ENABLE);

// sending the data
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, (uint8_t)d0);



while (1)
{}
}



проблема такая, когда проверяю ножку пина PB15, то вижу клок в 5.25МГц, что вобщемто и должно быть т.к. я прескалер поставил _8.
Но на ножке PB15, с момента запуска платы никаких данных не постыпает.
SPIМне кажется сам модуль SPI вроде как сконфигурирован, но какая то проблема с посыланием данных, я сам взял это с какого то примера. Сам код отвечающий за посылку данных выделен.
// sending the data
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, (uint8_t)d0);



я просто жду пока Тх буффер будет свободен, и заливаю туда байт.

Но в чем же причина, почему я не вижу активности на пине MOSI? (PB15)

Сообщение отредактировал IgorKossak - Jun 8 2012, 06:37
Причина редактирования: [codebox] для длинного кода!!!


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BlackOps
сообщение Jun 8 2012, 09:51
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



ну хоть дернулся пин PB15! какой то сдвиг, гдето еще чегото не хватает.. читаю даташит:
NSS output enabled (SSM = 0, SSOE = 1)
This configuration is used only when the device operates in master mode. The
NSS signal is driven low when the master starts the communication and is kept
low until the SPI is disabled.



теперь понятно почему надо было делать: SPI_SSOutputCmd(SPI2, ENABLE); это и включает SSOE = 1

и почему надо было: spi2.SPI_NSS = SPI_NSS_Hard; а это ставит бит SSM = 0

ну тогда же у меня все правильно, что там еще может быть?

напомню еще раз: клок идет вверх на Вдд и стоит там, а МОСИ идет на Вдд и опускается на ноль.


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- BlackOps   Как заставить SPI работать (stm32f4Discovery)   Jun 8 2012, 04:13
- - adnega   Может битик SYSCFGEN в RCC_APB2ENR взвести?   Jun 8 2012, 04:30
- - AHTOXA   Цитата(BlackOps @ Jun 8 2012, 10:13) Но в...   Jun 8 2012, 05:14
|- - adnega   Цитата(AHTOXA @ Jun 8 2012, 09:14) Вы заб...   Jun 8 2012, 05:20
|- - BlackOps   Цитата(AHTOXA @ Jun 8 2012, 10:14) Вы заб...   Jun 8 2012, 05:26
|- - AHTOXA   Пардон, я не разглядел, что речь идёт о F4. Там эт...   Jun 8 2012, 05:38
- - BlackOps   ну тогда в чем же еще может там быть проблема? я с...   Jun 8 2012, 05:44
|- - AHTOXA   Да вроде нормально всё. Попробуйте задать spi2.SPI...   Jun 8 2012, 06:06
- - BlackOps   попробовал. не помогло. мало того да и пин PB13 да...   Jun 8 2012, 06:08
- - BlackOps   что еще может быть? может данные как то по другому...   Jun 8 2012, 07:33
|- - AHTOXA   Данные вы отправляете правильно. Попробуйте ещё по...   Jun 8 2012, 07:40
- - Gunner   QUOTE (BlackOps @ Jun 8 2012, 07:13) конф...   Jun 8 2012, 08:41
- - BlackOps   т.е. сконфигурировать NSS и подать на него Vdd?   Jun 8 2012, 09:05
|- - Gunner   QUOTE (BlackOps @ Jun 8 2012, 12:05) т.е....   Jun 8 2012, 09:23
- - BlackOps   сделал. не сработало. вот что получаю: пин MOSI п...   Jun 8 2012, 09:36
- - adnega   У меня работает в режиме Мастер при такой конфигур...   Jun 8 2012, 09:43
- - BlackOps   Вобщем получилось наконец-то завести SPI2. Кстати...   Jun 11 2012, 00:29


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 01:58
Рейтинг@Mail.ru


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