Цифровой осциллограф с нуля.
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Нужно заменить 3 регистра.
Один нашел похожий DISP_SPI->DR заменил на DISP_SPI->TXDR.
SPI_SR_TXE пока заменил на SPI_SR_TXC, но там есть варианты.
А вот SPI_SR_BSY в H743 ничего похожего нет.
Один нашел похожий DISP_SPI->DR заменил на DISP_SPI->TXDR.
SPI_SR_TXE пока заменил на SPI_SR_TXC, но там есть варианты.
А вот SPI_SR_BSY в H743 ничего похожего нет.
- Реклама
Re: Цифровой осциллограф с нуля.
У H7 совершенно другой SPI, простая замена флагов и регистров на таковые с похожими названиями работать не будет. И не забываем про упаковку, записав в TXDR байт можно отправить сразу 4, если регистр 32-х разрядный, нужно приведение:
Отправка идет пакетами, проверять нужно флаги TXP/RXP. И в RM есть глава про правильное выключение SPI, естественно при этом нужно дожидаться окончания передачи данных, т.е. из нее можно почерпнуть чем заменяется BSY...
Код: Выделить всё
*(volatile uint8_t*)&SPIx->TXDR = val;-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Reflector, буду искать готовую библиотеку или пример. У меня еще есть точно такой дисплей без SPI. Там, наверное, проще в смысле совместимости?
Последний раз редактировалось linkov1959 Пн дек 27, 2021 14:44:35, всего редактировалось 1 раз.
Re: Цифровой осциллограф с нуля.
А куда будет цепляться этот дисплей без SPI? Если к FMC, то как сказать, с моей точки зрения проще, а кому-то наоборот 
FMC, в плане совместимости, практически аналог FSMC для F4, единственное нужно выбрать банк в некешируемом регионе.
FMC, в плане совместимости, практически аналог FSMC для F4, единственное нужно выбрать банк в некешируемом регионе.
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Reflector, Я имею ввиду взять пример на F103 и перенести на H743 библиотеку дисплея на шине.
- Реклама
Re: Цифровой осциллограф с нуля.
Либа для F103 может быть для FSMC или ногодрыга, FSMC везде можно сказать одинаковый, порты у F1 другие, но вряд ли это серьезная проблема.
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Reflector, Вспомнил! TFT на шине я запускал в микробейсике именно на H743, но там не смог запустить АЦП. А библиотеке, наверное, пофиг, где её запускают?
На микропаскале и SPI дисплей на H743 работает, но там всё встроено и извлечь нельзя, а регистры по своему названы.
Добавлено after 9 hours 1 minute 11 seconds:
Reflector, а что такое ногодрыга? Это плохо? Есть такая библиотека.
На микропаскале и SPI дисплей на H743 работает, но там всё встроено и извлечь нельзя, а регистры по своему названы.
Добавлено after 9 hours 1 minute 11 seconds:
Reflector, а что такое ногодрыга? Это плохо? Есть такая библиотека.
Последний раз редактировалось linkov1959 Вт дек 28, 2021 00:04:08, всего редактировалось 1 раз.
Re: Цифровой осциллограф с нуля.
Если нет аппаратного интерфейса, такого как SPI или FMC, то приходится дергать пинами софтово, что не то чтобы плохо, ведь иначе никак, но относительно медленно и обычно без DMA, хотя можно и с ним. У H7 есть FMC, лучше его и задействовать.
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Reflector, без примера не разберусь.
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Цифровой осциллограф с нуля.
https://disk.yandex.ru/d/zgN9puZg3NKG8m H743.rar
Добавлено after 49 minutes 25 seconds:
https://github.com/WeActTC/MiniSTM32H7xx
Добавлено after 49 minutes 25 seconds:
https://github.com/WeActTC/MiniSTM32H7xx
IVL ex UA6PJ
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Пока балуюсь с ногодрыгой по шине 8бит. Перенес рабочий проект с F103 на H743, по крайней мере, экран ожил, в цвета окрашивается, но вместо шрифтов квадратики с мусором. Графика работает. Что может быть?
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Цифровой осциллограф с нуля.
а на 103 нормально было?
Добавлено after 33 minutes 33 seconds:
с шрифтами разберись
Добавлено after 33 minutes 33 seconds:
с шрифтами разберись
IVL ex UA6PJ
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
240265, На 103 нормально. Загрузил проект с FMC, но не понял, как выводить на дисплей хотя бы точку или букву.
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Цифровой осциллограф с нуля.
Читай https://www.google.ru/search?q=fsmc+stm ... nt=gws-wiz
Добавлено after 7 minutes 6 seconds:
Здесь есть исходники https://www.radiokot.ru/artfiles/6511/
Добавлено after 7 minutes 6 seconds:
Здесь есть исходники https://www.radiokot.ru/artfiles/6511/
IVL ex UA6PJ
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Теперь не могу запустить DMA на Н743. Настраиваю, как на F103, а преобразование не запускается, в массиве нули и прерывания нет. Очередность инит исправлена, сначала DMA, потом ADC.
Добавлено after 2 hours 38 minutes 15 seconds:
Проверил еще, где лежит массив, это RAM_D1, а то если DTCM, то DMA туда не пишет.
Добавлено after 2 hours 38 minutes 15 seconds:
Проверил еще, где лежит массив, это RAM_D1, а то если DTCM, то DMA туда не пишет.
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Уже упростил код до примитива без 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.
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.
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Не могу запустить 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 загонять!
Для осцила не самый подходящий камень. 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 загонять!
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Нужно выставить
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
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
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Нужно добавлять калибровку.
/* USER CODE BEGIN 2 */
HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET_LINEARITY , ADC_SINGLE_ENDED);
HAL_Delay(100);
/* USER CODE BEGIN 2 */
HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET_LINEARITY , ADC_SINGLE_ENDED);
HAL_Delay(100);
Re: Цифровой осциллограф с нуля.
[uquote="linkov1959",url="/forum/viewtopic.php?p=4152956#p4152956"]Для осцила не самый подходящий камень. F103 и то лучше[/uquote]Давно уже говорил - для осцилла лучше LPC4370. Всякие STM близко не лежали!


