Jump to content

Особенности разводки платы при работе с АЦП на STM32


Uhbif
 Share

Recommended Posts

Хочу сделать вольтамперметр на базе STM32L151, есть ли какие нибудь особенности при разводке платы? Свой вариант прикрепляю ниже. Буду благодарен за дельные комментарии. 

ВА-30.dch

Link to comment
Share on other sites

5 часов назад, Uhbif сказал:

//

Прикрепите, схему в графическом формате, никто ради вас ставить дип не будет. Уважайте чужое время, если хотите чтоб вам подсказали.

Link to comment
Share on other sites

У STM есть вот такой замечательный документ https://www.st.com/content/ccc/resource/technical/document/application_note/group0/3f/4c/a4/82/bd/63/4e/92/CD00211314/files/CD00211314.pdf/jcr:content/translations/en.CD00211314.pdf В нем есть все про работу и подключение АЦП. 

Link to comment
Share on other sites

Транзисторы OptiMOS с ориентацией кристалла истоком вниз могут стать новым стандартом в изготовлении MOSFET

Традиционно производители дискретных силовых полупроводниковых приборов добиваются улучшения ключевых характеристик за счет усовершенствования кристалла. Однако специалисты компании Infineon добились впечатляющих результатов, сориентировав кристалл в корпусе истоком вниз. Такая ориентация кристалла применена, например, в серии MOSFET OptiMOS.

Подробнее

Новейшая архитектура Σ-Δ-АЦП предотвращает нарушение потока данных во время синхронизации распределенных систем

Критически важные распределенные системы требуют синхронного преобразования во всех подсистемах и непрерывного потока данных. Распределенные системы сбора данных могут быть синхронизированы как на основе АЦП последовательного приближения, так и на основе сигма-дельта (∑-Δ)-АЦП. Новый подход, основанный на преобразователе частоты дискретизации (SRC), содержащемся в микросхемах линейки AD7770 производства Analog Devices, позволяет достигать синхронизации в системах на основе сигма-дельта-АЦП без прерывания потока данных.

