Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение 240265 »

mihlit2, Лучше использовать волее дешевый vet6 или в Вашем проекте использовать только ноги 100 пинового (если кто то повторять соберется).
AD9226 уж слишком дорогой , даже в Китае. Тогда уж AD9283 или AD9288 (можно зарядить 2 АЦП в интерливе, как у GFX).
AD8056 годится только во втором каскаде , для входа у него маленькое входное сопротивление (я пытался). Советую в чип-дипе заказать AD8066 или , лучше, opa2354, у них вроде бы " честные".
IVL ex UA6PJ
Реклама
mihlit2
Родился
Сообщения: 16
Зарегистрирован: Вт авг 11, 2020 08:07:16

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение mihlit2 »

[uquote="240265",url="/forum/viewtopic.php?p=3890979#p3890979"]mihlit2, Лучше использовать волее дешевый vet6 или в Вашем проекте использовать только ноги 100 пинового (если кто то повторять соберется).
AD9226 уж слишком дорогой , даже в Китае. Тогда уж AD9283 или AD9288 (можно зарядить 2 АЦП в интерливе, как у GFX).
AD8056 годится только во втором каскаде , для входа у него маленькое входное сопротивление (я пытался). Советую в чип-дипе заказать AD8066 или , лучше, opa2354, у них вроде бы " честные".[/uquote]
А у меня и VET6 есть. Было дело заказал на Али борду с VET6, продавец сроки пропустил, я спор затеял, мне деньги вернули, а через неделю посылка и пришла. Я снова в магазин написал заказал ZET6, только говорю не надо присылать, я вам хочу деньги вернуть. А они мне вторую плату прислали, вот их у меня теперь две.
На AD9226 я сына раскрутил, вроде подарок на днюху, так что тоже бесплатно.
Я обитаю в Бишкеке, Киргизия. Чип-Дип сюда не посылает заказы (я связывался с ними). A насчет AD8056 спасибо за инфу, только теперь непонятно где детали брать. На форуме настоятельно рекомендуют из Китая ОУ не брать, очень много подделок.
Реклама
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение a797945 »

Вы правильно догадались - архив я не качал.

а вывод думаю можно ускорить, если нужно.
получалось и за 3мс окно обновлять на железе dso138 (естественно, не считая время заполнения буфера),
2 но: минимум математики и "симметричный" цвет (старший младший байты =), разумеется при fsmc в этом нет нужды.
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение 240265 »

да "симметричный" цвет здорово спасает , на мурзике так и сделано.

Добавлено after 1 minute 56 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
загоняю данные ассемблером в порт и 2 строба записи на CMSIS.
IVL ex UA6PJ
Реклама
Эиком - электронные компоненты и радиодетали
mihlit2
Родился
Сообщения: 16
Зарегистрирован: Вт авг 11, 2020 08:07:16

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение mihlit2 »

[uquote="a797945",url="/forum/viewtopic.php?p=3890998#p3890998"]Вы правильно догадались - архив я не качал.

а вывод думаю можно ускорить, если нужно.
получалось и за 3мс окно обновлять на железе dso138 (естественно, не считая время заполнения буфера),
2 но: минимум математики и "симметричный" цвет (старший младший байты =), разумеется при fsmc в этом нет нужды.[/uquote]
Я проект выложил для ознакомления. Ради Бога не подумайте, чтобы типа повыделываться.
Сейчас посмотрел ЛА скорость обновления экрана - 2 раза по 19 ms, хотя должно быть 2 раза по 9. Размер буфера 64K 16bit. Буду разбираться

Добавлено after 13 minutes 37 seconds:
[uquote="240265",url="/forum/viewtopic.php?p=3891027#p3891027"]да "симметричный" цвет здорово спасает , на мурзике так и сделано.

Добавлено after 1 minute 56 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
загоняю данные ассемблером в порт и 2 строба записи на CMSIS.[/uquote]
Так может без DCMI тогда, а на ассемблере внешнее АЦП опрашивать? Я к тому, что у VET6 нет DCMI. Можно будет вернуться на VET6, я же с него начинал.
Реклама
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение a797945 »

на асму я не сподвигся.
в одном моменте принудил компилятор использовать только регистры, а не память. он сам об этом почему-то никак не хотел догадаться.

не могу выложить исходники, это мне надо сначала спросить разрешение у автора тех исходников от которых сам начинал плясать.
а в двух словах: минимум математики, минимум цветов, минимум if()
а если всю функцию на асму - была б еще быстрей.
Реклама
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение 240265 »

Про DCMI речи не было, на ассемблере внешнее АЦП опрашивать нужно только на самых скоростных развертках и интерлив так же , только где это необходимо . Остальное можно переходить на одно АЦП и соответственно DMA-таймер.
IVL ex UA6PJ
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение Reflector »

