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

ZiB

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о ZiB

  • Звание
    Частый гость
    Частый гость
  • День рождения 25.06.1979

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

2 136 просмотров профиля
  • owl

  1. Дело, в том, что при любом обращении (хоть в цикле с нопами, хоть без) происходит задерка обмена, что приводит к изменению частоты дискретизации. Конечно, чем реже обращения тем меньше вклад. Возможности АЦП я прекрасно осознаю, да и не писал я, что мне нужно выжать из сигма-дельта 400 кГц. Я говорил, о комбинации высокоскоростного преобразования 400 кГц (12 бит) и низкоскоростного, но с высоким разрешением 16 бит. А это доступно, только в STM32F373 (383). В целом сейчас все работает, но мне хотелось бы иметь меньшее потребление (да, и разобраться как "прогнозировать" данные штуки:)).
  2. Да, есть 4-е уровня приоритета для ПДП, но у меня он и так самый высокий стоит. Сбрасывал реально не так, часто. Просто когда заметил небольшое отклонение стал искать причину, ну остановился на бескончном цикле, так более заметно влияние.
  3. Выигрыша нет. Например при тактовой 12 МГц потребление (по цифре) на полном ходу 7,4 мА, при остановленом 3,8 мА. Если поднять частоту до 48 МГц, при этом уменьшить частоту шин для периферии на 4 (пропорционально увеличению частоты) и остановить ядро, получим 10,5 мА (на полном ходу 19,9 мА). Начинает кушать больше всё, что весит на шине AHB. В моем случае: 10,5 - 3,8 = 6,7 мА и (48 - 12 = 36 МГц) - это 1) DMA - 18,3 * 36 = 658 мкА 2) BusMatrix - 6,9 * 36 = 248 мкА 3) ABP2-Bridge - 4.2 * 36 = 151 мкА 4) ABP2-Bridge - 6.9 * 36 = 248 мкА 5) GPIO(A-E) - (12.2+11.9+4.3+12.0+4.4)*36 = 1612 мкА суммарно 2,9 мА, оставшиеся 3,8 мА (105 мкА/МГц) прочие накладные расходы :)
  4. Сходил за платой... Нашел место, но не понял причину. Странная штука получается, в обоих мк (STM32F303 и STM32F373) независимый таймер подключен к шине АВР1, правда АЦП сидят на разных шинах. В 303 снижение частоты АВР1 в 16 раз, ни дает ни какого эффекта, а вот в 373 это приводит к торможению обмена АЦП, хотя АЦП подключен к APB2. В 100-ом похожая структура и там тоже аналогичная ситуация, процесс передачи данных замедляется. В 407-ом замедления нет, но структура похожа на 100 и 373. -------- Получается в 100-ом, 373-ом при обращение к любой переферии на шине АВР1, тормозится процесс обмена. В 407-ом и 303, нет замедления. Кто подскажет как прогнозировать данный процесс ?
  5. Назависимый сторожевой таймер, сюдя по описанию одинаково подключен см. скрины из доки. На пересылку должно уходить не более 14 тактов (АЦП необходимо столько для преобразования данных), если судить по описанию доступ к шине занимает 5 тактов, остаеться ещё 9 тактов, чего тоже достаточно. Да и раньше это все прекрасно работало на STM32F405 (я и сейчас отдельно проверял, выше уже писал). Прешел на STM32F3, так как необходимо 16-ти битное АЦП. Все прекрасно запустилось, думал будет сильно шуметь из-за очень плотного монтажа, но получилось хорошо, уровень шума мал. Попробую ещё на STM32F303 (Discovery), но там АЦП другое. Работал, бы на ещё меньшей тактовой частоте для меньшего потребления, но необходимо оцифровывать один канал с частотой не ниже 400 кГц. Хм, на STM32F303, все работает прекрасно... (При чем на 12 МГц, успевает пересылать в два раза больше данных, у него делитель на АЦП от 1.) Эх, поехал на работу за платой, что-то мне эта проблемка покоя не дает. Хоть бы это мой косяк был, а не косяк в мк. Забыл скрины подписать. Левый STM32F3, правый STM32F4.
  6. С чего это? Это где такое написано ?
  7. Это, то все понятно (что ЦПУ и ПДП делят шину и есть ограничения по пропускной способности), но не понятно, почему при обращении к регистрам сторожевого таймера происходит "задержки" и по всей видимости только на STM32F3. Сейчас платы нет под рукой, в пн. продолжу тестирование. Почитать о работе ПДП по нашему и с красивыми картинками можно тут (для М3) http://www.gaw.ru/html.cgi/txt/doc/micros/...x_arh/4_2_3.htm
  8. Спасибо за ответы. Я пока полностью не разобрался. Аналогичный код на STM32F100 и STM32F407, работает без проблем. Заказал аналогичный мк с большей памятью STM32F373RB, посмотрим, что там будет. Сейчас хочу попробовать использовать другие модули, не АЦП и посмотреть как будет с ними работать ПДП.
  9. Добрый день! Столкнулся с проблемкой на STM32F373R8 (возможно есть и на других мк, пока не было времени проверить). Системная тактовая частота 12 МГц. Работаю с АЦП1 (12 битное). Предделитель АЦП = 2. АЦП настроено на непрерывное преобразование с минимальным временем выборки. Частота преобразований получается (12МГц/2)/(14 тактов одно преобразование) = ~430 кГц. Данные с АЦП забирает ПДП (DMA) контроллер. Все работает прекрасно. Однако когда в коде встречается цилический доступ к регистрам сторожевого таймера, то частота преобразований падет до 190 кГц. while (1) { IWDG->KR = 0xAAAA; } Проверял с регистрами IWDG->RLR, IWDG->PR. Активность таймера не влияет на ошибку (т.е. и со включенным и с выключенным таймером). При увеличении времени выборки, т.е. при сниженнии частоты преобразования данная проблема исчезает. Может кто сталкивался с данной проблемкой и знает, где почитать более детально о работе ПДП и задрежках на шинах ?
  10. В документации на микроконтроллер, в данном случае смотрите RM0038: STM32L151xx, STM32L152xx and STM32L162xx advanced ARM-based 32-bit MCUs AN3193: STM32L15x ultralow power features overview и рекомендую глянуть стандартную либу STM32L1xx standard peripherals library Выход эквивалентен программному сбросу мк, проконтролировать можно анализируя регистр статуса PWR_CSR, там есть битик SBF Используйте документацию которую я указал выше и настоятельно рекомендую просмотреть примеры.
  11. Нужно копать. Такую маленькую ль-ку мне не удалось купить, проверить не могу. Больше всего использовал STM8L151K4(6) и STM8L152С8, у них все ок, как по доке. Проверяйте питание в первую очередь.
  12. Я ИАР не использую и не сильно доверяю отладчикам ) STMStudio использует технологию при которой можно мониторить любую ячейку памяти МК без вмешателства в его работу (такая же фишка есть и в кортексах), очень удобно. Ждем результата, очень интересно, т.к. я давно занимаюсь стм8 (уже наверное третий год) и планирую дальше с ними работать.
  13. Возможно вы неправильно "читате" ? Используйте утилиту для отладки STMStudio (http://www.st.com/internet/evalboard/product/251373.jsp). Только не используйте её для мониторинга ОЗУ и Флеш-памяти ОДНОВРЕМЕННО! Дает сбой, я не уверен, что разработчики знают об ошибке.
  14. Насколько я понял имеется один байт со значением TS_Factory_CONV_V90, предпологается, что старшая часть равна 0x03. Данное значение получено при напряжении питания 3-+10мВ (опорном) и температуре 90-+5 градусов Цельсия. У STM8L151K6 данное значение расположено по адресу 0x004911, в моем мк это значение равно 0x43. Следовательн имеем 0x0343=835, что при указанном опорном около 0,611 В. Если я правильно понял, то далее нам нужно получить второю точку, для этого необходимо получить значение при температуре 25 градусов Цельсия. У меня получилось 0x26C=620, т.е. 0,498В (опорное у меня 3,29В). Используя эти две точки, можно получить наклон и смещение характеристики, что должно повысить точность преобразования.
  15. STM8

    Информацию о размере кода вывожу через самописный костыль http://ziblog.ru/2011/10/03/formatirovanie...-cosmic-chat-2/
×
×
  • Создать...