SIM800L хуткасць перадачы змены па змаўчанні

Я выкарыстоўваю ATmega328P з ўнутранымі гадзінамі (8 МГц) з модулем SIM800L. Хуткасць перадачы дадзеных па змаўчанні SIM800L з'яўляецца 115,200 бод, і я не магу прымусіць іх казаць адзін з адным правільна. Хоць я быў у стане прымусіць іх казаць вельмі лёгка з хуткасцю перадачы дадзеных 9600 бод. Але цяпер, з новым SIM800L я не магу.

пытанне:

Як змяніць хуткасць перадачы дадзеных па змаўчанні для SIM800L? Ці можна запусціць ATmega328P пры хуткасці перадачы 115200 бод?

Загадзя дзякую!

EDIT:

Я ведаю, што я магу запусціць ATmega328P пры хуткасці перадачы 115200 з розным крышталем, але можна да яго з дапамогай ўнутранага крышталя.

2

5 адказы

Згодна Pdf specsheet Adafruit ў SIM800 + Series_Serial + Port_Application + Note_V1.01.pdf , то SIM800 наладжаны для аўтаматычнага бод, калі яна пачынаецца:

<�Р> SIM800 серыя распрацавана ў рэжыме Аўтавылучэнне па змаўчанні. Аўтавылучэнне дазваляе серыі SIM800 аўтаматычна вызначаць хуткасць перадачы дадзеных хост-прылады. У дадатку, якое вядзе прылада павінна сінхранізаваць хуткасць перадачы дадзеных з SIM800 серыі. Хост прылады павінны ў першую чаргу адправіць сімвалы «AT» або «у», каб сінхранізаваць хуткасць перадачы дадзеных. Рэкамендуецца адправіць «AT», пакуль вядучае прылада не прымае «OK» адказ, які азначае, што прылада хаста і SIM800 серыі правільна сінхранізаваныя. Пасля таго, як хуткасць перадачы дадзеных сінхранізуецца, прапануецца выкарыстоўваць AT каманды «AT + IPR», каб усталяваць хуткасць перадачы SIM800 серыі па хуткасці перадачы дадзеных хаста. ...

Такім чынам, вы можаце арганізаваць сваё праграмнае забеспячэнне, каб працягваць спрабаваць на 9600 біт у секунду. Калі вы атрымліваеце КІ злучэння ў такім выпадку, вы можаце працягваць выкарыстоўваць яго або перайсці на больш высокую частату, з дапамогай «AT + IPR». [Я не чытаў спецыфікацыю дастаткова, каб ведаць, што ці то па змаўчанні Аўтавылучэнне заўсёды ўключаны, ці можа быць выключаны нейкім чынам.]

Як бод серыйных дадзеных ідзе ўверх, патрабаваная дакладнасць гадзін становіцца больш жорсткім. Калі пара адсоткаў памылкі можа быць у парадку з хуткасцю 9600 біт, пад працэнт, верагодна, неабходна на 115200 біт.

На некалькіх дошках Я вымераў памылкі частоты RC генератара каля 2%, што ў адпаведнасці з пытаннем Наколькі крытычная з'яўляюцца UART частоты? можа ці не можа быць дастаткова, каб забяспечыць высокую хуткасць паслядоўнай перадачы дадзеных.

Калі вы можаце вымераць частату генератара RC ATmega328P, вы можаце затым прымяніць папраўчы каэфіцыент пры запуску. У спецыфікацыі (напрыклад, Atmel-8271J-AVR-ATmega-Datasheet_11/2015), см §9.12.1, OSCCAL - Асцылятар каліброўкі рэгістр .

Ваш кліент можа пачаць з RC генератарам, выкарыстоўваючы завадское значэнне, а затым можна загрузіць ўласнае значэнне каліброўкі ў асцылятар каліброўка рэгістр зруху частоты для RC па меры неабходнасці, каб зрабіць працу платы ОК для 115200 бітых паслядоўных дадзеных. Ці, вы можаце перапісаць (у EEPROM або засцерагальнік для подпісу) завадское значэнне з вашым уласным нумарам.

