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

Vas123

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник

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

1 312 просмотра профиля
  1. lsc

    Добрый день, изобретал на CC256X устройство BLE. Что предлагаете конкретно ?

  2. Здравствуйте.

    У меня несколько разработок Bluetooth радио. Могу выполнить Вашу работу

  3. Добрый день!

    Могу помочь с Bluetooth модулем!

    Если актуально пишите [email protected] обсудим...

  4. Добрый день. Ищется специалист (фрилансер), способный разработать модуль с Bluetooth для двустороннего обмена данными между нашим устройством и любым смартфоном под управлением Android. Разработать требуется либо схему/печатную плату/встроенное ПО, либо только встроенное ПО - это по обстоятельствам. Вся документация, включая исходные тексты ПО, передается в собственность заказчика. Работа удаленная. Если кого-то интересует подобная тема, просьба связаться в личке для обсуждения деталей.
  5. Я не специалисть в Си, но, возможно, вам помогут несколько замечаний. Цитаты приведены из документа "http://www.ti.com/lit/ug/slau144j/slau144j.pdf?ts=1590312294147". Для понимания работы флэш памяти нужно бы прочитать как минимум раздел 7.3. 1. Вы не можете просто так изменять биты во встроенной флэш памяти. Это касается любого сегмента памяти. Цитата раздела 7.2.3: "The erased level of a flash memory bit is 1. Each bit can be programmed from 1 to 0 individually but to reprogram from 0 to 1 requires an erase cycle." Т.е. если при записи нового байта хоть один бит должен быть изменен с "0" на "1", то это не получится. Сначала нужно будет стереть сегмент целиком, чтобы все биты стали равны "1", и только после этого можно записать новый байт. 2. Запись или стирание можно выполнять из любого участка программного кода, в том числе из обработчика прерывания. Важно, чтобы процесс записи не был прерван каким-либо другим событием, т.е. срабатыванием Watchdog, сигналом сброса, прерыванием, или просадкой питания. Прерывания перед записью/стиранием можно просто запретить. Причем, насколько я понял, в контроллере M430G2553 прерывания запрещаются автоматически, т.е. об этом заботиться вообще не нужно. 3. В момент записи или стирания флэш памяти нужно гарантировать, чтобы не сработал таймер Watchdog. Для этого рекомендуют его отключать. На практике я часто настраивал Watchdog так, чтобы он гарантировано не сработал раньше окончания процесса записи или стирания.
  6. Нужно читать: www.ti.com/lit/ug/slau208o/slau208o.pdf страница 739, раздел "28.2.5.3 Sample Timing Considerations", рисунок "Figure 28-6. Analog Input Equivalent Circuit". Время Sample and Hold - это время, в течение которого напряжение с внешнего вывода АЦП (вывод микроконтроллера) подается на внутренний конденсатор Ci через внутренний же ключ мультиплексора. Ключ на рисунке не показан, но показано его сопротивление Ri с максимальным значением 1,8кОм. Процесс преобразования состоит из двух этапов (Figure 28-5. Pulse Sample Mode на той же странице, выше): 1. Выборка (Sampling), с момента времени "Start Sampling" до момента "Stop Sampling". Длится, пока сигнал SAMPCON = 1. На самом деле, немного меньше, т.к. сначала теряется время на синхронизацию tsync. Реальная длительность выборки - это время tsample. В это время вход АЦП как раз представляет из себя то, что изображено на Figure 28-6. По окончании этого времени конденсатор Ci отключается от внешнего вывода, и начинается этап 2. 2. Преобразование напряжения на конденсаторе Ci в код АЦП, с момента времени "Start Conversion" до момента "Conversion Complete". То есть преобразуется не напряжение, присутствующее на выводе, а напряжение на внутреннем конденсаторе Ci. Получается, что сначала нужно зарядить конденсатор Ci до напряжения, равного входному. На самом деле достаточно зарядить до напряжения, отличающегося от входного не более, чем на половину шага квантования (one-half LSB). А поскольку этот конденсатор заряжается через резисторы, то это требует времени. Это время как раз и называется временем выборки tsample, и задается битами ADC12SHT0x в регистре ADC12CTL0. Необходимое время заряда можно рассчитать, если известно сопротивление источника сигнала Rs, сопротивление внтуреннего ключа Ri, и емкость Ci. Именно этот расчет и выполняется по формуле в разделе 28.2.5.3 Sample Timing Considerations. Там еще есть какие-то 800нс, но раз разработчики микросхемы это время добавили, значит оно необходимо - просто нам не сообщили всех подробностей внутренней схемотехники. Разумеется, число циклов ADC12CLK, в течение которых будет длиться выборка, нужно выбрать таким, чтобы tsample было больше рассчитанного значения.
  7. Ну капец. Отлучился на день, тут уже сериал. Я не зря просил писать в личку или на почту. Человек, который может сделать, нашелся быстро. Есть еще несколько людей, кто тоже предлагает адекватные варианты. А по поводу "купить готовое": если мы ставим задачу так, как написано, значит нам так и нужно, остальное обсуждается при личном общении. Готовое из имеющегося в данном случае совсем не вариант. И рассказывать все нюансы смысла тоже нет. А в целом всем спасибо, это да.
  8. Добрый день. Нам нужна готовая разработка следующего адаптера. 1. Основное назначение: запись информации, полученной по последовательному интерфейсу на SD карту. Информация с SD карты впоследствии будет считываться на компьютере под управлением виндоус или линукс. 2. Последовательный интерфейс для передачи информации: UART или SPI, передавать будет микроконтроллер с питанием +3,3В. 3. Информация, передаваемая через последовательный интерфейс - просто последовательность байтов, обрабатывать никак не нужно. Протокол обмена обсуждается, но предполагается наиболее простой. 4. Имя файла для записи на SD карту выбирается автоматически по текущим дате и времени. Дата и время передаются через последовательный интерфейс. 5. Питание адаптера - от устройства с последовательным интерфейсом. Напряжение от 3 до 20В - на выбор, можно стабилизированное, можно нет. Потребляемая мощность особо не ограничена, в пределах разумного. 6. Используемый микроконтроллер - из легкодоступных. 7. Габариты не сильно важны, главное без гигантомании. 8. Что нам нужно получить в итоге: схему с перечнем элементов, исходный текст встроенного ПО, откомпилированное ПО (прошивку). Развести и изготовить плату можем сами. 9. Срок: 1 месяца до готового образца. 10. Стоимость обсуждается. Писать в личку, или на почту [email protected]
  9. Базовая схема такая же, как всегда: тактовая частота делиться на постоянный коэффициент, задаваемый в регистрах UxBR1 и UxBR0 (всего 16 бит). Но есть еще регистр UxMCTL, данные в котором обрабатываются побитно. Как это происходит хорошо видна на Figure 13-8 "BITCLK Baud Rate Timimg". Если в регистрах UxBR1: UxBR0 записана величина N, то через N/2 периодов тактовой частоты BRCLK тактовый сигнал BITCLK должен измениться с "0" на "1". На самом деле он меняется, только если очередной бит регистра UxMCTL равен 0, в противном случае изменение происходит на один период позже. Каждый раз используется следующий бит регистра UxMCTL (начинается все с младшего бита). Длительность "0" сигнала BITCLK равна либо N/2 либо N/2+1, в зависимости от очередного бита UxMCTL. Длительность "1" сигнала BITCLK равна N/2, если N четное, и N/2+1, если N нечетное. Т.е. период сигнала BITCLK равен N или N+1 периодов сигнала BRCLK, в зависимости от очередного бита UxMCTL. Таким образом, тактовая частота BITCLK немного "плавает" вокруг среднего значения. Если частота BRCLK заметно выше BITCLK, то такая схема вполне нормально работает. Вычислить нужные значения можно по формулам в разделе "Baud Rate Bit Timing". Единственное, что нужно сделать, это по возможности равномерно распределить "0" и "1" в байте UxMCTL. Примеры для тактовой частоты BRCLK 8,389 МГц: 600.002 бод = 8389000/(369Dh + 5/8) = 8389000/(13981 + 0.625) = 8389000/13981.625 U0MCTL = ABh ;пять единичных битов U0BR0 = 9Dh U0BR1 = 36h 9599.771 бод = 8389000/(0369h + 7/8) = 8389000/(873 + 0.875) = 8389000/873.875 U0MCTL = 7Fh ;семь единичных битов U0BR0 = 69h U0BR1 = 03h
  10. ORG 0FBB0h ARRAY1 DB 12,14,15,16 ARRAY2 DB 30,30,30,30 Если верить описанию, что вместо "DB" можно писать "DC8", но я никогда не использовал, а проверять лень.
  11. Разводка неправильная. По крайней мере в той части, которая касается разводки земли. Чтобы прояснить ситуацию, вот фрагмент из одного из учебников: "Чувствительные аналоговые компоненты, такие как усилители и источники опорного напряжения, всегда подключаются и развязываются на аналоговой заземляющей поверхности. АЦП и ЦАП (и другие ИС со смешанными сигналами) с небольшими цифровыми токами обычно должны рассматриваться как аналоговые компоненты, и также заземляться и развязываться на аналоговой заземляющей поверхности. На первый взгляд это может показаться несколько противоречивым, т.к. преобразователь имеет и аналоговый, и цифровой интерфейс, и он имеет выводы, обычно обозначенные как аналоговое заземление (AGND) и цифровое заземление (DGND). Схема, показанная на рисунке 10.17, поможет разобраться с этим кажущимся затруднением. Внутри микросхем, которые имеют как аналоговую, так и цифровую схемы, например АЦП или ЦАП, "земли" обычно разделяются, для предотвращения влияния цифровых сигналов на аналоговую часть. На рис. 10.17. показана упрощенная модель преобразователя. Проектировщик ИС ничего не может поделать с индуктивностью и сопротивлением соединений, идущих от контактов на кристалле к выводам корпуса ИС, только оставить их как есть. Цифровые токи, имеющие резкие перепады, создают напряжение в точке B, которое неизбежно передается в точку A аналоговой схемы через паразитную емкость Cпараз. К тому же неизбежно присутствует паразитная емкость между каждым выводом корпуса ИС, равная приблизительно 0,2пФ. И задача проектировщика ИС - заставить микросхему работать, несмотря на это. Однако для того, чтобы предотвратить дальнейшее влияние, выводы AGND и DGND должны быть соединены с аналоговой заземляющей поверхностью кратчайшим путем. Любой дополнительный импеданс в соединении DGND с "землей" приведет к образованию дополнительного цифрового шума в точке B, что, в свою очередь, наведет дополнительный цифровой шум в аналоговой схеме за счет паразитной емкости. Обратите внимание, что при соединении DGND с цифровой заземляющей поверхностью напряжение шума Vшума будет прикладываться между выводами AGND и DGND, что приведет к неудаче! Обозначение вывода микросхемы как "DGND" говорит о том, что этот вывод связан с цепью заземления цифровой части ИС. Но это не подразумевает, что этот вывод должен быть соединен с цифровым заземлением системы."
  12. Этот эффект был обнаружен в одном из разрабатывавшихся устройств. В документации упоминания об этом я не видел.
  13. Одна из возможных причин: В режиме спячки некоторые порты настроены на ввод. При плавном повышении напряжения питания, на этих выводах длительное время присутствует напряжение, не соответствующее ни "0", ни "1". Т.е. в диапазоне примерно 1...2 Вольта. Это приводит к существенному увеличению тока потребления микроконтроллера. Выход простой: при впадении в спячку такие порты нужно настраивать на вывод, и выводить "0" или "1" в зависимости от подключенных к ним цепей (критерий: отсутствие втекающего/вытекающего тока). Соответственно, после пробуждения, выполнять нормальные настройки. Если внешние цепи не позволяют настраивать порты на вывод в режиме спячки, нужно изменить внешние цепи :)
  14. MSP430 и RTC

    Точность зависит как от кварца, так и от генератора, в котором этот кварц используется. Хорошие кварцы делают многие, в том числе китайцы. Кроме качества кварца другие наиболее важные факторы: правильная разводка платы, и нужное значение нагрузочных емкостей. По этой теме можно почитать документ SLAA322: http://focus.ti.com/lit/an/slaa322b/slaa322b.pdf. Нужно еще обратить внимание на эквивалентное последовательное сопротивление кварца (параграфы 2.2 и 4.2), особенно если предполагается работа устройства в жестких климатических условиях Нагрузочные емкости у контроллера встроенные, но их значение можно выбирать только из фиксированного ряда. К этим емкостям добавляются емкости выводов и проводников печатной платы (обычно эта 2..3 пФ). В сумме должна получиться подходящая для кварца нагрузочная емкость. Еще о начальной точности часового генератора можно почитать SLAA225: http://focus.ti.com/lit/an/slaa225/slaa225.pdf Но на самом деле правильно подобранный кварц и хорошо спроектированная схема/плата могут обеспечить неплохую точность только в узком диапазоне температур (+20…-+30 гр.). Если предполагается работа в широком диапазоне температур, то главным фактором становиться сильная температурная зависимость частоты кварца. Причем частота изменяется в одну и ту же сторону, как при увеличении, так и при уменьшении температуры. Подробнее об этом в тех же SLAA322 или SLAA225. В силу вышесказанного на практике используются разные подходы, в зависимости от ситуации. Если, например, все устройства объединены в сеть, и есть возможность периодически подстраивать внутренние часы, то все сводиться просто к подбору приличного кварца и правильному проектированию платы. Начальную погрешность и температурную зависимость в этом случае можно просто не учитывать. Если же устройство должно длительное время работать автономно, без подстройки часов, то можно озаботиться как настройкой начальной точности, так и периодическим измерением температуры для коррекции хода часов. И конечно, DS3231 или что-то подобное – это хорошее решение для таких случаев. Но, как правило, дорого.
×
×
  • Создать...