Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 новичку в ARM что к чему
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср мар 03, 2021 09:34:02

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7242 ]     ... , , , 362,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб дек 19, 2020 21:08:53 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 29
Зарегистрирован: Вт янв 05, 2016 10:14:25
Сообщений: 976
Откуда: Мелеуз
Рейтинг сообщения: 0
Вот что выяснил-каждые 0,415 сек на выводе ресет STM32F040 у меня появляется лог 0,то есть каждые 0,415 сек STM перезагружается и программа работает сначала,потому толком ничего не выходит,загрузил простой блинк-если поставить переключение порта (на нем стоит резистор 1 ком и светодиод) 0,1 сек то успевает моргать,если поставить переключение на 0,5 сек то светодиод никогда не зажигается(в программе изначально на порту лог ноль,задержка,потом лог единичка)
Потому у меня и грабли с I2C...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб дек 19, 2020 22:35:01 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Собака?


Вернуться наверх
 
Друзья! Скоро Новый Год! Китайский! Но мы работаем и в праздники тоже!

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс дек 20, 2020 17:21:54 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 29
Зарегистрирован: Вт янв 05, 2016 10:14:25
Сообщений: 976
Откуда: Мелеуз
Рейтинг сообщения: 0
VladislavS, Вот спасибо! поставил галочку на WDG_SW,мой SSD1306 заработал,вернее инициализация проходит нормально,надо писать оставшиеся функции


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт дек 24, 2020 13:46:45 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт дек 29, 2015 11:33:49
Сообщений: 53
Рейтинг сообщения: 0
Приветствую уважаемые, подскажите причину следующего поведения.
Имеется F0 у которого настраиваю SPI с программным CS (чаще CS управляю "железно"). Сама настройка ничего экзотического не содержит - Master, MOSI, полярности и пр. все по дефолту. И при выполнении следующего кода:
Код:
while(!(SPI2-CR & SPI_SR_TXE));
SPI2->DR      = data;
GPIOB->BSRR  |= GPIO_BSRR_BS_12;
GPIOB->BSRR  |= GPIO_BSRR_BR_12; 

Получаем такую картину:
Изображение

Т.е. получается, что CS дергается в момент передачи данных, а не после. Мне вот этот момент и не понятен неужели это из за разницы в частоте тактирования GPIO и SPI (тут у меня максимально маленький делитель /2)?
Для исправления ситуации я прикостылил ассемблерную вставку с nop'ами, результат стал, каким я его и ожидал изначально:
Изображение

Но мне само решение мне не особо нравится и попутно на сколько поможет исправить ситуацию если использовать DMA?


Вернуться наверх
 
Запускаем новый BLE 5.2-чип BlueNRG-LP от STMicroelectronics

Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт дек 24, 2020 13:54:07 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 1
Т.е. получается, что CS дергается в момент передачи данных, а не после. Мне вот этот момент и не понятен неужели это из за разницы в частоте тактирования GPIO и SPI (тут у меня максимально маленький делитель /2)?

Нет, это потому что ты CS дергаешь в момент передачи данных, а не после.


Вернуться наверх
 
Революция в силовой электронике. Начало

Что привлекает в SiC по сравнению с кремнием, и какие особенности делают компоненты SiC часто используемыми, несмотря на более высокую стоимость в сравнении с кремниевыми высоковольтными устройствами? – Объясняет специалист ведущего разработчика силовых приборов из карбида кремния, компании Infineon.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт дек 24, 2020 14:35:12 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт дек 29, 2015 11:33:49
Сообщений: 53
Рейтинг сообщения: 0
Reflector писал(а):
Нет, это потому что ты CS дергаешь в момент передачи данных, а не после.

хм, т.е. перед ногодрыгом надо еще и BUSY флаг у SPI отслеживать?
Ладно попробую, спасибо


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт дек 24, 2020 14:39:54 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
хм, т.е. перед ногодрыгом надо еще и BUSY флаг у SPI отслеживать?

На предыдущей странице написано как ждать окончания передачи, даже именно для F0.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт дек 24, 2020 17:23:20 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт дек 29, 2015 11:33:49
Сообщений: 53
Рейтинг сообщения: 0
На предыдущей странице написано как ждать окончания передачи, даже именно для F0.

Спасибо за наставление на путь истинный ))
В моём случае достаточно проверки BUSY флага т.к. данные посылаются одиночные. Ну соответственно это получается чуть быстрее:
- Только busy
Изображение

- Busy и буффер
Изображение