Малюнак 32-37, ATmega48PA: калібраваны 8MHz RC Oscillator Frequency vs. OSCCAL Value , паказаны тыповыя частоты для розных значэнняў Асцылятар каліброўкі рэгістра. Можна тактавай частатой мелодыі дастаткова блізка, што паслядоўная сувязь павінна працаваць нармальна.

Высакахуткасны дыяпазон байтаў значэнняў 144 па 160, як правіла, перамяшчаць частату ад каля 7,4 МГц да 8 Мгц (пры 85 ° C). У гэтым дыяпазоне, кожны адлік зрушвае тактавую частату прыкладна на 0,5%. Глядзіце малюнак для дэталяў. Напрыклад, калі значэнне 158 дае частату RC каля 7820 кГц, то шануе 159 можа падняць частату RC да 7860 кГц.

Нізкі дыяпазон запісу 96 праз 112 частоты перамяшчэння ад каля 7,5 МГц да 8,5 Мгц. Гэта перакрыцце робіць неабходным, каб паспрабаваць як нізкі дыяпазон і высокія значэннямі далёкасці пры пошуку найлепшага значэння каліброўкі рэгістра.

Звярніце ўвагу, што ёсць недарагія частатамер (частотныя лічыльнікі) на Ebay, якія могуць вымяраць частоты генератара досыць сапраўды, каб даць магчымасць каліброўкі прапанаваную вышэй.

2
дададзена

Як вы кажаце, SIM800L хуткасць перадачы дадзеных па змаўчанні 115200. Такім чынам, вы павінны ўсталяваць, што хуткасць перадачы дадзеных на Arduino баку. І так, можна запусціць ATmega328P з хуткасцю перадачы дадзеных 115200 бод.

Вы можаце выкарыстоўваць бібліятэку SoftwareSerial і вызначыць свой уласны ПРД і ПРМ шпільку і ўсталяваць хуткасць перадачы дадзеных у адпаведнасці з вашымі патрабаваннямі.

#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 каманды «AT + IPR = х», каб усталяваць фіксаваную хуткасць перадачы дадзеных і налады будуць захаваны ў энерганезалежнай флэш-памяці аўтаматычна. </Р>

AT+IPR command

Калі вы выкарыстоўваеце 57600 вы, верагодна, добра, і вы нават не давядзецца мяняць налады хуткасці перадачы дадзеных, як падтрымліваецца гэта значэнне.

1
дададзена

Вы можаце змяніць хуткасць перадачы дадзеных да 9600 на SIM800L з дапамогай каманды:

AT+IPR=9600

Тады, каб захаваць гэта (доўжыцца паміж цыкла загрузкі), дайце каманду:

AT&W

Каб убачыць захаваныя налады, дайце наступную каманду:

AT&V 
0
дададзена

З таго, што я чытаў да гэтага часу, праблема заключаецца ў тым, што няма нічога добрага дзельніка ад генератара на 8 МГц, каб атрымаць у межах некандыцыйнай хуткасці перадачы вышэй 57600. Выкарыстоўваючы ўнутраны генератар, таксама схільныя варыяцыям з тэмпературай, так што, як уяўляецца, дрэннае рашэнне, а таксама ў шматлікіх прыкладаннях. Праблема ў тым, што яна можа працаваць на адным MPU, але не з наступнага.

Наколькі я магу сказаць, лепшым рашэннем з'яўляецца выкарыстанне 7.372800 МГц асцылятар с. У выніку працэсар працуе трохі павольней, але гэта таксама прыводзіць да дзельнікі хуткасці перадачы з'яўляецца спот-амаль усе стандартныя і папулярныя хуткасці перадачы дадзеных, гэта значыць вы павінны быць у стане працаваць, па меншай меры, 921000 бод.

Калі ў каго ёсць лепшае рашэнне, я хацеў бы пачуць, як я маю справу з падобным пытаннем у чымсьці я маю намер прыняць у вытворчасць, якія будуць знаходзіцца ў розных асяроддзях.

0
дададзена