Jump to content

snn_krs

Members
  • Content Count

    324
  • Joined

  • Last visited

Community Reputation

62 Обычный

About snn_krs

  • Rank
    Постоялец

Информация

  • Город
    Краснодар

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    микроконтроллеры
  • Оборудование
    Осциллограф, мультиметр

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Сам я именно такой вариант не делал, но попробовал бы сделать так Таймер TIMN сделал ведущим с частотой 20 кГц * 16. TIMM ведомый с запуском от TIMN и счетом до 16, его выход в режиме переключения выдает меандр с частотой 20 кГц. По TIMN запуск АЦП + ДМА. В буфере будут по четным адресам 0-й канал, а по нечетным поочереди 1, 2 каналы.
  2. Да, это пустой цикл ожидания установки флага UDRE.
  3. Обычно , если надо передать один символ, делают так void sendusart( unsigned char but ) { while ( !( UCSRA&( 1 << UDRE ))); UDR = but; }
  4. Да ВООТ0 в единицу, подключить если есть такая возможность УАРТ1 и утилитой Flash Loader Demo попробовать записать. На 100 серии ботлоадер только на УАРТ1.
  5. Попробуйте загрузить или стереть через бутлоадер.
  6. Попробуйте вставить такое перед #include <util/delay.h> , иногда помогает в АС7 #define __DELAY_BACKWARD_COMPATIBLE__
  7. Все отлично работает. Покажите полный код с обеих устройств, тогда можно будет сказать, где ошибка.
  8. Наверно лучший вариант взять STM32F103 с двумя АЦП. Там они будут работать независимо. На вашем можно сделать иначе. Если 3 преобразования не получается, то делайте по 2. При 22 кГц время между двумя выборками 2.8 мкс ( меандр 45 мкс и 16 выборок = 2.8 мкс ). При Sample time = 1.5 время одного преобразования 1.17 мкс и двух соответственно 2.34 мкс.Делаете регулярные группы 0, 1, 0, 2 и запускаете по два канала. В буфере будет по 32 значения, канал 0 обрабатываете постоянно, а 1 и 2 по желанию.
  9. Думаю лучше задавать частоту одного таймера более высокочастотного, а второй запускать от него с постоянным делителем например 10. Книга называется "Мартин М. Инсайдерское руководство по STM32". Если не найдете могу скинуть.
  10. Похоже я не правильно понял. Запускать можно группу каналов, но если вам надо равномерно распределять выборки по меандру, то конечно надо второй таймер. Я имел ввиду вот такие преобразования.
  11. Да. Обработку я делаю по прерываниям от ДМА - половина буфера и полный. Пока обрабатываю первую половину, заполняется вторая.
  12. Зачем два таймера. АЦП сам запускает ДМА по окончанию каждого преобразования. У АЦП есть режим запуска по триггеру. Таймер будет запускать все 10 преобразований по вашему меандру. Только посмотрите какие таймеры и по какому событию могут запускать АЦП.
  13. Максимальная частота АЦП 12 МГц. Около 850 000 преобразований в секунду. Другая периферия на время преобразования не влияет. В ДМА лучше для АЦП поставить высший приоритет.
  14. Делал типа такого ADC_InitStr.ADC_ContinuousConvMode = ENABLE; ADC_InitStr.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStr.ADC_Mode = ADC_Mode_Independent; ADC_InitStr.ADC_NbrOfChannel = 4; ADC_InitStr.ADC_ScanConvMode = ENABLE; ADC_InitStr.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_Init( ADC1, &ADC_InitStr ); ADC_RegularChannelConfig( ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig( ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig( ADC1, ADC_Channel_2, 3, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig( ADC1, ADC_Channel_TempSensor, 4, ADC_SampleTime_239Cycles5 ); ADC_TempSensorVrefintCmd( ENABLE ); ADC_DMACmd( ADC1 , ENABLE ); ADC_Cmd( ADC1, ENABLE ); ADC_InitStr.ADC_NbrOfChannel = 4; - это число каналов в группе ставите 16 ADC_RegularChannelConfig( ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 ); - число 1 - канал 0 будет запущен первым и т. д. Лучше порядок преобразований и число задать через регистры ADC_SQR1, ADC_SQR2 и ADC_SQR3. ADC_SQR1 = 0х00F00000; - типа такого.
  15. Если устроит, то есть регулярные каналы и можно настроить групповое преобразование. В группе может быть до 16 каналов. Можно сделать 14 преобразований важного канала и 2 преобразования вспомогательных каналов. При этом можно задать любой порядок следования каналов например: 1,1,2,1,1,3,1,1... Не надо будет перенастраивать, ДМА будет складывать так как зададите. Число каналов и последовательность задается в регистрах ADC_SQR1,2,3.
×
×
  • Create New...