Минимальная скорость ATMega328 с UART

Я рассматриваю разработку проекта с низким энергопотреблением, в котором ATMega328 будет работать на низкой скорости для снижения энергопотребления.

Текущий план состоит в том, чтобы подключить UART к приемнику RF Link для связи на скорости 1200 бод.

Однако мне интересно, какова минимальная скорость, на которой я могу запустить ATMega328 и при этом работать UART со скоростью 1200 бод. Достаточно ли 1МГц?

Ответы (2)

Часы UART работают со скоростью, в 16 раз превышающей скорость передачи данных. Таким образом, вы могли бы уйти с 19,2 кГц. 1 МГц будет нормально.

Чаще всего вы будете работать с тактовой частотой, которая дает удобный делитель для генерирования тактовой частоты передачи UART и все еще достаточно быстрее для любой другой обработки, которую вам нужно выполнить. Каждый раз, когда байт или пакет передается через UART, переводите ЦП в режим пониженного энергопотребления и снова просыпайтесь по прерыванию, когда будет готово больше данных.

Я думаю, что предложение «Часы UART работают со скоростью, в 16 раз превышающей скорость передачи данных» немного вводит в заблуждение. Генератор скорости передачи данных USART работает на тактовой частоте системы/генератора и предварительно масштабируется значением UBRR. Кроме того, это зависит от режима работы. Коэффициент 16 применяется к «асинхронному нормальному режиму».

По моим наблюдениям, нецелесообразно запускать ATMega328p на частоте ниже 1 МГц для экономии энергии (поскольку вам потребуется больше времени для завершения расчета). Однако снижение напряжения приведет к высокой экономии энергии. При работе на частоте 1 МГц и 1,8 В потребляется всего 1% энергии при работе на частоте 16 МГц и 5 В. Я сделал эту диаграмму энергопотребления ATMega328

Согласно этому калькулятору AVR UART , если вы используете AVR на частоте 1 МГц (скорость по умолчанию без внешнего кристалла), вы можете использовать UART до 4800