Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 18.09.2021, 20:34  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,671
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию STM32G431 DAC средствами HAL

Есть плата на STM32G431CBT6 ( https://aliexpress.ru/item/1005002377760498.html ).
И понадобилось мне синус с этой платы получить. В принципе ситуация стандартная: таблица синуса+таймер+DMA+DAC.
Делаю, запускаю - тишина на выходе. Легкий шум в младших разрядах цифровой осциллографической приставки.
Решил, что где-то ошибся. Решил упростить. Выкинул DMA. По таймеру просто писал DOR. На выходе - тишина.
Написал максимально примитивный код:
Инициализация (код пользователя):
PHP код:
  /* USER CODE BEGIN 2 */
  
HAL_DAC_Start(&hdac1,DAC_CHANNEL_1);
  
/* USER CODE END 2 */ 
Основной цикл:
PHP код:
      HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0x00000000);
      
HAL_Delay(2);
      
HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0x00000280);
      
HAL_Delay(2);
      
HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0x00000500);
      
HAL_Delay(2);
      
HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0x00000780);
      
HAL_Delay(2);
      
HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0x00000999);
      
HAL_Delay(2);
      
HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0x00000780);
      
HAL_Delay(2);
      
HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0x00000500);
      
HAL_Delay(2);
      
HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0x00000280);
      
HAL_Delay(2); 
Но на выходе ничего нет.
Не могу понять причину.
Что предпринималось:
1) Попытка перейти на 2 канал DAC1. Сигнала нет.
2) Выключал выходной буфер DAC (подозрение на неисправность выходного буфера). Сигнала нет.
3) Пробовал использовать DAC3. Так как он не может вывести на внешний пин - запустил наружу через внутренний OMAP. Сигнала нет.
4) Ради интереса данный код запустил на STM32G071 - все отлично работает, сигнал есть.
5) Вывод PA4 и PA5 исправны, пайка нормальная, маркировка на контактах для подключения верная.
6) Бегло прошелся под отладчиком. Выходная нога в аналоговом режиме, порт и DAC тактируется. В основном цикле DOR записывается нормально. Но на выходе реакции нет. Почему так?

Почему все прекрасно работает на STM32G071 и не работает на STM32G431? Там что-то добавили или изменили?

У кого есть опыт использования DAC на STM32G431? Почему он не работает? Есть какой-то нюанс в НАЛ, о котором я забыл?
Или чип с неисправными DAC?
Реклама:
DanilinSA вне форума  
Непрочитано 18.09.2021, 21:01  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: STM32G431 DAC средствами HAL

А если выкинуть КАЛ и сделать нормально?
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 18.09.2021, 21:31  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,671
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: STM32G431 DAC средствами HAL

А "нормально" - это как? LL или бито-писанием?

Сейчас пробую на LL переписать. Посмотрим, что будет на выходе.
DanilinSA вне форума  
Непрочитано 18.09.2021, 21:56  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: STM32G431 DAC средствами HAL

Сообщение от DanilinSA Посмотреть сообщение
А "нормально" - это как?
На гольном CMSIS, естественно. Больше никак.
Я вот, кстати, не так давно с новым для себя STM32F303 ковырялся. Взял сниппеты (от ST, кстати) под F0, ЦАП у меня сразу же заработал. Дальше - просто почитать внимательно документацию, да подправить код под свою задачу.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 18.09.2021, 22:49  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 676
Сказал спасибо: 360
Сказали Спасибо 753 раз(а) в 358 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: STM32G431 DAC средствами HAL

Сообщение от DanilinSA Посмотреть сообщение
Инициализация (код пользователя):
А сама-то инициализация не показана, только старт.
Что-то таится в загадочном hdac1, ИМХО.
j-Roger вне форума  
Непрочитано 18.09.2021, 23:11  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,671
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: STM32G431 DAC средствами HAL

