- Основи УАРТ комуникације
- Захтеви и подешавање хардвера
- Кружна шема за Нувотон Н76Е003 УАРТ комуникацију
- УАРТ пинови на микроконтролеру Нувотон Н76Е003
- УАРТ региструје у микроконтролеру Нувотон Н76Е003
- УАРТ начини рада у Н76Е003
- Програмирање Нувотон Н76Е003 за УАРТ комуникацију
УАРТ је скраћеница од Универзални асинхрони пријемник / предајник и корисна је хардверска карактеристика у било којој јединици микроконтролера. Микроконтролер треба да прима податке, обрађује их и шаље на друге уређаје. У микроконтролеру су доступни различити типови комуникационих протокола, међутим, УАРТ је најчешће коришћен међу осталим комуникацијским протоколима попут СПИ и И2Ц. Ако неко треба да прима или преноси податке серијски, УАРТ је увек најједноставнија и најчешћа опција. Предност УАРТ-а је у томе што су за пренос података између уређаја потребне само две жице. Настављајући са нашим упутством за Нувотон микроконтролер, у овом чланку ћемо научити како да изведемо серијску комуникацију помоћу микроконтролера Н76Е003.
Основи УАРТ комуникације
Сада, пошто знамо шта је УАРТ, важно је знати повезане параметре УАРТ-а.
Два УАРТ уређаја примају и преносе податке на истој фреквенцији. Када пријемни УАРТ уређај детектује стартни бит, почиње да чита долазне битове на одређеној фреквенцији познатој као брзина преноса. Брзина преноса је важна ствар за УАРТ комуникацију и користи се за мерење брзине преноса података у битовима у секунди (бпс). Ова брзина преноса података, за пренос и пријем, мора бити на истој брзини преноса. Разлика брзине преноса података између предајног и пријемног УАРТ-а може бити само око 10% пре него што се временско подешавање битова превише удаљи. Најпопуларније брзине преноса су 4800, 9600, 115200 бпс, итд. Раније смо користили УАРТ комуникацију и у многим другим микроконтролерима који су наведени у наставку.
- УАРТ Комуникација између АТмега8 и Ардуино Уно
- УАРТ комуникација између два АТмега8 микроконтролера
- УАРТ комуникација помоћу ПИЦ микроконтролера
- УАРТ комуникација на СТМ8С микроконтролеру
Н76Е003 има два УАРТ-а - УАРТ0 и УАРТ1. У овом упутству користићемо УАРТ периферну јединицу на микроконтролеру Н76Е003. Не трошећи много времена, хајде да проценимо какву врсту хардверског подешавања захтевамо за ову апликацију.
Захтеви и подешавање хардвера
Главна компонента која је потребна за овај пројекат је претварачки модул УСБ у УАРТ или ТТЛ који ће учинити потребан интерфејс између рачунара или лаптопа са модулом микроконтролера. За овај пројекат користићемо модул УСБ то УАРТ заснован на ЦП2102 који је приказан у наставку.
Да не помињемо, осим горње компоненте, потребан нам је развојни одбор заснован на микроконтролеру Н76Е003, као и Ну-Линк програмер. Додатна јединица напајања од 5 В може бити потребна ако се програмер не користи као извор напајања.
Кружна шема за Нувотон Н76Е003 УАРТ комуникацију
Као што можемо видети у доњој шеми развојне плоче, други и трећи пин јединице микроконтролера се користе као УАРТ0 Тк односно Рк. Крајње лево приказана је веза са програмским интерфејсом.
УАРТ пинови на микроконтролеру Нувотон Н76Е003
Н76Е003 има 20 пинова од којих се 4 пина могу користити за УАРТ комуникацију. На доњој слици су приказане УАРТ игле означене црвеним квадратним оквиром (Рк) и плавим квадратним оквиром (Тк).
За УАРТ0, пин 2 и 3 се користе за УАРТ комуникацију, а за УАРТ1, пин 8 и пин 18 се користе за комуникацију.
УАРТ региструје у микроконтролеру Нувотон Н76Е003
Н76Е003 има два побољшана фулл-дуплек УАРТ-а са аутоматским препознавањем адреса и откривањем грешака у кадрирању - УАРТ0 и УАРТ1. Ова два УАРТ-а се контролишу помоћу регистара категорисаних у два различита УАРТ-а. Постоје два пара РКС и ТКС пинова доступна у Н76Е003 за УАРТ операције. Стога је први корак одабир жељеног УАРТ порта за рад.
У овом упутству ћемо користити УАРТ0, тако да ће конфигурација бити приказана само за УАРТ0. УАРТ1 ће имати исту конфигурацију, али ће регистри бити различити.
Након избора једног УАРТ-а (у овом случају УАРТ0), И / О пинови који су потребни за РКС и ТКС комуникацију морају бити конфигурисани као улаз и излаз. РКС пин УАРТ0 је пин 3 микроконтролера који је Порт 0.7. Будући да је ово пријемни пин серијског порта, порт 0.7 мора бити постављен као улаз. С друге стране, порт 0.6 који је други пин микроконтролера је преносни или излазни пин. Треба га поставити као квази двосмерни режим. Они се могу одабрати помоћу регистра ПкМ1 и ПкМ2. Ова два регистра постављају И / О режиме где к представља број порта (на пример, Порт П1.0 регистар ће бити П1М1 и П1М2, за П3.0 то ће бити П3М1 и П3М2 итд.) Конфигурација може види се на доњој слици-
УАРТ начини рада у Н76Е003
Затим је следећи корак одређивање начина рада УАРТ-а. Два УАРТ-а су могла да раде у 4 режима. Режими су-
Као што видимо, СМ0 и СМ1 (7. и 6. бит СЦОН регистра) одабиру начин рада УАРТ-а. Режим 0 је синхрони рад, а остала три режима су асинхрона. Међутим, генератор брзине преноса и битови оквира разликују се за сваки режим серијског порта. Било који од начина може бити изабран према захтеву апликације, а то је исто и за УАРТ1. За ово упутство се користи 10-битна операција са брзином преливања тајмера 3 подељена са 32 или 16.
Сада је време да добијете информације и конфигуришете СЦОН регистар (СЦОН_1 за УАРТ1) за УАРТ0.
Шести и седми бит ће поставити УАРТ режим као што је претходно речено. Бит 5 се користи за подешавање мултипроцесорског режима комуникације да омогући опције. Међутим, поступак зависи од тога који је УАРТ режим изабран. Осим ових, бит РЕН ће бити постављен на 1 да омогући пријем, а ТИ застава ће бити постављена на 1 да би се користила функција принтф уместо прилагођене функције преноса УАРТ0.
Следећи важан регистар је регистар за контролу напајања (ПЦОН) (тајмер 3 бита 7 и 6 за УАРТ1). Ако су вам непознати тајмери, погледајте водич за тајмер Нувотон Н76Е003 да бисте разумели како се користе тајмери на микроконтролеру Н76Е003.
СМОД бит је важан за одабир двоструке брзине пријеноса у режиму УАРТ0 1. Сада, док користимо тајмер 3, контролни регистар Тимер 3 Т3ЦОН мора бити конфигурисан. Међутим, бит 7. и 6. резервисани су за поставку двоструке брзине преноса података за УАРТ1.
А вредност скалера за унапред скалирање 3 -
5. битни БРЦК ће поставити Тајмер 3 као извор такта брзине преноса за УАРТ1. Сада је техничком листу Н76Е003 дата формула за израчунавање жељене брзине пријеноса података као и вриједност поставке узорка за тајмер 3 (16-битни) високи и ниски регистар.
Узорак вредности за извор такта од 16 МХз
Стога је потребно да брзина преноса података буде конфигурисана у регистру Тајмер 3 користећи горњу формулу. За наш случај то ће бити Формула 4. Након тога, покретање Тајмера 3 постављањем ТР3 регистра на 1 завршиће УАРТ0 Тајмер иницијализације 3. Да бисте примили и послали УАРТ0 податке да бисте користили доњи регистар-
Регистар ТУПКБ аутоматски бива подешен за примање и преношење. Да бисте примили податке из УАРТ-а, сачекајте да РИ заставица постави 1 и прочитајте СБУФ регистар и пошаљите податке УАРТ0, пошаљите податке СБУФ-у и сачекајте да ТИ заставица добије 1 да потврди успешан пренос података.
Програмирање Нувотон Н76Е003 за УАРТ комуникацију
Део за кодирање је једноставан, а комплетни код који се користи у овом упутству налази се на дну ове странице. Објашњење кода је следеће, УАРТ0 се иницијализује брзином од 9600 бауд података користећи изјаву у главној функцији-
ИнитиалУАРТ0_Тимер3 (9600);
Горња функција је дефинисана у датотеци цоммон.ц и она конфигурише УАРТ0 са Тајмером 3 као извором брзине преноса, у режиму 1, и са брзином преноса од 9600. Дефиниција функције је следећа-
воид ИнитиалУАРТ0_Тимер3 (УИНТ32 у32Баудрате) // користи тимер3 као генератор брзине { П06_Куаси_Моде; // Постављање УАРТ пина као квази режима за пренос П07_Инпут_Моде; // Постављање УАРТ пина као начина улаза за примање СЦОН = 0к50; // УАРТ0 Моде1, РЕН = 1, ТИ = 1 сет_СМОД; // УАРТ0 Доубле Рате Енабле Т3ЦОН & = 0кФ8; // Т3ПС2 = 0, Т3ПС1 = 0, Т3ПС0 = 0 (скала = 1) сет_БРЦК; // сат такта брзине преноса УАРТ0 = Тимер3 # ифдеф ФОСЦ_160000 РХ3 = ХИБИТЕ (65536 - (1000000 / у32Баудрате) -1); / * 16 МХз * / РЛ3 = ЛОБИТЕ (65536 - (1000000 / у32Баудрате) -1); / * 16 МХз * / # ендиф # ифдеф ФОСЦ_166000 РХ3 = ХИБИТЕ (65536 - (1037500 / у32Баудрате)); /*16,6 МХз * / РЛ3 = ЛОБИТЕ (65536 - (1037500 / у32Баудрате)); /*16,6 МХз * / #ендиф сет_ТР3; // Окидач Тимер3 сет_ТИ; // За функцију принтф мора се поставити ТИ = 1 }
Декларација се врши корак по корак како је претходно речено и регистри су конфигурисани у складу с тим. Међутим, у БСП библиотеци Н76Е003 постоји грешка која је уместо П07_Инпут_Моде; постоји П07_Куаси_Моде . Због тога функција УАРТ пријема неће радити.
Брзина преноса података је такође конфигурисана према уносу брзине преноса података и користећи формулу наведену у техничком листу. Сада се у главној функцији или вхиле петљи користи функција принтф. Да бисте користили функцију принтф , ТИ треба поставити на 1. Осим тога, у вхиле петљи се користи кућиште прекидача и према примљеним УАРТ подацима, вредност се исписује.
вхиле (1) { принтф ("\ р \ нПритисните 1 или притисните 2 или притисните 3 или притисните 4"); опер = Примање_податка_од_УАРТ0 (); прекидач (опер) { случај '1': принтф ("\ р \ н1 је притиснут"); пауза; случај '2': принтф ("\ р \ н2 је притиснут"); пауза; случај '3': принтф ("\ р \ н3 је притиснут"); пауза; случај '4': принтф ("\ р \ н4 је притиснут"); пауза; подразумевано: принтф ("\ р \ нПогрешан тастер притиснут"); } Тимер0_Делаи1мс (300); } }
Па, за УАРТ0 примите Рецеиве_Дата_Фром_УАРТ0 (); функција се користи. Такође је дефинисано у библиотеци цоммон.ц .
УИНТ8 Рецеиве_Дата_Фром_УАРТ0 (воид) { УИНТ8 ц; док (! РИ); ц = СБУФ; РИ = 0; повратак (ц); }
Сачекаће да РИ заставица добије 1 и врати податке о пријему користећи променљиву ц.
Трептање кода и резултата
Код је вратио 0 упозорења и 0 грешака и трептао је помоћу подразумеване методе трептања од стране Кеила. Ако нисте сигурни како да компајлирате и отпремите код, погледајте чланак о почетку рада са нувотон-ом. Редови у наставку потврђују да је наш код успешно отпремљен.
Поновна изградња започета: Пројекат: принтф_УАРТ0 Обнова циљаног 'ГПИО' компајлирање ПУТЦХАР.Ц… компајлирање Принт_УАРТ0.Ц… компајлирање Делаи.ц… компајлирање Цоммон.ц… састављање СТАРТУП.А51 … повезивање… Величина програма: подаци = 54,2 кдата = 0 цоде = 2341 стварање хексадецималне датотеке из „. \ Оутпут \ Принтф_УАРТ1"… ". \ Оутпут \ Принтф_УАРТ1" - 0 Грешке, 0 Упозорења. Време израде протекло: 00:00:02 Учитајте "Г: \\ н76Е003 \\ софтваре \\ Н76Е003_БСП_Кеил_Ц51_В1.0.6 \\ Сампле_Цоде \\ УАРТ0_Принтф \\ Оутпут \\ Принтф_УАРТ1" Фласх Ерасе Готово. Фласх писање готово: програмирано 2341 бајт. Фласх Верифи Готово: верификовано 2341 бајт. Фласх Лоад је завршен у 15:48:08
Развојна плоча је повезана на извор напајања преко програмера и лаптопа помоћу модула УСБ то УАРТ. За приказ или слање УАРТ података потребан је софтвер за серијски монитор. За овај процес користим термин тера.
Као што видите на доњој слици, успео сам да прикажем низове послате са нашег нувотон контролера и прикажем их на софтверу серијског монитора. Такође је могао да чита вредности са серијског монитора.
Можете погледати видео доле повезан за потпуну демонстрацију овог водича. Надам се да сте уживали у чланку и научили нешто корисно. Ако имате било каквих питања, можете их оставити у одељку за коментаре испод или користити наше форуме да бисте поставили друга техничка питања.