- СТМ32Ф103Ц8 Преглед И2Ц
- И2Ц пинови у СТМ32Ф103Ц8
- И2Ц пинови у Ардуину
- Компоненте потребне
- Кружни дијаграм и везе
- И2Ц програмирање у СТМ32
- Објашњење главног програмирања СТМ32
- Објашњење програмирања за славе Ардуино
У нашим претходним водичима научили смо о СПИ и И2Ц комуникацији између две Ардуино плоче. У овом упутству ћемо заменити једну Ардуино плочу плочом Блуе Пилл која је СТМ32Ф103Ц8 и комуницираћемо са Ардуино плочом помоћу И2Ц магистрале.
СТМ32 има више карактеристика од Ардуино плоче. Дакле, било би сјајно научити о комуникацији између СТМ32 и Ардуина помоћу СПИ и И2Ц магистрале. У овом упутству ћемо користити И2Ц магистралу за комуникацију између Ардуина и СТМ32Ф103Ц8, а о СПИ магистрали ћемо сазнати у следећем упутству. Да бисте сазнали више о СТМ32 плочи, погледајте друге СТМ32 пројекте.
СТМ32Ф103Ц8 Преглед И2Ц
Упоређујући И2Ц (Интер интегрисани кругови) у плочи СТМ32Ф103Ц8 Блуе Пилл са Ардуино Уно, видећемо да Ардуино има АТМЕГА328 микроконтролер, а СТМ32Ф103Ц8 АРМ Цортек-М3. СТМ32 има две И2Ц магистрале, док Ардуино Уно има само једну И2Ц магистралу, а СТМ32 је бржи од Ардуина.
Да бисте сазнали више о И2Ц комуникацији, погледајте наше претходне чланке
- Како се користи И2Ц у Ардуину: Комуникација између две Ардуино плоче
- И2Ц комуникација са ПИЦ микроконтролером ПИЦ16Ф877
- Повезивање 16Кс2 ЛЦД-а са ЕСП32 помоћу И2Ц
- И2Ц комуникација са МСП430 Лаунцхпад
- Повезивање ЛЦД-а са НодеМЦУ без употребе И2Ц
- Како се рукује вишеструким комуникацијама (И2Ц СПИ УАРТ) у једном програму ардуина
И2Ц пинови у СТМ32Ф103Ц8
СДА: ПБ7 или ПБ9, ПБ11.
СЦЛ: ПБ6 или ПБ8, ПБ10.
И2Ц пинови у Ардуину
СДА: А4 пин
СЦЛ: А5 пин
Компоненте потребне
- СТМ32Ф103Ц8
- Ардуино Уно
- ЛЕД (2 бр.)
- Тастер (2 бр.)
- Отпорници (4 бр.)
- Бреадбоард
- Повезивање жица
Кружни дијаграм и везе
Следећа табела приказује везу између СТМ32 Блуе Пилл и Ардуино Уно за коришћење И2Ц магистрале. Потребне су само две жице.
СТМ32Ф103Ц8 |
Ардуино |
Пин Десцриптион |
Б7 |
А4 |
СДА |
Б6 |
А5 |
СЦЛ |
ГНД |
ГНД |
Приземље |
Важно
- Не заборавите да повежете Ардуино ГНД и СТМ32Ф103Ц8 ГНД заједно.
- Затим повежите отпорник за повлачење од 10 к на игле тастера на обе плоче одвојено.
У овом упутству за СТМ32 И2Ц конфигурисаћемо СТМ32Ф103Ц8 као мастер, а Ардуино као славе. Обе плоче су посебно причвршћене ЛЕД-ом и дугметом.
Да бисмо демонстрирали И2Ц комуникацију у СТМ32, контролирамо мастер СТМ32 ЛЕД помоћу вредности подређеног Ардуино дугмета и контролирамо славе Ардуино ЛЕД помоћу главне СТМ32Ф103Ц8 вредности дугмета. Те вредности се шаљу преко И2Ц комуникационе магистрале.
И2Ц програмирање у СТМ32
Програмирање је слично Ардуино коду. Исти
Овај водич има два програма, један за мастер СТМ32 и други за славе Ардуино. Комплетни програми за обе стране дати су на крају овог пројекта са демонстрацијским видео записом.
Објашњење главног програмирања СТМ32
У Мастер СТМ32 да видимо шта се дешава:
1. Пре свега, у СТМ32Ф103Ц8 морамо да укључимо жичану библиотеку и софтвире библиотеку за коришћење И2Ц комуникационих функција.
#инцлуде
2. У воид подешавању ()
- Почињемо серијску комуникацију брзином преноса 9600.
Сериал.бегин (9600);
- Даље започињемо И2Ц комуникацију на пину (Б6, Б7)
Вире.бегин ();
3. Ин Воид лооп ()
- Прво добијамо податке из подређеног Ардуина, па користимо рекуестФром () са подређеном адресом 8 и захтевамо један бајт.
Вире.рекуестФром (8,1);
Примљена вредност се чита помоћу Вире.реад ()
бајт а = Вире.реад ();
- У зависности од добијених вредности од роба мастер ЛЕД лампица укључи или искључи помоћу дигиталврите на пин ПА1, као и серијски штампање се користи за штампање вредност у серијској монитору
иф (а == 1) { дигиталВрите (ЛЕД, ВИСОКО); Сериал.принтлн („Главни ЛЕД укључен“); } елсе { дигиталВрите (ЛЕД, ЛОВ); Сериал.принтлн („Мастер ЛЕД ОФФ“); }
- Даље морамо прочитати статус пина ПА0 који је главни тастер СТМ32.
инт пинвалуе = дигиталРеад (копча);
- Затим пошаљите вредност пина у складу са логиком, па користимо услов иф , а затим започињемо пренос са славе ардуином са 8 као адресом, а затим напишемо вредност према улазној вредности дугмета.
иф (пинвалуе == ХИГХ) { к = 1; } остало { к = 0; } Вире.бегинТрансмиссион (8); Вире.врите (к); Вире.ендТрансмиссион ();
Објашњење програмирања за славе Ардуино
1. Пре свега морамо укључити Вире књижницу за коришћење И2Ц комуникационих функција.
#инцлуде
2. У воид подешавању ()
- Почињемо серијску комуникацију брзином преноса 9600.
Сериал.бегин (9600);
- Следеће покрените И2Ц комуникацију на пину (А4, А5) са славе адресом као 8. Овде је важно навести славе адресу.
Вире.бегин (8);
Даље морамо позвати функцију Вире.онРецеиве када Славе прими вредност од мастер-а, а Вире.онРекуест позив када Мастер захтева вредност од Славе-а.
Вире.онРецеиве (рецеивеЕвент); Вире.онРекуест (рекуестЕвент);
3. Даље имамо две функције, једну за догађај захтева и једну за догађај пријема
За захтев Догађај
Када мастер СТМ32 затражи вредност од помоћног уређаја, извршиће се ова функција. Ова функција узима улазну вредност са притиснутог тастера Славе Ардуино и шаље бајт (1 или 0) главном СТМ32 према вредности дугмета помоћу Вире.врите ().
воид рекуестЕвент () { инт валуе = дигиталРеад (буттонпин); ако (вредност == ВИСОКО) { к = 1; } остало { к = 0; } Вире.врите (к); }
За пријемни догађај
Када Мастер пошаље податке славе са славе адресом (8), ова функција ће се извршити. Ова функција чита примљену вредност од мастер-а и меморише у променљиву бајта типа, а затим користи иф логику за укључивање или искључивање славе ЛЕД-а у зависности од примљене вредности. Ако је примљена вредност 1, ЛЕД се укључује, а за 0 ЛЕД искључује.
воид рецеивеЕвент (инт ховМани) { бајт а = Вире.реад (); иф (а == 1) { дигиталВрите (ЛЕД, ВИСОКО); Сериал.принтлн („Славе ЛЕД ОН“); } елсе { дигиталВрите (ЛЕД, ЛОВ); Сериал.принтлн („Славе ЛЕД ОФФ“); } кашњење (500); }
Оутпут
1. Када притиснемо тастер на Мастер СТМ32, ЛЕД диода повезана на Славе Ардионо се укључује (бела).
2. Сада када притиснемо дугме на подређеној страни, ЛЕД спојена на Мастер се укључује (црвена), а када се дугме отпусти, искључује се.
3. Када се истовремено притисну оба тастера, истовремено обе ЛЕД лампице засветле и остају УКЉУЧЕНЕ све док се тастери не притисну
Дакле, овако се одвија И2Ц комуникација у СТМ32. Сада можете повезати било који И2Ц сензор са СТМ32 плочом.
Комплетно кодирање Мастер СТМ32 и Славе Ардуино дато је у наставку са демонстрацијским видео записом