Подробнее

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Сообщения

    • Оно и по даташиту так, но Одиссей-010 звучит с ними как твёрдый середнячёк Да ну что вы? Какой Алиэкспресс для КТ818/819? С Алиэкспресса я заказывал пародии на родные MJ15015/15016. А КТ818/819 даже не в ЧипДипе, где бешенная цена и корпус ТО-220, а на радиорынке нашёл.    Откуда исправные то? Достался этот усь мне с 1-м сгоревшим транзюком в каждом канале, а заказанные на Алиэкспрессе новые погибли все 4.
    • Ну неужели непонятно, что ваши хотелки в точности соответствую алгоритму работы садового светильника? А значит, и схема будет примерно такая же, ну может быть, рассчитанная на несколько бОльшие токи.
    • Простой запрос в яндексе показывает, что всё уже придумано много лет назад. https://dic.academic.ru/dic.nsf/bse/87308/Жидкостный  
    • Здравствуйте! Уже где то писал, что собираюсь делать, 6-ти канальный усилитель. Не могу до конца определится с усилителями по звеньям. НЧ- хочу что то типа Шушурина с 2-мя парами комплементарных транзисторов, может Apex-14. СЧ- Никитина, есть комплектующих, еще на несколько каналов. Да и нравится как звучит на ШП акустике. ВЧ- вопрос открыт? 
    • Доброго времени суток. Всегда делал только двухтактные ИП (много и без проблем). Тут вот потребовалось срочно сделать маленький БП (28 V./1 A.,  7 V./0,1 A.), а в наличии только сердечники с зазором (ETD 29/16/10 самый маленький, с зазором 1 мм. (2х0,5)). Решил сделать обратноход (Один раз по молодости пробовал сделать - не получилось и больше к однотактным не возвращался). Сначала посчитал в Flyback - вышло 145 в. первичка, решил из интереса посчитать тоже самое  в FlybackZCS и в Flyback-Lite, вышло по другому 139 в. и 76 в. соответственно. Почему такая разница (в 2 раза)? Скриншоты прилагаю. Flyback-Lite ставит какой то уж совсем маленький коэффициент заполнения.
    • Я тоже экспериментировал с разными лаками. Но, однажды на заводе мне налили майонезную баночку эпоксидной смолы и половину баночки отвердителя. Маленький, крошечный трансформатор с перемотанной вторичной обмоткой я поместил в склеенный из плотной бумаги лоток. Затем залил эпоксидной смолой. После затвердения получился квадрат, твёрдый как камень. Своим экспериментом остался доволен. Для трансформаторов небольших размеров на всех видах сердечников, в том числе и на торе, вполне применим. Единственный недостаток - необходимо достаточное количество эпоксидной смолы, но полученный результат этого стоит.
    • Да, CS в нижнем уровне, только я переключал его после отправки 4 полуслов, счас исправлю, спасибо. #define SPI1_CS_ON() GPIO_RESET_BIT(GPIOA, GPIO_Pin_4); #define SPI1_CS_OFF() GPIO_SET_BIT(GPIOA, GPIO_Pin_4);
  • Similar Content

    • By Sechih7
      Здравствуйте, хочу впаять АУКС в магнитолу CD. Кассетные переделываются легко(замыкаются нужные концевики чтобы магнитофон думал что работает кассета, а на предусилитель кидаем линии aux, и специальную ножку мк подтягиваем к лог 1 или 0). А вот с мафоном CD все сложно, линии аукс включаются по цифровому протоколу, и с CD сигнал передается по SPI, что тоже вызывает сложность в переделке. Было решено обойти сам предусилитель магнитолы, а именно с помощью реле переключить линии основного усилителя на заказанный модуль USB-Bluetooth-MP3 из Китая. Также была разведена и изготовлена печатная плата с универсальными входами и выходами и реле. Управление платой осуществляю с помощью родной кнопки достать диск и при ее нажатии переключается управления родного энкодера. Оставалась сложность с регулировкой звука, решил попробовать цифровой потенциометр, и просто им подтягивать сигнал к земле(не знаю на сколько это правильно). Все алгоритмы реализовал, треки переключает, в память сохраняет. Но вот уже 2 день сижу и пытаюсь крутить цифровой потенциометр AD5263. Посмотрите пожалуйста, что я не так делаю? Питание логики у него разрешено 3V3, далее везде 5V. Подтянул res, shdn к +5V. Отправка по SPI 10bit, старших 2 адрес. Только не понятно нужно ли дергать ножку CS после каждых 10bit, или же можно отправить 4 по 10bit и потом дернуть CS чтобы данные потенциометре внеслись в регистр (стр.28)?
      Схема подключения: https://cloud.mail.ru/public/BQ7p/biynVUh2V
      Даташит AD5263: https://cloud.mail.ru/public/ihyh/sJzPohn2f
      Инициализировал SPI
      uint16_t spi_data; void Init_SPI(void){ //SPI1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); //подключение портов //GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_0);//NSS GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0);//SCK GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0);//MISO GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0);//MOSI CLEAR_BIT(SPI1->CR1, SPI_CR1_BIDIMODE); //0: 2-line unidirectional data mode selected SET_BIT(SPI1->CR1, SPI_CR1_BIDIOE);//1: Output enabled (transmit-only mode) CLEAR_BIT(SPI1->CR1, SPI_CR1_CRCEN | SPI_CR1_CRCNEXT | SPI_CR1_CRCNEXT | SPI_CR1_CRCL);//0: CRC calculation disabled | 0: Next transmit value is from Tx buffer | 0: 8-bit CRC length CLEAR_BIT(SPI1->CR1, SPI_CR1_RXONLY);//0: Full-duplex (Transmit and receive) SET_BIT(SPI1->CR1, SPI_CR1_SSM);//1: Software slave management enabled SET_BIT(SPI1->CR1, SPI_CR1_SSI);////SS в высоком состоянии CLEAR_BIT(SPI1->CR1, SPI_CR1_LSBFIRST);//0: data is transmitted/received with the MSB first // Первым отправляется старший бит MODIFY_REG(SPI1->CR1, SPI_CR1_BR , SPI_CR1_BR_2 | SPI_CR1_BR_0);//011: fPCLK/16 SET_BIT(SPI1->CR1, SPI_CR1_MSTR);//1: Master configuration CLEAR_BIT(SPI1->CR1, SPI_CR1_CPOL);//0: CK to 0 when idle **** 1: CK to 1 when idle CLEAR_BIT(SPI1->CR1, SPI_CR1_CPHA);//0: The first clock transition is the first data capture edge ***** 1: The second clock transition is the first data capture ed SET_BIT(SPI1->CR2, SPI_CR2_TXDMAEN);//1: Tx buffer DMA enabled CLEAR_BIT(SPI1->CR2, SPI_CR2_RXDMAEN);//0: Rx buffer DMA disabled CLEAR_BIT(SPI1->CR2, SPI_CR2_SSOE);//0: SS output is disabled in master mode and the SPI interface can work in multimaster configuration CLEAR_BIT(SPI1->CR2, SPI_CR2_NSSP);//0: No NSS pulse CLEAR_BIT(SPI1->CR2, SPI_CR2_FRF);//0: SPI Motorola mode **** 1 SPI TI mode CLEAR_BIT(SPI1->CR2, SPI_CR2_ERRIE | SPI_CR2_RXNEIE | SPI_CR2_TXEIE); //0: Error interrupt is masked | 0: RXNE interrupt masked | 0: TXE interrupt masked MODIFY_REG(SPI1->CR2, SPI_CR2_DS, SPI_CR2_DS_3 | SPI_CR2_DS_0);//1001: 10-bit CLEAR_BIT(SPI1->CR2, SPI_CR2_FRXTH | SPI_CR2_LDMARX | SPI_CR2_LDMATX);//Last DMA transfer for reception/transmission SET_BIT(SPI1->CR1, SPI_CR1_SPE);//SPI enable// 1: Peripheral enabled } void start_SPI(uint8_t num){ //количество слов DMA_Cmd(DMA1_Channel3, DISABLE);//выкл для установки CNDTR DMA1_Channel3->CNDTR = num; SPI1_CS_ON(); DMA_Cmd(DMA1_Channel3, ENABLE); } void set_SPI_Tx(uint8_t adr, uint16_t Data) { SPI1_TX_buff[adr] = Data; } DMA
      uint16_t SPI1_TX_buff[4]; void SPI_DMA_Init(void){ //TX DMA1_Channel3->CPAR = (uint32_t)(&SPI1->DR); DMA1_Channel3->CMAR = (uint32_t)(SPI1_TX_buff); DMA1_Channel3->CNDTR = 0; CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_MEM2MEM); CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_PL); //Channel priority level 00:low MODIFY_REG(DMA1_Channel3->CCR, DMA_CCR_MSIZE, DMA_CCR_MSIZE_0);//01: 16-bits MODIFY_REG(DMA1_Channel3->CCR, DMA_CCR_PSIZE, DMA_CCR_PSIZE_0);//01: 16-bits SET_BIT(DMA1_Channel3->CCR, DMA_CCR_MINC);//1: Memory increment mode enabled CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_PINC);//0: Peripheral increment mode disabled CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_CIRC);//0: Circular mode disabled SET_BIT(DMA1_Channel3->CCR, DMA_CCR_DIR);//1: Read from memory CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_TCIE | DMA_CCR_HTIE | DMA_CCR_TCIE);//Transfer error interrupt disable | Half transfer interrupt disable | Transfer complete interrupt disable SET_BIT(DMA1_Channel3->CCR, DMA_CCR_EN); } В таймере собираю и отправляю в потенциометр, также выключаю CS
      if(vol_level.send_flag_for_spi){//флаг отправки по SPI если выставлен, отправляем в потенциометр vol_level.send_flag_for_spi = OFF; set_SPI_Tx(0, vol_level.pot_1); set_SPI_Tx(1, (0x100 + vol_level.pot_2)); set_SPI_Tx(2, (0x200 + vol_level.pot_3)); set_SPI_Tx(3, (0x300 + vol_level.pot_4)); start_SPI(4); }else SPI1_CS_OFF();  

    • By kirill.banakh
      Приветствую уважаемые дамы и господа!
      Занимаюсь разработкой носимого устройства с целью исследования технологий LoRaWAN и BLE 5.0. А также поработать с энергоэффективными режимами работы МК STM32L4-серии.
      Исходные данные:



      где - D3 микросхема зарядки Li-ion\Li-Pol аккумулятора (MCP73831),
               D4 - DC\DC преобразователь USB -> 3.3V (LM3671),
               D5 - DC\DC преобразователь VBAT -> 3.3V (LM3671).

      Суть моего вопроса:
      Если присутствует напряжение VBUS (USB), то необходимо выключать преобразователь D5 сигналом LM3671_BAT, но включать D4 сигналом LM3671_USB.
      Таким образом получается, что аккумулятор будет заряжаться, а питаться прибор будет от USB.

      Мои предположения, рассуждения и решения которые я вижу:
      Если управлять преобразователями при помощи GPIO портов МК, то получится, что как только питание по USB отключится, то прибор выключится быстрее, чем успеет включиться преобразователь работающий от VBAT, ввиду чего я такое решение и отмёл. Использовать небольшую схемку на двух полевых транзисторах в одном корпусе (p и n типа). В симуляторе вроде как всё работает, но вероятно может произойти та же ситуация, что и в случае 1;

        Использовать микросхему выполняющую данную задачу, но тут играет роль, что достать её сложно, стоит 7$ и выглядит как overkill для такой простой задачи. Покидайтесь, пожалуйста, камнями и критикой решений, своими вариантами решения задачи или же исправлениями к приложенным схемам.
      -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Если вдруг кого-то заинтересует,
      то вот ссылка на GitHub проекта,
      а так же ссылка на GitHub библиотеки.
      Используются шрифты T-Flex GOST, можно получить по ссылке.
    • By Fordli
      Я написал программу последовательного порта с stm32, OP отправляет число, а затем возвращает число, но возвращаемое число - это какой-то неизвестный символ, скорость передачи синхронизирована 9608, стоп-биты данных и т.д. одинаковы, от tx до rx, все еще грязный код.
      Я поменял 3 помощника для отладки последовательного интерфейса, но они все одинаковые, кто-нибудь знает? Спасибо за ваш ответ.
    • By Solver
      Вопрос такой: как запросить содержимое корневого каталога при использовании библиотеки lfs.h. При этом я имею дело с чужим кодом и там файловая система уже отформатирована (когда-то) и смонтирована (при запуске устройства). Оперировать с каталогами и файлами имена которых я заведомо знаю (или сам создаю) у меня получатся, но для текущей задачи это мне никак не помогает.
      Вероятно мой вопрос очень простой и для многих очевидный, но я тем не менее не смог с наскока найти на него ответ ни в гугле, ни в lfs.h. Очень извиняюсь за невежество, я новичек
    • By hwmaker
      Добрый день.
      На проект требуется программист микроконтроллеров STM32 с пониманием Ethernet.
      Проект:
      плата работает под управлением STM32F413VGT6, представляет собой SIP-приставку для домофона.
      Для связи с Ethernet используется микросхема ENC424J600-I/P - мост SPI <-> Ethernet.
      Ниже приведено краткое описание функционала:
      Устройство должно обеспечивать:
          1.    Прием голоса из домофоной линии и оцифровка с помощью встроенного в контроллер АЦП.
          2.    Передача голоса по сети Ethernet по протоколу RTP. В качестве транспорта использовать UDP.
          3.    Прием голосовых сообщений по Ethernet по протоколу RTP и передачу их на встроенный ЦАП.
          4.    Микроконтроллер должен обеспечивать связь с внешним миром с помощью интерфейса Ethernet через микросхему ENC424J600-PT. 
          5.    Для установления соединения с сервером голосовых сообщений используется протокол SIP 2.0. с поддержкой методов, описанных в RFC 3261. 
          6.  Прием и отработку команд, приходящих по MQTT: открыть входную дверь, открыть шлагбаум и т.п.
          7.  WEB-интерфейс для удаленных настроект и мониторинга рабочих параметров устройства.
          8. Для работу через VPN-роутер контроллер должен поддерживать STUN.
          
      Есть проект для микроконтроллера для аналогичного устройства. Там используется STM32L475RET6.
      Для связи с Ethernet используется так же ENC424J600-I/P.
      Устройство успешно звонить по SIP на сервер. Выполняет приходящие MQTT-команды по открыванию дверей.
      Требуется: 
          поправить ПО под STM32F413VGT6, 
          добавить WEB-интерфейс, 
          добавить возможность удаленного обновления ПО через WEB-интерфейс,
          добавить возможность перезагрузки устройства через WEB-интерфейс,
          добавить возможность хранения данных абонентов во FLASH микроконтроллера и возможность синрохизации этих данных с сервером,
          добавить STUN, 
          исправить метод определения квартиры в которую звонят.
      Есть ТЗ на ПО.
×
×
  • Create New...