а nop'ы остаются лидерами, ну это так, лирика.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт дек 24, 2020 17:35:35 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
В моём случае достаточно проверки BUSY флага т.к. данные посылаются одиночные. Ну соответственно это получается чуть быстрее

Во-первых, правильно писать:
Код:
GPIOB->BSRR = GPIO_BSRR_BS_12;
GPIOB->BSRR = GPIO_BSRR_BR_12;

Во-вторых, частота судя по всему 8MHz, но даже для нее 3us - это многовато, оптимизация хоть включена?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт дек 24, 2020 19:15:47 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт дек 29, 2015 11:33:49
Сообщений: 53
Рейтинг сообщения: 0
оптимизация хоть включена?

В SeS cтояла L1 поменял на "L2 speed" ситуация кардинально изменилась - пауза стала одинаковой в обоих случаях 1.6 µs
В очередной раз компилятор оказался умнее меня )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс дек 27, 2020 17:50:54 
Опытный кот

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 862
Рейтинг сообщения: 0
Не получается завести DMA для изменения содержимого CCR1 таймера TIM1 на STM32F103. На F072 у меня завелось без проблем, здесь же чертовщина какая-то.
Инициализирую:
Код:
    GPIOA->CRH = CRH(15, CNF_PPOUTPUT|MODE_SLOW) | CRH(8, CNF_AFPP | MODE_FAST);
    RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; // enable TIM1 clocking
    TIM1->ARR = 8; // 9 ticks till UEV
    TIM1->PSC = 7;
    // PWM mode 1 (active->inactive)
    TIM1->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1;
    // main output
    TIM1->BDTR = TIM_BDTR_MOE;
    // main PWM output
    TIM1->CCER = TIM_CCER_CC1E;
    NVIC_EnableIRQ(TIM1_UP_IRQn);
    RCC->AHBENR |= RCC_AHBENR_DMA1EN; // DMA1 clocking
    // memsize 8bit, periphsize 16bit, memincr, circular, mem2periph, half & full transfer interrupt
    DMA1_Channel5->CCR = DMA_CCR_PSIZE_0 | DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE;
    DMA1_Channel5->CPAR = (uint32_t)&TIM1->CCR1;
    NVIC_EnableIRQ(DMA1_Channel2_IRQn);

Пытаюсь запустить:
Код:
uint8_t dmabuff[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
void dma1_channel5_isr(){
    if(DMA1->ISR & DMA_ISR_TCIF5){ // transfer complete - stop
        TIM1->CR1 = 0;
        DMA1_Channel5->CCR &= ~DMA_CCR_EN;
    }
    DMA1->IFCR = DMA_IFCR_CGIF5;
}
...
    TIM1->CR1 = 0; // stop
    TIM1->CCR1 = 1;
    TIM1->DIER = TIM_DIER_UDE; // enable DMA requests
    TIM1->CR1 = TIM_CR1_CEN | TIM_CR1_URS;
    DMA1->IFCR = DMA_IFCR_CGIF5;
    DMA1_Channel5->CNDTR = 9;
    DMA1_Channel5->CMAR = (uint32_t)dmabuff;
    DMA1_Channel5->CCR |= DMA_CCR_EN; // start DMA

И фигвам: вместо того, чтобы один раз выдать 9 импульсов с плавно нарастающей шириной, получаю бесконечную серию импульсов длительностью 111нс с шагом в микросекунду…
Вот чего этой собаке надо?

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс дек 27, 2020 18:10:13 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
NVIC_EnableIRQ(DMA1_Channel2_IRQn);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс дек 27, 2020 18:58:50 
Опытный кот

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 862
Рейтинг сообщения: 0
Ну я и осел… Спасибо!

Добавлено after 47 minutes:
А теперь - самая веселуха: как остановить таймер!
Код:
void tim1_up_isr(){
    TIM1->SR = 0;
    TIM1->CCR1 = 0;
    TIM1->CR1 = 0;
}

void dma1_channel5_isr(){
    if(DMA1->ISR & DMA_ISR_TCIF5){ // transfer complete - stop
        DMA1_Channel5->CCR &= ~DMA_CCR_EN;
        TIM1->DIER = TIM_DIER_UIE;
    }
    DMA1->IFCR = DMA_IFCR_CGIF5;
}

если так сделать, последний импульс обрезается, как будто бы в массиве была единица…
Проблема в том, что
Код:
TIM1->DIER = TIM_DIER_UIE

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

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс дек 27, 2020 19:18:33 
Потрогал лапой паяльник

Карма: 5
Рейтинг сообщений: 42
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 341
Откуда: Алчевск
Рейтинг сообщения: 0
Добавить в массив 10й элемент и потом не использовать.Не?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс дек 27, 2020 19:23:05 
Опытный кот

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 862
Рейтинг сообщения: 0
В общем, весть этот трэш решился так:
Код:
void dma1_channel5_isr(){
    if(DMA1->ISR & DMA_ISR_TCIF5){ // transfer complete - stop
        TIM1->SR = 0;
        TIM1->CR1 |= TIM_CR1_OPM;
        TIM1->CCR1 = 0;
    }
    DMA1->IFCR = DMA_IFCR_CGIF5;
}
   
uint8_t dmabuff[] = {3,6,3,3,6,6,3,6};
   
static void sendone(){
    TIM1->CR1 = 0; // stop
    DMA1_Channel5->CCR &= ~DMA_CCR_EN; // disable DMA to reconfigure
    TIM1->DIER = TIM_DIER_UDE; // enable DMA requests
    DMA1->IFCR = DMA_IFCR_CGIF5;
    DMA1_Channel5->CNDTR = 8;
    DMA1_Channel5->CMAR = (uint32_t)dmabuff;
    DMA1_Channel5->CCR |= DMA_CCR_EN; // start DMA
    TIM1->CR1 = TIM_CR1_CEN | TIM_CR1_URS;
}

В прерывании по завершению передачи можно и так написать: TIM1->CR1=0 — ничего не изменится. Устанавливать линию в 0 внутри прерывания таймера нельзя: слишком медленно, в итоге получается лишний короткий импульс.

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс дек 27, 2020 22:03:06 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
У TIM1 же есть RCR, пишешь в него количество периодов а сам таймер конфигурируешь в режиме OPM.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт янв 08, 2021 14:46:55 
Говорящий с текстолитом
Аватар пользователя

Карма: 15
Рейтинг сообщений: 425
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 1641
Откуда: Украина, Винница
Рейтинг сообщения: 0
Котаны здарова. Столкнулся с тем что мой китайский J-Link V8 не поддерживает Cortex M7. Перешитый свисток поддерживает. Но встроенный в кубиде софт джилинка не знает H743IG. Кароче пришлось откатиться на стлинк. Я думаю со временем кубиде обновят.

Вопрос вот в чем - у китайцев есть некий отладчик J-Link V11. Кто-то пользовался?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср янв 27, 2021 17:04:35 
Опытный кот
Аватар пользователя

Карма: 9
Рейтинг сообщений: 154
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 707
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Коллеги, напомните, плз.
Кейл, на одном компе v5.28, на втором - 5.29. Делаю билд/ребилд проекту, все ОК, собрался. Давлю LOAD, загружается, говорит
Код:
Erase Done.
Programming Done.
Verify OK.
Application running ...
Flash Load finished at 19:17:11
и тишина. МК висит. Нажмешь кнопик RESET, заводится и работает. Выключишь и включишь питание - тоже работает.

Галочка Reset and Run стоит это та, которая Flash -> Configure Flash toold... в открывшемся окне "Options for Target 'xxxx'" вкладка Debug, педаль Setting возле окошка Use ST-link Debugger и там на вкладке Flash Download в окошке Download Function Я ПОСТАВИЛ галочку Reset and Run, а эта скотина ее игнориоует. Не помню, вроде-бы, начиная с 5.25 или 5.26 надо было ставить еще галочку Enable на следующей закладке - Pack, но (не то с 5.27, не то с 5.28) эта скотина на нее тоже не реагирует.

Вопрос стандартный: что я делаю не так?

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт фев 19, 2021 07:19:33 
Открыл глаза

Зарегистрирован: Вс окт 23, 2016 17:37:09
Сообщений: 77
Рейтинг сообщения: 0
Здравствуйте! Прошу помощи по считыванию stm32f303rct6. С stm никогда не сталкивался, st-link нет. Знаю, что можно считать через бутлоадер по USART. Подскажите с подключением и подтяжкой boot0 (и я так и не понял по поводу boot1 в этом мк).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт фев 19, 2021 14:50:02 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 122
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3109
Рейтинг сообщения: 0
leha_m1986 писал(а):
Подскажите с подключением и подтяжкой boot0 (и я так и не понял по поводу boot1 в этом мк).
BOOT0 - 1.
BOOT1 - 0.

Если не поняли 1 это 3.3В. 0 это общий провод.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7242 ]     ... , , , 362,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y