Dima1060
Свой-
Постов
517 -
Зарегистрирован
-
Посещение
Весь контент Dima1060
-
Передача данных по Interrupt каналу для STM32F4
Dima1060 опубликовал тема в ARM, 32bit
Здравствуйте! Делал проект в CubeMX для STM32F429 с передачей данных по USB. Сейчас есть две конечных точки, одна Bulk OUT и одна Interrupt IN. Изначально сгенерировал в CubeMX проект для USB CDC и переделал в дескрипторах одну конечную точку в тип Interrupt. Для передачи данных по Interrupt каналу использовал стандартную функцию uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) { uint8_t result = USBD_OK; USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; if (hcdc->TxState != 0){ return USBD_BUSY; } USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); return result; } Все заработало, только отредактировал немного функцию передачи данных низкого уровня - насколько помню, нашел это на форуме ST: После этого никаких проблем с передачей данных по Interrupt не наблюдалось, но всегда глодало сомнение, а правильно ли я сделал. Каких то примеров нигде не нашел, везде bulk и иногда изохронные. Недавно же при испытаниях на ЭСР выяснилось что иногда передача данных по Interrupt прекращается и никак не удается возобновить ее работу, кроме как перезагрузкой прибора. Причем перестает работать именно передача по Interrup, вторая конечная точка нормально работает. Здесь хотелось бы узнать, может кто-то делал передачу по Interrupt или находил адекватный пример. Стоит отметить, что у меня используется довольно старая библиотека STM32CubeF4, от февраля 2015 года, возможно какие то баги были поправлены за это время. -
Нецелая системная частота STM32F4
Dima1060 ответил Dima1060 тема в ARM, 32bit
Считаем: 76800/[(32*2)*((2*25)+0)*4)] = 76800/[64*50*4] = 6 кГц Но судя по таблице 127 (у Вас почему то это 126, может RM на другой процессор?) можно получить точность 0,0186%, если задать умножитель PLLI2SN = 258, а делители PLLI2SR и I2SDIV по 3 (I2SODD = 1), но у меня это тоже не сходится... Хотя нет, все правильно, на I2S точность 0,01% показывает CubeMX, а я же использую не его, а модуль SAI! -
Нецелая системная частота STM32F4
Dima1060 ответил Dima1060 тема в ARM, 32bit
Что-то у меня не сходится, второй период получается больше чем первый. Я что-то не так посчитал, вернее, переформулирую так: по каким причинам конец синусоиды достигнет нуля раньше, чем ЦАП отправит точку с амплитудой ноль? Не понял половины делителей, что Вы написали, у меня минимальная погрешность на 8 МГц кварце получается при таких настройках: -
Нецелая системная частота STM32F4
Dima1060 ответил Dima1060 тема в ARM, 32bit
Не понял Вас, можете пояснить, как при частоте квантования ЦАП = 46875Гц получить ровно 8 кГц? Там же получается нецелое число точек на период. Спасибо, интересная штука, но мне кроме синуса нужно и другие сигналы воспроизводить, нужен ЦАП -
Нецелая системная частота STM32F4
Dima1060 ответил Dima1060 тема в ARM, 32bit
Например, ЦАП должен выдать стимул (звуковой) - один период синуса 8 кГц. По умолчанию у меня была частота квантования 46875 Гц. Разделим 46875 на 8000, получится 5,859375 точек. Округляем до целых 6 точек. 46875 делим на 6, получаем 7812,5 Гц - реальная частота стимула вместо 8 кГц. Погрешность 2,34% -
Нецелая системная частота STM32F4
Dima1060 ответил Dima1060 тема в ARM, 32bit
Ну например стимул состоящий из 2-3 периодов с частотой 8 кГц, повторяющийся с частотой 20Гц. С кварцем 8 МГц получается частота квантования не ровно 48 кГц, отсюда вылезает погрешность по частоте для стимулов. Если поковырять делители, получается погрешность 0,19% в наилучшем случае, с таким кварцем. Требование у меня - обеспечить точность не более 1%. Но можно же эту погрешность практически убрать вообще с кварцем 8,192 МГц. Вот я и пытаюсь выяснить, будет ли это иметь какие то последствия. -
Нецелая системная частота STM32F4
Dima1060 ответил Dima1060 тема в ARM, 32bit
В CubeMX высвечивается что частота должна быть в пределах 47,88 - 48,12 МГц. У меня получилась 47,981714 МГц. -
Нецелая системная частота STM32F4
Dima1060 опубликовал тема в ARM, 32bit
Здравствуйте! Использую STM32F429 для аудио девайса, возникло требование выдавать тональные стимулы с высокой точностью по частоте. Для этого решил поставить кварцевый резонатор на 8,192 МГц вместо 8 МГц. В итоге получил частоту I2S ровно 48 кГц. Но с таким кварцем теперь все остальные системные частоты неровные и нецелые. В CubeMX во вкладке тактирования ничего красным не подсвечивается, вроде как все частоты допустимы. Но меня немного терзают смутные сомнения, не получится ли от этого каких-нибудь проблем? Использую в процессоре два I2S, USB, SPI, SDRAM. Подскажите пожалуйста, есть ли какие то поводы для беспокойства? -
Это понятно, хотелось чего то простого... А подключение конденсаторов через полевые транзисторы как то повлияет на работу? Ну там скорость нарастания наверно уменьшится
-
Ну не знаю, хорошо ли вставлять сопротивление полевика в питание усилителя... Впрочем это неважно, какая разница что размыкать ключи питания или выходное реле, вопрос мой был в том как этот сигнал генерировать Я же писал, что уровень напряжения может доходить до 8 вольт
-
Отключить могу, но это ничего не даст, поскольку на питании усилителя емкости большие стоят.
-
Так же, как медицинский лазер защищен от того чтобы не поджарить здоровые ткани вместо раковых. Никак. Благоразумие и следование инструкции.
-
Проблема в контроле. Для людей с нормальным слухом громкий сигнал не выдается, а щелчок недопустим требованиями безопасности. Тем не менее он возможен и нужно что-то сделать, чтобы его предотвратить.
-
Должно, это для глухих, тестовый стимул должен быть именно такой
-
Дело в том, что стандарт на безопасность не допускает даже разового щелчка определенной амплитуды. И надо показать контролирующим органам, что сделано хоть что-то для защиты от него. 20 Ом последовательно - много, выходное напряжение может достигать 8,5 вольт по амплитуде.
-
Plain, интересная конструкция, спасибо Я рассматриваю вот такую систему , автор бесцеремонно утверждает, что все что на транзисторах - даже и смотреть не стоит)
-
У меня нагрузка 10 ом, у термопредохранителей сопротивление большое. Питание двухполярное ±12 вольт. Дело не в разрушении наушников, а в том, что такое напряжение создает недопустимый для слуха щелчок.
-
Все же хочется какой то уже проверенной схемы. чтобы не наступать на грабли
-
Защита наушников от постоянного напряжения
Dima1060 опубликовал тема в В помощь начинающему
Здравствуйте! Имеется аудио усилитель который работает на наушники, 10 Ом. Прикинул, по расчетам, получается, если усилитель сгорит, на выходе будет напряжение питания и большой щелчок в наушниках. Нужна схема защиты, которая при появлении постоянного напряжения на выходе отключит реле. В интернете много схем на транзисторах, честно говоря, не вызывают особого доверия. Может кто поделится проверенной схемой защиты? -
Блок питания без обратной связи
Dima1060 ответил Dima1060 тема в В помощь начинающему
Я планирую поставить SN6505, если без обратной связи. Входное напряжение у меня USB, то есть 4,75-5,25 вольт, разброс вроде небольшой. Виноват, неправильно написал. Высокое напряжение тоже двухполярное +/-7В -
Блок питания без обратной связи
Dima1060 опубликовал тема в В помощь начинающему
Здравствуйте, в настоящий момент использую для питания аудио усилителя блок питания на UCC3808 с обратной связью, пуш-пул, где-то ватта на 4-5. Это удобно с точки зрения КПД, поскольку есть ограничения по току потребления. Специфика использования такова, что нужно выдавать синусоиду небольшой амплитуды (достаточно питания +/-5В) либо импульсы с бОльшей амплитудой (нужно питание 7 вольт). То есть при меньшем напряжении потребляется большой ток, а при большем напряжении потребляется импульсный ток. Сейчас это решено таким образом, что есть две вторичные обмотки и в зависимости от необходимости усилитель питается от той или другой обмотки. Вопрос в том, нельзя ли обратную связь убрать, оставить только одну обмотку, на которой на холостом ходу будет около 7 вольт, до которых будут заряжены большие конденсаторы питания усилителя. И при импульсном потреблении можно будет выдать импульс достаточной амплитуды. А при необходимости выдавать синусоиду ток потребления возрастет и напряжение на выходе снизилось бы до 5 вольт. Можно ли провернуть такой фокус, чтобы при этом процесс был управляемым и повторяемым? -
Пиковый детектор
Dima1060 ответил Dima1060 тема в В помощь начинающему
У моего осциллографа минимальный масштаб 20 мВ на клетку и шумов немало, если щуп на землю замкнуть... Тем не менее, посмотрел осциллографом, на R2 примерно 10-15 мВ, колебаний нет, едва видно небольшие пилообразные всплески. На выходе примерно тоже самое. Хм, а на вольтметре 60 мВ и чему верить? -
Пиковый детектор
Dima1060 ответил Dima1060 тема в В помощь начинающему
что это значит, поясните пожалуйста? -
Пиковый детектор
Dima1060 ответил Dima1060 тема в В помощь начинающему
Да, извиняюсь, ошибся. Можно попробовать, но это компенсирует лишь смещение на входе, откуда берется 60 мВ вообще непонятно...