Отговори на тема  [ 33 мнения ]  Отиди на страница 1, 2, 3  Следваща
SST25VF016B 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Фев 04, 2007 5:44 pm
Мнения: 90
Мнение SST25VF016B
Здравейте, опитвам се да пиша и съответно да чета тази SPI Falsh със STM32. Всичко останало работи, но има някакъв проблем с тази памет и не мога да разбера в инициализацията ли бъркам или къде.
Това ми е инициализацията на пиновете за SPI1
//инциализация пиновете за флаша ------------------------------------------------------------------------------------------
//SCK - PA5 ; MSIO - PA6 ; MOSI - PA7
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_5 | GPIO_Pin_7;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//CS - PA4
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_4); //SPI CS
//--------------------------------------------------------------------------------------------------------------------------
а това ми е инициализацията на SPI
void SPI1_Init(void)
{

DeSelect_Flash();

SPI_InitTypeDef SPI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 , ENABLE);

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_SSOutputCmd(SPI1,ENABLE);
SPI_Cmd(SPI1, ENABLE);


}

Опитвам се да запиша един байт и да го прочета и не става. Някой ако може да даде някаква идея - бирата му е в кърка вързана


Вто Май 22, 2012 7:11 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение Re: SST25VF016B
Здравей! А ти клоковете на портовете и AFIO пускаш ли? Конфигурира ли и самите алтернативни пинове(ремапване)?
Това ли ти е целия код за конфигуриране?


Вто Май 22, 2012 7:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение Re: SST25VF016B
Едно от нещата, които понякога се пропускат е че има период от време след power up, през който устройствата не са достъпни или не изпълняват коректно командите.
Сложи един таймаут в кода си веднага след reset на процесора и преди да си пуснал първия байт по SPI към SST25VF016B. Виж "Power-Up Specifications" в datasheet-а на SST25VF016B.

_________________
Най-опасният враг на истината и свободата е мнозинството.


Вто Май 22, 2012 9:50 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Фев 04, 2007 5:44 pm
Мнения: 90
Мнение Re: SST25VF016B
Клоковете са пуснати. Има още няколко периферни устройства които си работят нормално. Вярно, че не са на SPI1, но работят нормално...
А таймаута след вдигане а захранването го имам. А и дори да го няма - има тфт дисплей, на който се рисува лого, седи известно време и тогава вече започва работа всичко останало.
Някакви други идеи?


Вто Май 22, 2012 10:19 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение Re: SST25VF016B
@ zdrav Да, точно! Пък то понякога трябва и човек(визирам себе си) да погледне и в кода на питащия за да открие проблема, а последния да чете повечко документацията и примерите! :)

-For alternate function inputs, the port must be configured in Input mode
(floating, pullup or pull-down) and the input pin must be driven externally.

-For alternate function outputs, the port must be configured in Alternate Function Output
mode (Push-Pull or Open-Drain).

-For bidirectional Alternate Functions, the port bit must be configured in Alternate
Function Output mode (Push-Pull or Open-Drain). In this case the input driver is
configured in input floating mode

Нещо от рода на:
Код:
  /* Configure SPI1 pins: SCK, MISO and MOSI ---------------------------------*/
  /* Confugure SCK and MOSI pins as Alternate Function Push Pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  /* Confugure MISO pin as Input Floating  */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);


Вто Май 22, 2012 10:30 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Фев 04, 2007 5:44 pm
Мнения: 90
Мнение Re: SST25VF016B
И това да го направа вход съм го пробвал, нищо, че не намерих пример в който да е така конфигуриран, но и това съм го пробвал. И това не е ключа за палатката...


Вто Май 22, 2012 10:37 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение Re: SST25VF016B
Примери има колкото щеш по въпроса, погледни ги в стандартната STM32F1x библиотека.
Проблема е при теб, но къде точно вече си е хардуерно-софтуерна загатка на предклавиатурното устройство, прегледай внимателно и какво и как си навързал?! :)


Вто Май 22, 2012 10:41 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Фев 04, 2007 5:44 pm
Мнения: 90
Мнение Re: SST25VF016B
То е ясно, че проблема е някъде в задклавиатурното устройство. Всичко е навързано правилно. На всички пинове (вход, изход, клок, чип селект) на флашчето с осцилоскопа се виждат видимо нормални импулси. Вярно, че нямам логик анализатор да ги видя какво е....


Вто Май 22, 2012 11:06 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение Re: SST25VF016B
Ами след инициализацията следва логиката на писане и четене, там как е? Направи ли си функциите и последователността?


Вто Май 22, 2012 11:12 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Фев 04, 2007 5:44 pm
Мнения: 90
Мнение Re: SST25VF016B
Ами и тях няколко пъти ги писах. И от примери готови вземах и пак съм на същата начална позиция


Вто Май 22, 2012 11:36 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение Re: SST25VF016B
Не съм проверявал точно какво правиш в инициализацията, но ето още един вариант:
Преди време имах проблем с SPI на STM32F103. Всичко тръгна когато ремапнах, сигнали от други периферии, които споделяха пиновете с SPI. Ремапнах ги настрани от пиновете на SPI. Или може и да бъркам, може би просто използвах другия комплект пинове за SPI, които не бяха споделени с други периферии. Все още бях на ниво експериментална платка и имах такава възможност.
Има описани подобни фийчъри в ератата.

_________________
Най-опасният враг на истината и свободата е мнозинството.


Сря Май 23, 2012 6:20 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение Re: SST25VF016B
... да още една грешка:
Код:
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;

трябва да е:
Код:
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;


Иначе ако искаш тази настройка да остане трябва да промениш:
Код:
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;


на:
Код:
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;


Правих преди време библиотека точно за този чип - за PIC18 и с леки корекции за MSP430. Сега я преправих за STM32L.
Работи с горепосочените настройки.


Чет Май 24, 2012 12:55 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Фев 04, 2007 5:44 pm
Мнения: 90
Мнение Re: SST25VF016B
И това не оправи ситуацията....
Пробвах и четирите комбинации за всеки случай. Дигах и прескалера (свалях скоростта)... пак няма желание...
Някакви други идеи или някоя работеща библиотека за тая пущина някой да даде?


Нед Май 27, 2012 6:28 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Фев 04, 2007 5:44 pm
Мнения: 90
Мнение Re: SST25VF016B
Написах си целия SPI, без да използвам този на STM-ката за да избегна неправилната инициализация, но пак не стана. Смених и паметта. Крайният резултат е същия. Някой може ли да даде някакво решение, че останалия проект е готов и по незнайно какви си нейни причини :) паметичката просто не проявява желание да ми съдейства...
Някой ще удари ли едно рамо, че има едни бири които чакат новия си собственик


Чет Май 31, 2012 12:33 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: SST25VF016B
Ти осцилоскоп нямаш ли?

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Чет Май 31, 2012 1:11 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 33 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 31 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни