Перейти к содержанию
    

посоветуйте STM32 cortex M3

на схеме нигде PA5 не задействован

плата такая

 

буду пробовать на SPI2 сделать тоже самое. Человека просил на такой же плате проверить на глюки- подтвердил, что тоже самое наблюдает. Т.е. это не только моей платы косяк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

потихоньку проясняется

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

 

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

 

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

А он же медленнее будет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо свое сначала отцепить от Дискавери.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Изменено пользователем Метценгерштейн

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на пине голом

Проца или платы?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

попробую

 

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

Изменено пользователем Метценгерштейн

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

потихоньку проясняется

c3ebfc859acat.jpg

это SCK

 

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

желательно посмотреть такую же осциллограмму с линией MISO на втором канале

если меряете на ножке дискавери (pin20 header28 по схеме) и он не идет к вашей схеме, и там такое, тогда,

1. осциллограф - полосы пропускания достаточно? ограничение полосы отключено? режим выборки какой?

2. битый вывод проца

3. неправильная иницилизация GPIO - скорость GPIO правильно выставили? отладчиком глянтье состояние gpio на момент передачи.

 

визуально осциллогамма выглядит, будто заряжается большая емкость или

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

инициализация портов и 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 Мгц- вообще все красиво по фронтам.

Изменено пользователем Метценгерштейн

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

инициализация портов и 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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

инициализация портов и 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_OSPEEDR5 = 3;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

пробую порты

 

да!

все четко! Фронты в норме.

GPIOA->OSPEEDR |=GPIO_OSPEEDER_OSPEEDR5 | GPIO_OSPEEDER_OSPEEDR11 | GPIO_OSPEEDER_OSPEEDR12;  //ноги 40 МГц

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

или вход не надо?

 

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

Изменено пользователем Метценгерштейн

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

или вход не надо?

 

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

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

 

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

 

и еще, если отдельную плату будете разводить, желательно последовательные резисторы 33-51Ом, чтоб звона не было и подтяжки 100кОм

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а не будет из-за последоват. резисторов RC цепь на частотах? Для чего они?

А подтяжки зачем? Програмных не достаточно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а не будет из-за последоват. резисторов RC цепь на частотах? Для чего они?

А подтяжки зачем? Програмных не достаточно?

как раз и надо RC-фильтр чтоб звон погасить, мешать не будет, такие даже на DDR 400МГц стоят. а вот избежать трудноуловимых глюков помогут.

подтяжки чтоб пока контроллер не загрузился (программные еще не включены), помехи чего попало куда попало не записали. как минимум на CS - обязательно, остальные по желанию.

а если SD-карта на SPI, то строго обязательно - это культовое место посещения граблей :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...