[uquote="240265",url="/forum/viewtopic.php?p=3891101#p3891101"]на ассемблере внешнее АЦП опрашивать нужно только на самых скоростных развертках[/uquote]
На ассемблере внешнее АЦП опрашивать имеет смысл только на F3, где такой способ действительно быстрее, а для F4 будут те же 4 такта, что и для DMA, только без возможности усыпить мк и таким образом уменьшить помехи.
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение 240265 »

Там не нужно много ассемблера.
вот как я вывожу
for (uint16_t j = 1; j < 384; j++) {
for (uint16_t i = 1; i < 240; i++) {

uint8_t color = 0;
if ((i==24|i==48|i==72|i==96|i==120|i==144|i==168|i==192|i==216) ) {color = 16;}// Grid
if ((j==24|j==48|j==72|j==96|j==120|j==144|j==168|j==192|j==216|j==240|j==264|j==288|j==312|j==336|j==360) ) {color = 16;}// Grid

if ((i==120)|(j==192)) {color = 4;} //i==96+32 Centr

if (OSD==1) {
if (i == SynU) {color = 54;}
if (i == U_0) {color = 231;}
}
.
.
.
Вывод осцилограммы color = 255;
.
.
__asm {
STRB color,[#0x48000415]
}
WR_STROBE; //импульс на WR ILI9486
WR_STROBE; // #define WR_STROBE {GPIOB->BRR = 0x20; GPIOB->BSRR = 0x20;}

Извини "Вывод осцилограммы" не мой код.
Это на F303 120MHz тактовая.

Добавлено after 32 minutes 50 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
Щас посмотрел , вывод всего этого аж 200 милисекунд.

Добавлено after 2 minutes 14 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
Убрал OSD и Centr стало 170.

Добавлено after 55 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
т.е. только сетка и сигнал.

Добавлено after 20 minutes 14 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
40 милисекунд только сигнал, даже без сетки. Так что IF отжирает капитально.
IVL ex UA6PJ
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение a797945 »

мы оба знаем чей код :)))
этот кусок до неузнаваемости изменился у меня, поэтому позволю себе его опубликовать.
кстати буду благодарен за конструктивную критику (не ахти из меня прогер)
железо, если точнее -dso138mini, легкий разгон -112MGz. осцил. у меня там бонусем - чисто показыватель, поэтому ку первого ОУ изменил, а математику упростил (ниже плинтуса).
Спойлер

Код: Выделить всё

void Draw320x192(uint16_t *buffer, uint16_t PointSync){
	LCD_CS0;	
	window(Orient_Book,  25, 215-25, 0, 317-0);
	SendCMD(ILI9341_GRAM);
	volatile uint8_t n, o;	//, a, b;
	register int ar __asm("r3");
	register int br __asm("r6");
	uint8_t   z;
	 n=(buffer[PointSync-1]/8-128);	// -64
	for (uint16_t j = 1; j < 319; j++) {	// time
		o=n;
		n=((buffer[j+PointSync]>>3)-128);		//-64
	
	if ( n >= o ) {ar=o; br=n;} else { ar=n;	 br=o; }
 
	if (!(j&31)) {
		for (uint8_t i = 0; i < 191; i++) {	
			((i<ar)||(i>br))?(z=GRID):(z=WHITE); 	
			GPIOB->BSRR = (0x00FF0000 | z);
			WR_STROBE;	WR_STROBE;					}
	}
	else {
		for (uint8_t i = 0; i < 191; i++) {		
			(!(i&31))?(z=GRID):(z=BLACK);
			if(!((i<ar)||(i>br))) {z =WHITE;}
			GPIOB->BSRR = (0x00FF0000 | z);
			WR_STROBE;	WR_STROBE;					}
	}
	}		//  j
		LCD_CS1;
		
}

mihlit2
Родился
Сообщения: 16
Зарегистрирован: Вт авг 11, 2020 08:07:16

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение mihlit2 »

Прошу пардону про DCMI у VET6. Есть DCMI, только я сам не понимаю, почему забросил VET6 и начал проект с ZET6. Сейчас начну искать старый проект.
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение 240265 »

mihlit2, "у VET6 нет DCMI" куб говорит что есть и даташит тоже.

Добавлено after 3 minutes 10 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
a797945, CS можно на ноль посадить и с ним не заморачиваться.
IVL ex UA6PJ
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение a797945 »

на ваши цифры посмотрел, в своей засомневался
мерил так, без пристрастия, просто сам механизм измерения времени выполнения посмотреть.
и не повторить пока - тот комп на половину щас разобран.

