SIM800L әдепкі бодтық жылдамдығын өзгертеді

Мен ATMEGA328P-ді ішкі сағатпен (8 МГц) SIM800L модулімен қолданамын. SIM800L әдепкі багының жылдамдығы 115200 боды және оларды бір-бірімен дұрыс айту мүмкін емес. Мен 9600 боду жылдамдығымен жылдам хабарлауға мүмкіндігім болғанымен. Бірақ қазір жаңа SIM800L арқылы алмаймын.

Сұрақ:

SIM800L әдепкі багының жылдамдығын қалай өзгертуге болады? ATmega328P-ны 115,200 боут жылдамдықпен іске қосуға болады ма?

Алдын-ала рақмет!

EDIT:

Мен atmega328p-ді 115200-нің түрлі кристалдарымен жұмыс істей аламын деп білемін, бірақ ішкі кристалды қолдануға болады.

2

5 жауаптар

Адафруттың pdf анықтамасы SIM800 + Series_Serial + Port_Application + Note_V1.01.pdf , SIM800 іске қосылғанда автоматты түрде іске қосылады:

SIM800 сериясы әдепкі бойынша автобудау режимінде жасалған. Autobauding SIM800 сериясына хост құрылғысының жылдамдығын автоматты түрде анықтауға мүмкіндік береді. Қолданбада, хост құрылғысы жылдамдықты SIM800 сериясымен синхрондау керек. Хостинг құрылғысы алдымен «AT» немесе «at» таңбаларын жіберу жылдамдығын синхрондау үшін жіберуі керек. Үй құрылғысы «OK» деп жауап бермейінше, «AT» -ді жіберу ұсынылады, яғни басты құрылғы және SIM800 сериясы дұрыс синхрондалады. Бой жылдамдығын синхрондалғаннан кейін, «AT + IPR» командасын пайдалану ұсынылады. ...

Осылайша, бағдарламалық жасақтамаңызды 9600 бит/с-ге дейін сақтауға болады. Егер сіз осы жылдамдықпен қосылымды қоссаңыз, оны пайдалануды немесе «AT + IPR» арқылы жоғары жиілікті ауыстыруға болады. [Мен default autobauding үнемі қосылып тұрғанын білу үшін, нақты парақты оқымағанмын немесе қандай да бір түрде өшірілуі мүмкін.]

Сериялық деректер bps ұлғайған сайын, қажетті сағаттық дәлдік күшейеді. Бірнеше пайыздық қателіктер 9600 бит/с жылдамдықта болғанда, пайызбен 115200 бит/с-ға қажет болуы мүмкін.

Бірнеше тақталарда RC осцилляторының жиілік қателерін шамамен 2% өлшедім, олар UART жиілігі қаншалықты маңызды? жоғары жылдамдықты сериялық байланысқа мүмкіндік беруі мүмкін немесе жеткіліксіз болуы мүмкін.

Егер сіз ATmega328P-дің RC осциллятор жиілігін өлшей алсаңыз, іске қосу кезінде түзету коэффициентін қолдануға болады. Ерекше парақта (мысалы, Atmel-8271J-AVR-ATmega-Datasheet_11/2015) §9.12.1, OSCCAL - Осцилляторды калибрлеуді тіркеу бөлімін қараңыз.

Сіздің бағдарламаңыз RC осцилляторымен зауыттық мәнді пайдалана отырып іске қосылуы мүмкін, содан кейін өзіңіздің калибрлеу мәніңізді Oscillator Calibration Register-қа жүктей аласыз, ол үшін RC жиілігін 115200 бит/с жылдамдықтағы деректерге арналған етіп жасау үшін қажеттілік бар. Немесе сіз өзіңіздің нөміріңізбен зауыттық мәнді жазып аласыз (EEPROM сақтандырғыш немесе қолтаңба аймағында).

Сурет 32-37, ATmega48PA: Калибрленген 8MHz RC Oscillator Frequency vs. OSCCAL Value , әртүрлі осциллятордың калибрлеу тізілімінің мәндері үшін жиіліктерді көрсетеді. Сағаттық жиіліктерді жақын арада реттеуге болады, бұл сериялық байланыс жақсы жұмыс істеуі керек.

Жоғары ауқымдағы байт мәндері 144-тен 160-ға дейін әдетте шамамен 7,4 МГц-ден 8 МГц-ге дейін (85 ℃) жиілікті жылжытады. Бұл диапазонда әрбір сан сағат жиілігін шамамен 0,5% -ға ауыстырады. Мәліметтер суретін қараңыз. Мысалы, егер 158 мәні шамамен 7820 кГц жиіліктегі RC жиілігі болса, онда 159 мәні RC жиілігін 7860 кГц-ке дейін көтеруі мүмкін.