Цитата:
А сама-то инициализация не показана, только старт.
Там все стандартно:
Цитата:
static void MX_DAC1_Init(void)
{

DAC_ChannelConfTypeDef sConfig = {0};

/** DAC Initialization
*/
hdac1.Instance = DAC1;
if (HAL_DAC_Init(&hdac1) != HAL_OK)
{
Error_Handler();
}
/** DAC channel OUT1 config
*/
sConfig.DAC_HighFrequency = DAC_HIGH_FREQUENCY_INTERFACE_MODE_AUTOMATIC;
sConfig.DAC_DMADoubleDataMode = DISABLE;
sConfig.DAC_SignedFormat = DISABLE;
sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;
sConfig.DAC_Trigger = DAC_TRIGGER_NONE;
sConfig.DAC_Trigger2 = DAC_TRIGGER_NONE;
sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
sConfig.DAC_ConnectOnChipPeripheral = DAC_CHIPCONNECT_EXTERNAL;
sConfig.DAC_UserTrimming = DAC_TRIMMING_FACTORY;
if (HAL_DAC_ConfigChannel(&hdac1, &sConfig, DAC_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
}
Тактирование порта и DAC включено. Прошелся по битам в регистрах - инициализация DAC вроде прошла штатно. Выход (судя по битам в регистрах) коммутирован верно. Биты сброса сброшены. Вроде все есть для нормальной работы - а выхода нет.

Может чип из отбраковки? С нерабочими ADC?
DanilinSA вне форума  
Непрочитано 19.09.2021, 00:34  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 676
Сказал спасибо: 360
Сказали Спасибо 753 раз(а) в 358 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: STM32G431 DAC средствами HAL

DanilinSA, извиняюсь, проверить-то оказалось не на чем..
Думал же в своё время поиграться с G431, но прошляпил - так и не заказал.
На макетке оказался распаян G071K8
j-Roger вне форума  
Непрочитано 19.09.2021, 10:45  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,671
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию

На G071RB все завелось сразу и без проблем.
По некоторым косвенным признакам у кристалла что-то не то с коммутацией выходов DAC. Сами DAC живые, тактирование есть, регистры в наличии и пишутся нормально. По даташиту нужно сконфигурировать выход DAC на внешние выходы и переключить выводы на аналоговый режим. Вчера прошелся внимательно по регистрам DAC. Все сконфигурировано вроде нормально.

Заказал платку с Али ( https://aliexpress.ru/item/1005001465029218.html ). Как придет - проверю и отпишусь. А старую плату - под задачи без DAC.

Пришла заказанная плата. При подаче питания моргает светодиодом. Типа "камень живой".
Пытаюсь прошить через STLink - не хочет. Начинаю разбираться - кристалл имеет ID = 0000

Вообще сейчас невозможно нормальные чипы по приемлемой цене купить?!

P.S.: Попробую прошить через USART и другие интерфейсы. Камень походу вообще не проходил стадию тестирования.
P.P.S.: А значение DevID вообще изменить можно?
Миниатюры:
Нажмите на изображение для увеличения
Название: G431.png
Просмотров: 0
Размер:	20.5 Кб
ID:	166764  

Последний раз редактировалось mike-y-k; 05.10.2021 в 10:24.
DanilinSA вне форума  
Непрочитано 04.10.2021, 21:13  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 676
Сказал спасибо: 360
Сказали Спасибо 753 раз(а) в 358 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: STM32G431 DAC средствами HAL

Сообщение от DanilinSA Посмотреть сообщение
А значение DevID вообще изменить можно?
Если речь о MCU device ID code, то пишут, что:
"DBGMCU_IDCODE
Address: 0xE004 2000
Only 32-bits access supported. Read-only"
(С) RM0440, раздел 47.6.1


Если же речь о Unique device ID register (96 bits), то пишут, якобы:
"The 96-bit unique device identifier provides a reference number which is unique for any device and in any context. These bits cannot be altered by the user.
Base address: 0x1FFF 7590
Address offset: 0x00
Read only = 0xXXXX XXXX where X is factory-programmed"
(С) Там же, раздел 48.1

Вывод: изменить нельзя.

P.S.
Кинул беглый взгляд в ближайший инет-магазин в зоне трёхдневной доставки по Украине. Если по одной штучке, то:
STM32G431C6T6 - $11, корпус LQFP32
STM32G431C8T6 - $11, корпус LQFP48
STM32G431CBT6 - $38, корпус LQFP48; а в корпусе UFQFPN-48 - пара штук по $4 (!).
Т. е. кое-где мизерные остатки еще есть

Р.P.S.
На харьковском Космодроме ̶A̶T̶T̶i̶n̶y̶2̶3̶1̶3̶A̶ STM32F030F4 подешевели с $8.5 до $3.6
Да - подразумеваю не производство, а разовые поделки.

Последний раз редактировалось j-Roger; 04.10.2021 в 21:51.
j-Roger вне форума  
Непрочитано 05.10.2021, 09:45  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,671
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию

По видимому прописывается спец.утилитой по результатам тестирования кристалла. А этот кристалл тестирования предположительно не проходил.

Еще прикол с этим чипом:
Если чип не хочет через SWD шиться - я не гордый. Я и через USART могу прошить. Распаял гребеночку - зацепился.

Загрузчик USART выдал ChipID = 0x479 ! Стабильно, с 100% воспроизводимостью. Забавно, но в линейке ST нет чипов с таким ChipID.

Либо чип сильно больной на голову, либо в мусор ушло что-то экспериментальное.
Миниатюры:
Нажмите на изображение для увеличения
Название: G431_1.png
Просмотров: 0
Размер:	54.2 Кб
ID:	166965  

Последний раз редактировалось mike-y-k; 13.10.2021 в 11:28.
DanilinSA вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC12F1840 Использование хардварного UART совместно с DAC kib12 Proteus 14 14.12.2019 11:48
PIC12F1840 Использование UART совместно с DAC kib12 PIC 2 11.12.2019 03:00
FiiO D3 Внешний DAC для компъютера avt798579 Аудиотехника 70 20.02.2017 12:08
Как защитить выход DAC DanilinSA ARM 6 15.03.2016 20:58
STM32, DAC + RESET Nik_UFO Микроконтроллеры, АЦП, память и т.д 4 18.05.2012 19:35


Часовой пояс GMT +4, время: 07:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot