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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> посоветуйте STM32 cortex M3, частота шины максимальная, SPI чтобы стабильно держал обещанные 16 МГц
Метценгерштейн
сообщение Feb 18 2013, 08:35
Сообщение #31


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



на схеме нигде PA5 не задействован
плата такая

буду пробовать на SPI2 сделать тоже самое. Человека просил на такой же плате проверить на глюки- подтвердил, что тоже самое наблюдает. Т.е. это не только моей платы косяк.
Go to the top of the page
 
+Quote Post
muravei
сообщение Feb 18 2013, 08:58
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Метценгерштейн @ Feb 18 2013, 11:23) *
потихоньку проясняется

А у осц вход открыт?

Может обрыв в SCK?

Цитата
буду пробовать на SPI2

А он же медленнее будет?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 18 2013, 08:59
Сообщение #33


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Надо свое сначала отцепить от Дискавери.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 18 2013, 09:08
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



у осцилла стояло DC, т.е. открыт. Так ведь?

вывод SCK оторван от моей схемы. Мерил только на пине голом.

Сообщение отредактировал Метценгерштейн - Feb 18 2013, 09:08
Go to the top of the page
 
+Quote Post
muravei
сообщение Feb 18 2013, 09:37
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата
на пине голом

Проца или платы?
Выглядит , как бы клок заряжает емкость. Может обрыв между процом и пином платы.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 18 2013, 09:40
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



на пине платы меряю. Вот не знаю, смогу ли на ножку проца встать.
попробую

на ножке проца та же картина. И Амплитуда маленькая. пол вольта где-то первый клок. И почему так?

Сообщение отредактировал Метценгерштейн - Feb 18 2013, 09:49
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 18 2013, 10:40
Сообщение #37


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



QUOTE (Метценгерштейн @ Feb 18 2013, 14:23) *
потихоньку проясняется

это SCK

тут уже начали ошибки сыпаться. Выясняю, что еще сидит на данном пине. Пин на плате в данный момент ни к чему не подпаян. (штырек имеется ввиду)

желательно посмотреть такую же осциллограмму с линией MISO на втором канале
если меряете на ножке дискавери (pin20 header28 по схеме) и он не идет к вашей схеме, и там такое, тогда,
1. осциллограф - полосы пропускания достаточно? ограничение полосы отключено? режим выборки какой?
2. битый вывод проца
3. неправильная иницилизация GPIO - скорость GPIO правильно выставили? отладчиком глянтье состояние gpio на момент передачи.

визуально осциллогамма выглядит, будто заряжается большая емкость или
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 18 2013, 10:59
Сообщение #38


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



инициализация портов и SPI
Код
RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN; //Тактирование портов A, B
  //Линини SPI1 (Master)
  //PA12(MOSI), PA11(MISO), PA5(SCK), PA4(NSS) - AF, Push-Pull, AF5(SPI1)
  GPIOA->MODER |= GPIO_MODER_MODER12_1 | GPIO_MODER_MODER11_1 | GPIO_MODER_MODER5_1 | GPIO_MODER_MODER4_1; //Alternate function
  GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_12 | GPIO_OTYPER_OT_11 | GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_4); //Push-Pull
  GPIOA->AFR[1] |= (5<<16 | 5<<12); //PA12 = AF5, PA11 = AF5
  GPIOA->AFR[0] |= (5<<20 | 5<<16); //PA5 = AF5, PA4 = AF5


RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; //Тактирование модуля SPI1          
        SPI1->CR2 = 0;
        SPI1->CR1 = 0
        | 0 * SPI_CR1_BR_2 | 0 * SPI_CR1_BR_1 | 0 * SPI_CR1_BR_0 //Baud rate = Fpclk/2
        | 0 * SPI_CR1_CPOL //Полярность тактового сигнала
        | 0 * SPI_CR1_CPHA //Фаза тактового сигнала
        | 0 * SPI_CR1_DFF //8 бит данных
        | 0 * SPI_CR1_LSBFIRST //MSB передается первым
        | 1 * SPI_CR1_SSM //Программный режим NSS
        | 1 * SPI_CR1_SSI //Аналогично состоянию, когда на входе NSS высокий уровень
        | 1 * SPI_CR1_MSTR //Режим Master
        | 1 * SPI_CR1_SPE; //Включаем SPI1
        ;
        SPI1->CR2 = SPI_CR2_SSOE; //Вывод NSS - выход управления slave select


осцилл 60 МГц. Никаких фильтров не включено. Хотя, фильтр больше 20 Мег отсекает.
вывод MISO замкнут на MOSI и там картина нормальная- скачут биты и уровень и фронты- все четко.

если частоты клоков снизить до 2 Мгц, то еще работает, но фронты начинают валиться. А на 1 Мгц- вообще все красиво по фронтам.

Сообщение отредактировал Метценгерштейн - Feb 18 2013, 11:00
Go to the top of the page
 
+Quote Post
Petka
сообщение Feb 18 2013, 11:16
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Метценгерштейн @ Feb 18 2013, 14:59) *
инициализация портов и SPI
Код
RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN; //Тактирование портов A, B
  //Линини SPI1 (Master)
  //PA12(MOSI), PA11(MISO), PA5(SCK), PA4(NSS) - AF, Push-Pull, AF5(SPI1)
  GPIOA->MODER |= GPIO_MODER_MODER12_1 | GPIO_MODER_MODER11_1 | GPIO_MODER_MODER5_1 | GPIO_MODER_MODER4_1; //Alternate function
  GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_12 | GPIO_OTYPER_OT_11 | GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_4); //Push-Pull
  GPIOA->AFR[1] |= (5<<16 | 5<<12); //PA12 = AF5, PA11 = AF5
  GPIOA->AFR[0] |= (5<<20 | 5<<16); //PA5 = AF5, PA4 = AF5


......

Однозначно у вас не настроены порты на максимальную скорость.
Проверил у себя на плате. Осциллограммы совпадают в вашим скриншотом.
Попробуйте установить правильные значения в регистр GPIOA->OSPEEDR.

P.S. Что-то типа:
Код
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR11_0 | GPIO_OSPEEDER_OSPEEDR11_1 |GPIO_OSPEEDER_OSPEEDR12_0 | GPIO_OSPEEDER_OSPEEDR12_1 |GPIO_OSPEEDER_OSPEEDR5_0 | GPIO_OSPEEDER_OSPEEDR5_1 |GPIO_OSPEEDER_OSPEEDR4_0 | GPIO_OSPEEDER_OSPEEDR4_1;
Go to the top of the page
 
+Quote Post
dimka76
сообщение Feb 18 2013, 11:24
Сообщение #40


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



У вас щуп осциллографа 1:1 или с делителем 1:10 ?


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 18 2013, 11:47
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



QUOTE (Метценгерштейн @ Feb 18 2013, 16:59) *
инициализация портов и SPI
[code] RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN; //Тактирование портов A, B
//Линини SPI1 (Master)
//PA12(MOSI), PA11(MISO), PA5(SCK), PA4(NSS) - AF, Push-Pull, AF5(SPI1)
GPIOA->MODER |= GPIO_MODER_MODER12_1 | GPIO_MODER_MODER11_1 | GPIO_MODER_MODER5_1 | GPIO_MODER_MODER4_1; //Alternate function
GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_12 | GPIO_OTYPER_OT_11 | GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_4); //Push-Pull
GPIOA->AFR[1] |= (5<<16 | 5<<12); //PA12 = AF5, PA11 = AF5
GPIOA->AFR[0] |= (5<<20 | 5<<16); //PA5 = AF5, PA4 = AF5

я не знаю как регисты в иаре выглядят, надо установить
GPIOA_OSPEEDR5 = 3;
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 18 2013, 11:58
Сообщение #42


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



щуп осцилла 1:10

пробую порты

да!
все четко! Фронты в норме.
Код
GPIOA->OSPEEDR |=GPIO_OSPEEDER_OSPEEDR5 | GPIO_OSPEEDER_OSPEEDR11 | GPIO_OSPEEDER_OSPEEDR12;  //ноги 40 МГц

а все 3 ноги надо 40 МГц выставить? MOSI MISO SCK ?
или вход не надо?

Как-то упустил совсем из виду это. Спасибо всем)

Сообщение отредактировал Метценгерштейн - Feb 18 2013, 11:59
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 18 2013, 12:32
Сообщение #43


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



QUOTE (Метценгерштейн @ Feb 18 2013, 17:58) *
а все 3 ноги надо 40 МГц выставить? MOSI MISO SCK ?
или вход не надо?

Как-то упустил совсем из виду это. Спасибо всем)

вход не надо, а MOSI и CS тоже надо

так вроде уже писали про это, и в примерах приведенных было.

и еще, если отдельную плату будете разводить, желательно последовательные резисторы 33-51Ом, чтоб звона не было и подтяжки 100кОм
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 18 2013, 12:38
Сообщение #44


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



а не будет из-за последоват. резисторов RC цепь на частотах? Для чего они?
А подтяжки зачем? Програмных не достаточно?
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 18 2013, 12:54
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



QUOTE (Метценгерштейн @ Feb 18 2013, 18:38) *
а не будет из-за последоват. резисторов RC цепь на частотах? Для чего они?
А подтяжки зачем? Програмных не достаточно?

как раз и надо RC-фильтр чтоб звон погасить, мешать не будет, такие даже на DDR 400МГц стоят. а вот избежать трудноуловимых глюков помогут.
подтяжки чтоб пока контроллер не загрузился (программные еще не включены), помехи чего попало куда попало не записали. как минимум на CS - обязательно, остальные по желанию.
а если SD-карта на SPI, то строго обязательно - это культовое место посещения граблей sm.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 11:49
Рейтинг@Mail.ru


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