96-дан 112 аралығындағы төмен ауқымдағы жазбалар шамамен 7.5 МГц-ден 8.5 МГц-ге дейінгі жиіліктерді жылжытады. Бұл жабысқақ, ең жақсы Калибрлеу регистрінің мәнін іздеген кезде, төмен ауқымды және жоғары ауқымдық мәндерді де қажет етеді.

Жоғарыда ұсынылған калибрлеуді қамтамасыз ету үшін, сол кездегі осциллятор жиілігін дәл өлшейтін ebay-дағы арзан цемометрлер (жиілік санауыштары) бар.

2
қосылды

Сіз айтып кеткендей, SIM800L әдепкі багының жылдамдығы - 115200. Осылайша, сіз осы жылдамдықты ардуино жағында орнатуыңыз керек. Иә, ATmega328P-ны 115200 бут жылдамдығымен іске қосуға болады.

SoftwareSerial кітапханасын пайдалана аласыз және өзіңіздің tx және rx түйіндеріңізді анықтап, өзіңіздің талаптарыңызға сәйкес желінің жылдамдығын орнатыңыз.

#include   //SoftwareSerial library
SoftwareSerial mySerial(2,3);//RX, TX for your module

void setup()
{
   mySerial.begin(115200);     //Set your buad rate
}

Сондай-ақ, сіз бұл кітапханасызсыз.

void setup()
{
  Serial.begin(115200);       //Set your baud rate
}
2
қосылды
Кешіріңіз, бірақ дұрыс емес, сіз SIM800-нің жылдамдығын сәйкес AT командасымен, AT + IPR (басқа жауапта айтылғандай) өзгертуге болады.
қосылды автор alancalvitti, көзі
@BenceKaulics Осы ақпарат үшін рахмет.
қосылды автор FirstLastname, көзі

Әдепкі бойынша, әдепкі баг беру жылдамдығы 115200 деп есептемеймін. Әдепкі параметр - autobaud, бұл 115200 буынды қолдамайды. деректер парағынан .

serial port properties

Оны бұрыннан аталған AT + IPR командасымен өзгертуге болады. AT нұсқаулығынан сіз, сондай-ақ, әдепкі параметр - autobaud, сондай-ақ таңдаулы бодтар жылдамдығы.

Ескерту: Пайдаланушы тіркелген жылдамдықты орнату үшін «AT + IPR = x» AT пәрменін қолдана алады және параметр автоматты түрде автоматты түрде жадқа сақталады.

AT+IPR command

Егер сіз 57600-ні қолдансаңыз, сіз бәрібір жақсы боласыз және сізде бұл мән қолдау көрсетілетіндіктен, сіз бау жылдамдығының параметрлерін өзгертуге тура келмейді.

1
қосылды

BOD жылдамдығын 9600-ге SIM800L-ге төмендегі пәрмен арқылы өзгертуге болады:

AT+IPR=9600

Содан кейін оны сақтау үшін (жүктеу циклдерінің арасында), мына пәрменді беріңіз:

AT&W

Сақталған параметрлерді көру үшін келесі пәрменді беріңіз:

AT&V 
0
қосылды

Осы уақытқа дейін оқығандарымнан проблема мынада: 8 МГц осциллятордан 57,600-ден жоғары шегінен тыс өзіндік жылдамдықты алу үшін жақсы бөлгіш жоқ. Ішкі осцилляторды қолдану сонымен қатар температураның өзгеруіне ұшырайды, сондықтан көптеген қосымшаларда да жаман шешім болып көрінеді. Мәселе ол бір MPU-де жұмыс істей алады, бірақ кейінгі емес.

Айтуға келгенімдей, ең жақсы шешім - 7.372800 МГц осцилляторды пайдалану. Бұл процессордың жұмысын біршама баяу жүргізеді, бірақ ол сондай-ақ байт жылдамдығын бөлгіштердің барлық стандартты және танымал бодиттік жылдамдықтар үшін орын алады, яғни кем дегенде 921,000 боутқа жүгіре алуыңыз керек.

Егер кез-келген адам жақсы шешім қабылдаса, мен оны тыңдағым келеді, себебі мен осындай мәселелермен айналысамын, мен түрлі орталарда болатын өндіріске шығуды көздеп отырмын.

0
қосылды