"CS можно на ноль посадить и с ним не заморачиваться"
вполне возможно, только думаю надо проверять на конкретном стекле.
в этом dso не ili9341, а какой-то аналог, ладно основные команды совпали
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение 240265 »

a797945, Спасибо из Вашего кода узнал про Тернарные операции .

Добавлено after 1 minute 36 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
Вроде в дсо138 ili9341, я в него часы запихивал.

Добавлено after 13 minutes 44 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
mihlit2, Вы профиль полностью заполните.

Добавлено after 43 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
a797945, к стати тоже.

Добавлено after 6 minutes 50 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
mihlit2, я брал opa2354 на алике партией по 10 шт в мелкх корпусах (с шагом 0,5мм). Оказались все нормальные. Правда сейчас этот магазин закрыт, говорят временно https://aliexpress.ru/item/32490476216. ... ent=815660

Добавлено after 57 minutes 3 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
Переделал сетку
if (!(i%24)) {color = 16;}// Grid
if (!(j%24)) {color = 16;}// Grid
Время отрисовки стало 85 мСек
IVL ex UA6PJ
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение a797945 »

"if (!(i%24)) ..."
красиво, а во что это компилируется?
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение Reflector »

[uquote="a797945",url="/forum/viewtopic.php?p=3891259#p3891259"]"if (!(i%24)) ..."
красиво, а во что это компилируется?[/uquote]
Даже при наличии аппаратного деления скомпилируется в достаточно тяжелую функцию, по крайней мере на gcc. Эффективнее умножать, например, выделим под дробную часть 20 бит, тогда 1/24 у нас будет равна 0x100000 / 24 = ~43691. Умножение на это число и сдвиг на 20 бит равносильно делению на 24.

Код: Выделить всё

lcd::setWindow(0, 0, 383, 239);

for (uint32_t j = 1; j < 240; j++)
{
    for (uint16_t i = 1; i < 384; i++)
    {
        uint16_t color = Color::White;
        if (!(i - (i * 43691 >> 20) * 24) || !(j - (j * 43691 >> 20) * 24)) color = Color::Magenta;
        lcd::writeColor(color);
    }
}
В таком виде у меня на F303/120MHz время выполнения 23.5 ms, а для двух отдельных проверок со взятием остатка от деления - 40.5 ms. Кстати цвет тут не симметричный, но либа дисплея написана так, что пытается совмещать сброс WR с записью данных если то и другое относится к одном порту, т.е. при отправке двух байт цвета будет всего 4 записи в BSRR, а у вас смотрю 4 записи потребуется только для пары стробов.
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение 240265 »

Завтра попробую.
IVL ex UA6PJ
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение a797945 »

кабы были б они на одном порту, может я и ломал голову как совместить :)
да в том dso wr,cs.rs на другом.
и максимальную скорость задачей не ставил, если б ставил - перебросил линии и рубился б в асме на максимальное использование регистров и минимальное переходов. как то так. :)
Аватара пользователя
240265
Электрический кот
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение 240265 »

if (!(i%24)) {color = 16;}// Grid
if (!(j%24)) {color = 16;}// Grid
85 mS

if (!(i - (i * 43691 >> 20) * 24) || !(j - (j * 43691 >> 20) * 24)) color = 16;
79ms

Добавлено after 3 minutes 31 second:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
Если убрать отрисовку ОСД
// if (OSD==1) {
// if (i == SynU) {color = 54;}
// if (i == U_0) {color = 231;}
// }

57mS

Добавлено after 2 minutes 6 seconds:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
Но с ней наглядней видно уровень "0" и уровень синхронизации.
IVL ex UA6PJ
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр

Сообщение a797945 »

если скорость отрисовки не делать самоцелью, то какая разница 200 или 80 мс.
я упрощал потому, что:
-украшательства/красивости мне не нужны,
-эта же функция у меня используется и на медленных развертках,
-и чтоб размер прошивки уложить в 32к (там монитор двухполярной линии данных (у нас кличут arinc)+осцил(как бонус)).

поэтому и : нейтрали (не выделены) всегда в середине сетки, маркер ур.синхронизации крохотный вне сетки.

а финт с регистрами - мне не понравилось, что компилятор создавал переменные в памяти, в чем никакой потребности не было, мозгов написать красиво у меня не нашлось, вот и вкарячил такой костыль.

еще один финт ушами у меня тут:
сделал две ветки, одна где проверка на 3 цвета, вторая проверяет только на 2 (белый/зеленый); типа - появилось 318 лишних проверок, но 191х9 проверок уже не будет.
Последний раз редактировалось a797945 Сб сен 12, 2020 13:08:08, всего редактировалось 1 раз.
Ответить

Вернуться в «ARM»