Перейти к содержанию
    

Dima1060

Свой
  • Постов

    517
  • Зарегистрирован

  • Посещение

Весь контент Dima1060


  1. Здравствуйте! Делал проект в 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 года, возможно какие то баги были поправлены за это время.
  2. Считаем: 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!
  3. Что-то у меня не сходится, второй период получается больше чем первый. Я что-то не так посчитал, вернее, переформулирую так: по каким причинам конец синусоиды достигнет нуля раньше, чем ЦАП отправит точку с амплитудой ноль? Не понял половины делителей, что Вы написали, у меня минимальная погрешность на 8 МГц кварце получается при таких настройках:
  4. Не понял Вас, можете пояснить, как при частоте квантования ЦАП = 46875Гц получить ровно 8 кГц? Там же получается нецелое число точек на период. Спасибо, интересная штука, но мне кроме синуса нужно и другие сигналы воспроизводить, нужен ЦАП
  5. Например, ЦАП должен выдать стимул (звуковой) - один период синуса 8 кГц. По умолчанию у меня была частота квантования 46875 Гц. Разделим 46875 на 8000, получится 5,859375 точек. Округляем до целых 6 точек. 46875 делим на 6, получаем 7812,5 Гц - реальная частота стимула вместо 8 кГц. Погрешность 2,34%
  6. Ну например стимул состоящий из 2-3 периодов с частотой 8 кГц, повторяющийся с частотой 20Гц. С кварцем 8 МГц получается частота квантования не ровно 48 кГц, отсюда вылезает погрешность по частоте для стимулов. Если поковырять делители, получается погрешность 0,19% в наилучшем случае, с таким кварцем. Требование у меня - обеспечить точность не более 1%. Но можно же эту погрешность практически убрать вообще с кварцем 8,192 МГц. Вот я и пытаюсь выяснить, будет ли это иметь какие то последствия.
  7. В CubeMX высвечивается что частота должна быть в пределах 47,88 - 48,12 МГц. У меня получилась 47,981714 МГц.
  8. Здравствуйте! Использую STM32F429 для аудио девайса, возникло требование выдавать тональные стимулы с высокой точностью по частоте. Для этого решил поставить кварцевый резонатор на 8,192 МГц вместо 8 МГц. В итоге получил частоту I2S ровно 48 кГц. Но с таким кварцем теперь все остальные системные частоты неровные и нецелые. В CubeMX во вкладке тактирования ничего красным не подсвечивается, вроде как все частоты допустимы. Но меня немного терзают смутные сомнения, не получится ли от этого каких-нибудь проблем? Использую в процессоре два I2S, USB, SPI, SDRAM. Подскажите пожалуйста, есть ли какие то поводы для беспокойства?
  9. Это понятно, хотелось чего то простого... А подключение конденсаторов через полевые транзисторы как то повлияет на работу? Ну там скорость нарастания наверно уменьшится
  10. Ну не знаю, хорошо ли вставлять сопротивление полевика в питание усилителя... Впрочем это неважно, какая разница что размыкать ключи питания или выходное реле, вопрос мой был в том как этот сигнал генерировать Я же писал, что уровень напряжения может доходить до 8 вольт
  11. Отключить могу, но это ничего не даст, поскольку на питании усилителя емкости большие стоят.
  12. Так же, как медицинский лазер защищен от того чтобы не поджарить здоровые ткани вместо раковых. Никак. Благоразумие и следование инструкции.
  13. Проблема в контроле. Для людей с нормальным слухом громкий сигнал не выдается, а щелчок недопустим требованиями безопасности. Тем не менее он возможен и нужно что-то сделать, чтобы его предотвратить.
  14. Должно, это для глухих, тестовый стимул должен быть именно такой
  15. Дело в том, что стандарт на безопасность не допускает даже разового щелчка определенной амплитуды. И надо показать контролирующим органам, что сделано хоть что-то для защиты от него. 20 Ом последовательно - много, выходное напряжение может достигать 8,5 вольт по амплитуде.
  16. Plain, интересная конструкция, спасибо Я рассматриваю вот такую систему , автор бесцеремонно утверждает, что все что на транзисторах - даже и смотреть не стоит)
  17. У меня нагрузка 10 ом, у термопредохранителей сопротивление большое. Питание двухполярное ±12 вольт. Дело не в разрушении наушников, а в том, что такое напряжение создает недопустимый для слуха щелчок.
  18. Все же хочется какой то уже проверенной схемы. чтобы не наступать на грабли
  19. Здравствуйте! Имеется аудио усилитель который работает на наушники, 10 Ом. Прикинул, по расчетам, получается, если усилитель сгорит, на выходе будет напряжение питания и большой щелчок в наушниках. Нужна схема защиты, которая при появлении постоянного напряжения на выходе отключит реле. В интернете много схем на транзисторах, честно говоря, не вызывают особого доверия. Может кто поделится проверенной схемой защиты?
  20. Я планирую поставить SN6505, если без обратной связи. Входное напряжение у меня USB, то есть 4,75-5,25 вольт, разброс вроде небольшой. Виноват, неправильно написал. Высокое напряжение тоже двухполярное +/-7В
  21. Здравствуйте, в настоящий момент использую для питания аудио усилителя блок питания на UCC3808 с обратной связью, пуш-пул, где-то ватта на 4-5. Это удобно с точки зрения КПД, поскольку есть ограничения по току потребления. Специфика использования такова, что нужно выдавать синусоиду небольшой амплитуды (достаточно питания +/-5В) либо импульсы с бОльшей амплитудой (нужно питание 7 вольт). То есть при меньшем напряжении потребляется большой ток, а при большем напряжении потребляется импульсный ток. Сейчас это решено таким образом, что есть две вторичные обмотки и в зависимости от необходимости усилитель питается от той или другой обмотки. Вопрос в том, нельзя ли обратную связь убрать, оставить только одну обмотку, на которой на холостом ходу будет около 7 вольт, до которых будут заряжены большие конденсаторы питания усилителя. И при импульсном потреблении можно будет выдать импульс достаточной амплитуды. А при необходимости выдавать синусоиду ток потребления возрастет и напряжение на выходе снизилось бы до 5 вольт. Можно ли провернуть такой фокус, чтобы при этом процесс был управляемым и повторяемым?
  22. У моего осциллографа минимальный масштаб 20 мВ на клетку и шумов немало, если щуп на землю замкнуть... Тем не менее, посмотрел осциллографом, на R2 примерно 10-15 мВ, колебаний нет, едва видно небольшие пилообразные всплески. На выходе примерно тоже самое. Хм, а на вольтметре 60 мВ и чему верить?
  23. что это значит, поясните пожалуйста?
  24. Да, извиняюсь, ошибся. Можно попробовать, но это компенсирует лишь смещение на входе, откуда берется 60 мВ вообще непонятно...
×
×
  • Создать...