Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Имеется STM32F407VGT6 и ILI 9341 (с тачем и без),на них реально собрать ваш осциллограф?
- Fusion
- Грызет канифоль
- Сообщения: 272
- Зарегистрирован: Пт ноя 13, 2009 10:39:32
- Откуда: Москва
- Контактная информация:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Мурзик нельзя. Но с такой связкой плюс пару AD9280 будет истинно народный осциллограф)
Два канала по 32 msps. А может и до 2х50 разгонится.
Но тема про stm32f3 с встроенным АЦП.
Два канала по 32 msps. А может и до 2х50 разгонится.
Но тема про stm32f3 с встроенным АЦП.
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Спасибо! буду заказывать стм32ф3
- Tvics
- Нашел транзистор. Понюхал.
- Сообщения: 175
- Зарегистрирован: Вс май 20, 2018 03:47:25
- Откуда: Иркутская обл.
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Добрый день ребята. Тут нашел у вас схему Мурзик 2 с 8bit дисплеем, я правильно понимаю прошивку под него не делали? А то тут принесли 3 дисплея от самсунга G5230, думал собрать по этой схеме.
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Не все прочитали . https://radiokot.ru/forum/viewtopic.php ... 9#p3038939 и т.д..
Так же у меня на диске все есть.
Так же у меня на диске все есть.
IVL ex UA6PJ
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Добрый день ребята. Тут нашел у вас схему Мурзик 2 с 8bit дисплеем, я правильно понимаю прошивку под него не делали? А то тут принесли 3 дисплея от самсунга G5230, думал собрать по этой схеме.
Присоединюсь к просьбе! Имеется 3 шт. вот таких дисплеев
Я уже подключал его к макетке с F103 прошитой под DSO138, он рабочий. Но к сожалению не имеет выведенного на шлейф, конфигурационного контакта, для переключения в SPI режим. Может работать только в 8-ми и 16-ти битном параллельном режиме. Очень прошу автора прошивок скомпилировать прошивку с 8-ми битным подключением дисплея. Ну и куда какой пин подключить. Я конечно не программист, но думаю это не так трудно. А как это повлияет на разводку мне не важно.
- Вложения
-
- fly_ds123_20160823_122914-320x240.jpg
- (12.75 КБ) 4308 скачиваний
Я не мог не заметить, как вы заметили, что я вас заметил..
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
В схеме на F303 под параллельный экран не хватает ног контроллера.
IVL ex UA6PJ
- Tvics
- Нашел транзистор. Понюхал.
- Сообщения: 175
- Зарегистрирован: Вс май 20, 2018 03:47:25
- Откуда: Иркутская обл.
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Добрый день. Просто наткнулся на схему от 366566432 схема_м2.pdf и подумал что это мурзик2 : https://radiokot.ru/forum/viewtopic.php ... &start=640 .
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Самый интересный проект из данной ветки для меня. Это проект на STM32F303 в корпусе LQFP32 шаг 0,8 мм.На али и ебэй их нет. Вопрос их сняли с производства? Есть варианты купить данные микросхемы?
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
А в интернете поискать не пробовали ?
IVL ex UA6PJ
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Спасибо! буду заказывать стм32ф3
опрокинули в чип и дип-когда заказывал было написано положить в корзину,положил,начал оплачивать-под заказ,заказал-написали-в течении 7-14 дней,сегодня написали нет в наличии и предлагают сделать новый заказ...
вышлите пожалуйста мне этот стм32ф303,я не знаю как и где заказывать,на али не хочу-пишут много брака...
извините за отклонение от темы=оффтоп...
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
На сайте Fusion выложена схема и прошивка осциллографа на STM32F303, схема отличается от схем в подписи у 240265.Возник вопрос по схеме с сайта Fusion. Куда идет KEY1 с контроллера? С какой ноги контроллера выходит KEY8? Еще вопрос какой вариант лучше собрать?( с сайта автора или из подписи 240265)
- Fusion
- Грызет канифоль
- Сообщения: 272
- Зарегистрирован: Пт ноя 13, 2009 10:39:32
- Откуда: Москва
- Контактная информация:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Поправил схему. KEY8 клавиши нет. Есть KEY0-KEY7.
KEY0 на плюс для включения. Остальные на минус
KEY0 на плюс для включения. Остальные на минус
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
KEY1 аж 2 штуки 
bumbec В обоих схемах присутствуют преобразователи, а "Они либо дорогие либо шумные " как Вы выражались.
bumbec В обоих схемах присутствуют преобразователи, а "Они либо дорогие либо шумные " как Вы выражались.
IVL ex UA6PJ
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Так какой вариант лучше? У меня преобразователя не будет))
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
положу здесь, может кто чего-нибудь для себя в этом насмотрит.
собственно опрос кнопок. попробовал малым кол-вом проверок и проч. телодвижений - если никакая кнопка не нажата, чтоб побыстрее вернуться в основной цикл. антидребезг - на апп-ном таймере, опросом бита его регистра.
вроде никакой скобки не потерял. И да, для случая если кнопки на одном порту.
пользуясь случаем
Огромное спасибо товарищу Fusion
за его наработки и милость к начинающим осцило-ваятелям.
#define KeySHIFT GPIO_Pin_3
#define Key4 GPIO_Pin_4
#define Key5 GPIO_Pin_5
#define Key6 GPIO_Pin_6
#define Key7 GPIO_Pin_7
#define Key8 GPIO_Pin_8
#define Key9 GPIO_Pin_9
//...
GPIO_InitStructure.GPIO_Pin = KeySHIFT|Key4|Key5|Key6|Key7|Key8|Key9 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//...
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseInitTypeDef base_timer;
TIM_TimeBaseStructInit(&base_timer);
base_timer.TIM_Prescaler = 49152-1; // значения почти "с потолка"
base_timer.TIM_Period = 512-1; // вам сюда свои ставить (зависит от тактирования АРВ1)
TIM_TimeBaseInit(TIM3, &base_timer);
TIM3->EGR |= TIM_EGR_UG;
//...
// в майне:
//...
if (!(TIM3->CR1&TIM_CR1_CEN)) { // keyantibag если еще тикает - опрос кнопок перепрыгиваем
// start scan key
uint8_t tmp1 = (((GPIOB->IDR)<<6)>>10); // кнопка KeySHIFT сюда не поподает, у нее своя песня
if((tmp1 != 0xFF)|(KHCount != 0)){ // nokey если не нажата и счетчик на 0 - обработку перепрыгиваем
if((KHCount != 0) & ((tmp1 == 0xFF) | (tmp1 != (KeyStatus |0x80)))) { // если кнопку отпустили
KHCount = 0; // в 0 счетчик для определения что кнопка удерживается
KeyStatus=0xFF;
}
else { // иначе - нажата - принимаем и запускаем счетчики
// TIM3->ARR = 512-1;
// TIM3->EGR |= TIM_EGR_UG;
TIM3->CR1 |= TIM_CR1_CEN|TIM_CR1_OPM; // стартуем таймер в однопроходном режиме
KeyStatus = tmp1;
if (KeyStatus != 0xFF) { // если что-то нажато (не все биты 1)
KHCount++; // увеличиваем счетчик
if(KHCount == 8 ) { // 8 чтений подряд - будем считать что удерживают
KeyStatus &= 0x7F; // 0 старшего разряда - признак "удержания"
--KHCount;
}
}
}
// end scan key
// теперь обработка
switch(KeyStatus) {
// тройка примеров обработки
case 0xDF: // Up 1101 1111
if (Mode ==0) { // mode в 0
if (!(GPIOB->IDR & KeySHIFT)) { // если с KeySHIFT - поднимать линию
if (Hline2<255) {
Hline2++;} // побитно
}
}
else { // mode не 0
// код
}
break;
case 0x5F: // Up та же кнопка, но удержавается 0101 1111
if (Mode ==0) { // mode в 0
if (!(GPIOB->IDR & KeySHIFT)) { // если KeySHIFT нажата
if (Hline2<255-50) {
Hline2=Hline2+10;} // будем поднимать линию с шагом 10 бит
}
}
break;
case 0x7B: // < кнопка удерживается 0111 1011
if (Freez ==1) { // freez в 1
if (Mode ==0) { // mode в 0
if (PointSync>128) {PointSync=PointSync-128;} // смещаю "курсор" с шагом 128 бит
// обновление основного экрана
// обновление вспомогательного (с курсором)
}
else { // freez в 1, mode не 0
// код
}
}
break;
} // end switch
} // nokey
} // keyantibag TIM3
// далее основной цикл
//...
собственно опрос кнопок. попробовал малым кол-вом проверок и проч. телодвижений - если никакая кнопка не нажата, чтоб побыстрее вернуться в основной цикл. антидребезг - на апп-ном таймере, опросом бита его регистра.
вроде никакой скобки не потерял. И да, для случая если кнопки на одном порту.
пользуясь случаем
Огромное спасибо товарищу Fusion
за его наработки и милость к начинающим осцило-ваятелям.
Спойлер
// в инитах:#define KeySHIFT GPIO_Pin_3
#define Key4 GPIO_Pin_4
#define Key5 GPIO_Pin_5
#define Key6 GPIO_Pin_6
#define Key7 GPIO_Pin_7
#define Key8 GPIO_Pin_8
#define Key9 GPIO_Pin_9
//...
GPIO_InitStructure.GPIO_Pin = KeySHIFT|Key4|Key5|Key6|Key7|Key8|Key9 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//...
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseInitTypeDef base_timer;
TIM_TimeBaseStructInit(&base_timer);
base_timer.TIM_Prescaler = 49152-1; // значения почти "с потолка"
base_timer.TIM_Period = 512-1; // вам сюда свои ставить (зависит от тактирования АРВ1)
TIM_TimeBaseInit(TIM3, &base_timer);
TIM3->EGR |= TIM_EGR_UG;
//...
// в майне:
//...
if (!(TIM3->CR1&TIM_CR1_CEN)) { // keyantibag если еще тикает - опрос кнопок перепрыгиваем
// start scan key
uint8_t tmp1 = (((GPIOB->IDR)<<6)>>10); // кнопка KeySHIFT сюда не поподает, у нее своя песня
if((tmp1 != 0xFF)|(KHCount != 0)){ // nokey если не нажата и счетчик на 0 - обработку перепрыгиваем
if((KHCount != 0) & ((tmp1 == 0xFF) | (tmp1 != (KeyStatus |0x80)))) { // если кнопку отпустили
KHCount = 0; // в 0 счетчик для определения что кнопка удерживается
KeyStatus=0xFF;
}
else { // иначе - нажата - принимаем и запускаем счетчики
// TIM3->ARR = 512-1;
// TIM3->EGR |= TIM_EGR_UG;
TIM3->CR1 |= TIM_CR1_CEN|TIM_CR1_OPM; // стартуем таймер в однопроходном режиме
KeyStatus = tmp1;
if (KeyStatus != 0xFF) { // если что-то нажато (не все биты 1)
KHCount++; // увеличиваем счетчик
if(KHCount == 8 ) { // 8 чтений подряд - будем считать что удерживают
KeyStatus &= 0x7F; // 0 старшего разряда - признак "удержания"
--KHCount;
}
}
}
// end scan key
// теперь обработка
switch(KeyStatus) {
// тройка примеров обработки
case 0xDF: // Up 1101 1111
if (Mode ==0) { // mode в 0
if (!(GPIOB->IDR & KeySHIFT)) { // если с KeySHIFT - поднимать линию
if (Hline2<255) {
Hline2++;} // побитно
}
}
else { // mode не 0
// код
}
break;
case 0x5F: // Up та же кнопка, но удержавается 0101 1111
if (Mode ==0) { // mode в 0
if (!(GPIOB->IDR & KeySHIFT)) { // если KeySHIFT нажата
if (Hline2<255-50) {
Hline2=Hline2+10;} // будем поднимать линию с шагом 10 бит
}
}
break;
case 0x7B: // < кнопка удерживается 0111 1011
if (Freez ==1) { // freez в 1
if (Mode ==0) { // mode в 0
if (PointSync>128) {PointSync=PointSync-128;} // смещаю "курсор" с шагом 128 бит
// обновление основного экрана
// обновление вспомогательного (с курсором)
}
else { // freez в 1, mode не 0
// код
}
}
break;
} // end switch
} // nokey
} // keyantibag TIM3
// далее основной цикл
//...
-
man_200
- Вымогатель припоя
- Сообщения: 507
- Зарегистрирован: Вс янв 20, 2013 12:45:25
- Откуда: Астана, Казахстан
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Присоединяюсь к благодарности Fusion, а заодно попрошу его скомпилировать или подсказать пины для реализации проекта Вольтметр 0-40V на МК типа STM32F303CBT6
- Fusion
- Грызет канифоль
- Сообщения: 272
- Зарегистрирован: Пт ноя 13, 2009 10:39:32
- Откуда: Москва
- Контактная информация:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Вот тут прошивка:
http://cvs.ru/aiq/oled128x32/oled128x32.html
И распиновка для К6. Для CBT6 номера ног поменять по названию портов.
Не проверял. Не на чем.
http://cvs.ru/aiq/oled128x32/oled128x32.html
И распиновка для К6. Для CBT6 номера ног поменять по названию портов.
Не проверял. Не на чем.
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
покаюсь
пару постов назад выкладывал опрос кнопок, если кто его брал "как есть" исправьте мой косяк
:
в комплексных проверках замените побитовые операции (|, &) на логические (||, &&), напр. должно быть:
if((tmp1 != 0xFF)||(KHCount != 0))
в бинарнике - опрос кнопок (если никакая не нажималась) не более 11-и инструкций (30 байт) - и мы снова в основном цикле.
пару постов назад выкладывал опрос кнопок, если кто его брал "как есть" исправьте мой косяк
:в комплексных проверках замените побитовые операции (|, &) на логические (||, &&), напр. должно быть:
if((tmp1 != 0xFF)||(KHCount != 0))
в бинарнике - опрос кнопок (если никакая не нажималась) не более 11-и инструкций (30 байт) - и мы снова в основном цикле.
- Fusion
- Грызет канифоль
- Сообщения: 272
- Зарегистрирован: Пт ноя 13, 2009 10:39:32
- Откуда: Москва
- Контактная информация:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Кнопки обычно вешаю на прерывания.
В основном цикле только проверить кейстатус на ноль.
От дребезга KeyAntiBug вычитается в прерывании таймера
Код: Выделить всё
void EXTI9_5_IRQHandler(void) {
if (EXTI_GetITStatus(EXTI_Line9) != RESET){ // PA9 KeyUp
if (!KeyAntiBug) {
if (!(GPIOA->IDR & KeyUp)) {
KeyStatus=1;
}
}
KeyAntiBug=KeyAntiBug_Time;
}
EXTI_ClearITPendingBit(EXTI_Line9);
}
В основном цикле только проверить кейстатус на ноль.
От дребезга KeyAntiBug вычитается в прерывании таймера