Цифровой осциллограф с нуля.

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Нужно заменить 3 регистра.
Один нашел похожий DISP_SPI->DR заменил на DISP_SPI->TXDR.
SPI_SR_TXE пока заменил на SPI_SR_TXC, но там есть варианты.
А вот SPI_SR_BSY в H743 ничего похожего нет.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

У H7 совершенно другой SPI, простая замена флагов и регистров на таковые с похожими названиями работать не будет. И не забываем про упаковку, записав в TXDR байт можно отправить сразу 4, если регистр 32-х разрядный, нужно приведение:

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

*(volatile uint8_t*)&SPIx->TXDR = val;
Отправка идет пакетами, проверять нужно флаги TXP/RXP. И в RM есть глава про правильное выключение SPI, естественно при этом нужно дожидаться окончания передачи данных, т.е. из нее можно почерпнуть чем заменяется BSY...
Реклама
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Reflector, буду искать готовую библиотеку или пример. У меня еще есть точно такой дисплей без SPI. Там, наверное, проще в смысле совместимости?
Последний раз редактировалось linkov1959 Пн дек 27, 2021 14:44:35, всего редактировалось 1 раз.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

А куда будет цепляться этот дисплей без SPI? Если к FMC, то как сказать, с моей точки зрения проще, а кому-то наоборот :)
FMC, в плане совместимости, практически аналог FSMC для F4, единственное нужно выбрать банк в некешируемом регионе.
Реклама
Эиком - электронные компоненты и радиодетали
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Reflector, Я имею ввиду взять пример на F103 и перенести на H743 библиотеку дисплея на шине.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

Либа для F103 может быть для FSMC или ногодрыга, FSMC везде можно сказать одинаковый, порты у F1 другие, но вряд ли это серьезная проблема.
Реклама
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Reflector, Вспомнил! TFT на шине я запускал в микробейсике именно на H743, но там не смог запустить АЦП. А библиотеке, наверное, пофиг, где её запускают?
На микропаскале и SPI дисплей на H743 работает, но там всё встроено и извлечь нельзя, а регистры по своему названы.

Добавлено after 9 hours 1 minute 11 seconds:
Reflector, а что такое ногодрыга? Это плохо? Есть такая библиотека.
tft.rar
(29.98 КБ) 117 скачиваний
Последний раз редактировалось linkov1959 Вт дек 28, 2021 00:04:08, всего редактировалось 1 раз.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

Если нет аппаратного интерфейса, такого как SPI или FMC, то приходится дергать пинами софтово, что не то чтобы плохо, ведь иначе никак, но относительно медленно и обычно без DMA, хотя можно и с ним. У H7 есть FMC, лучше его и задействовать.
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

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

Сообщение 240265 »

https://disk.yandex.ru/d/zgN9puZg3NKG8m H743.rar

Добавлено after 49 minutes 25 seconds:
https://github.com/WeActTC/MiniSTM32H7xx
IVL ex UA6PJ
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Пока балуюсь с ногодрыгой по шине 8бит. Перенес рабочий проект с F103 на H743, по крайней мере, экран ожил, в цвета окрашивается, но вместо шрифтов квадратики с мусором. Графика работает. Что может быть?
Электрический кот
Аватара пользователя
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Сообщение 240265 »

а на 103 нормально было?

Добавлено after 33 minutes 33 seconds:
с шрифтами разберись
IVL ex UA6PJ
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

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

Сообщение 240265 »

Читай https://www.google.ru/search?q=fsmc+stm ... nt=gws-wiz

Добавлено after 7 minutes 6 seconds:
Здесь есть исходники https://www.radiokot.ru/artfiles/6511/
IVL ex UA6PJ
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Теперь не могу запустить DMA на Н743. Настраиваю, как на F103, а преобразование не запускается, в массиве нули и прерывания нет. Очередность инит исправлена, сначала DMA, потом ADC.

Добавлено after 2 hours 38 minutes 15 seconds:
Проверил еще, где лежит массив, это RAM_D1, а то если DTCM, то DMA туда не пишет.
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Уже упростил код до примитива без DMA.
HAL_ADC_Start(&hadc1);
/* USER CODE END 2 */
while (1)
{
HAL_Delay(100);
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
flag= HAL_ADC_GetValue(&hadc1);
}
На 103 работает, на 743 не работает, точнее выдает только начальное значение ADC при загрузке!
На этот раз меня не проведешь, однозначно ошибка библиотеки HAL под 743.
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Не могу запустить DMA в CubeIDE на H743, а без DMA даже 1 мегасимпл не получается. В микропаскале выжимал без DMA с этого камня 3 мегасимпла.
Для осцила не самый подходящий камень. F103 и то лучше, 9мегасимплов выжал! F303 нужно помучить.
Вот смотрю код микропаскаля, а там ребята "ружья кирпичом не чистят:)".
DTCM-RAM 128KB 0x2000 0000 ~ 0x2001 FFFF 400(480)Mhz Domain 1
// AXI_SRAM_D1 512KB 0x2400 0000 ~ 0x2407 FFFF 200(240)Mhz Domain 1 / MDMA
// SRAM1_D2 128KB 0x3000 0000 ~ 0x3001 FFFF 200(240)Mhz Domain 2 / DMA1,2
Массив нужно в 0x3000 0000 загонять!
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Нужно выставить
ContinuousConvMode = ENABLE;
ADC_CONVERSIONDATA_DMA_CIRCULAR;
В функцию
HAL_ADC_Start_DMA(&hadc1, ptr, 64);
вместо массива подставить указатель на доступную для DMA память.
После запуска ADC DMA его нужно остановить (лучше в прерывании) и запускать снова.
while (1)
{
HAL_ADC_Start_DMA(&hadc1, ptr, 64);// uint32_t *ptr = 0x30003000;
HAL_Delay(100);
HAL_ADC_Stop_DMA(&hadc1);
В дебаге выбрать контроль памяти и можно смотреть результат. В настройках DMA выбрать WORD для удобства контроля. Если Half, то будет паковать по 16 бит и длину записи можно уменьшить в два раза.
https://drive.google.com/file/d/1I9ojWk ... sp=sharing
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Нужно добавлять калибровку.
/* USER CODE BEGIN 2 */
HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET_LINEARITY , ADC_SINGLE_ENDED);
HAL_Delay(100);
Мудрый кот
Сообщения: 1778
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="linkov1959",url="/forum/viewtopic.php?p=4152956#p4152956"]Для осцила не самый подходящий камень. F103 и то лучше[/uquote]Давно уже говорил - для осцилла лучше LPC4370. Всякие STM близко не лежали!
Ответить

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