|
1. Ülemiste ja alumiste korruste ühendamine Traadita andurvõrgus peab CC2430 saatma kogutud andmed perearvutile (st PC-le) töötlemiseks ning hostarvuti peab saatma juhtimisinfo CC2430-le. Kõik see on lahutamatult seotud info edastamisega nende kahe vahel. Selles osas õpime, kuidas rakendada jadapordi suhtlust PC ja CC2430 vahel. CC2430 sisaldab kahte jadakommunikatsiooniliidestUSART0jaUSART1, iga seriaalport sisaldab kahte režiimi:UART(asünkroonne) režiim,SPI(sünkroonne) režiim, see osa käsitleb ainult UART režiimi). 2. Seriaalpordi sideeksperiment(1) Sissejuhatus eksperimendileMõista suhtlust arendusplaadi ja arvuti vahel: arvuti saadab CC2430-le teatud stringi ja CC2430 tagastab selle stringi PC-le pärast selle kättesaamist. (2) Eksperimentaalne ettevalmistusEnne koodi kirjutamise alustamist tuleb seadistada riistvaralised võimalused: õige ühendus + USB seriaaldraiveri paigaldamine. Vaja on kahte riistvaraühendust: CC2430 arendusplaadi JTAGi port → silurit → arvuti USB-pordi(Silumiseks ja programmide allalaadimiseks) CC2430 arendusplaadi jadaport → PC USB port(Andmeside jaoks PC ja CC2430 vahel) Seejärel pead paigaldama USB-jadadraiveri (Laadi aadress alla) Andmete saatmiseks seriaalpordile on olemas seriaalpordi silumistööriist (Laadi aadress alla)。 (3) Programmi vooskeem
(4) Eksperimentaalne lähtekood ja analüüs/*
Eksperimentaalne kirjeldus: UART0, baudikiirus 115200bps, PC saadab stringi CC2430-le (lõpeb @ märgiga), CC2430 tagastab stringi pärast selle saamist
*/
#include
Allkirjastamata charrecv_buf[300] = {0};
Allkirjastamata charrecv_count =0;
/*系统时钟初始化
-------------------------------------------------------*/
tühixtal_init(tühi)
{ UNI &= ~0x04; //都上电
samal ajal(! (UNI &0x40)); //晶体振荡器开启且稳定 CLKCON &= ~0x47; Vali 32MHz kristall-ostsillaator UNI |=0x04;
}
/*UART0通信初始化
-------------------------------------------------------*/
tühiUart0Init(Allkirjastamata charStopBits,Allkirjastamata charPariteet)
{ PERCFG&= ~0x01; Vali UART0 esimeseks valikuliseks positsiooniks, st RXD P0.2-ks ja TXD P0.3-ks P0SEL |= 0x0C; //初始化UART0端口,设置P0.2与P0.3为外部设备IO口
U0CSR =0xC0; Sea UART-režiimile ja luba vastuvõtja
U0GCR = 11; U0BAUD = 216; Sea UART0 baudi kiirus 115200 bps peale, miks see on 216 ja 11, palun vaata CC2430 Hiina käsiraamatut
U0UCR |= StopBits| võrdsus; //设置停止位与奇偶校验
}
/*UART0发送数据
-------------------------------------------------------*/
tühi Uart0Send(Allkirjastamata charandmed)
{
samal ajal(U0CSR&0x01); //等待UART空闲时发送数据 U0DBUF = andmed;
}
/*UART0发送字符串
-------------------------------------------------------*/
tühiUart0SendString(Allkirjastamata char*s)
{
samal ajal(*s !=0) //依次发送字符串s中的每个字符 Uart0Send(*s++);
}
/*UART0接受数据
-------------------------------------------------------*/
Allkirjastamata charUart0Receive(tühi)
{
Allkirjastamata charandmed;
samal ajal(! (U0CSR&0x04));//查询是否收到数据,否则继续等待 data=U0DBUF; //提取接收到的数据
Tagasitulekandmed;
}
/*主函数
-------------------------------------------------------*/
tühipea(tühi)
{
Allkirjastamata chari,b;
xtal_init();
Uart0Init(0x00,0x00); //初始化UART0,设置1个停止位,无奇偶校验 Uart0SendString("Palun, sisendstring lõppes '@'-ga!");
recv_count =0;
samal ajal(1) {
samal ajal(1) { b = Uart0Receive(); UART
kui(b=='@')paus; Kui '@' vastu võetakse, hüppab see ahelast välja ja väljastab stringi
recv_buf[recv_count] = b; Kui see ei ole '@', jätkake märkide lisamist tähemärkide massiivile recv_buf[] recv_count++; }
for(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" väljundstring[="" i][="" color] Uart0Send(recv_buf);
Uart0SendString(""); recv_count =0; //重置 }
}
Esiteks seadistage USART0-le vastav I/O port: edastage paarPECFRG.0Sea UART0 valikuliseks positsiooniks 1, st P0.2 RXD jaoks ja P0.3 TXD jaoks. Seejärel seadista P0.2 ja P0.3 välise seadme I/O-ks. Seejärel vali UART-režiim ja luba vastuvõtja. Seejärel seadista USART0 parameetrid: baudi kiirus 115200, pariteeti puudub ja stoppbitt 1. Seejärel saada arvutile string: Please Input string, mis lõpeb'@'! , ja siis kasuta while(1), et püüda iga tegelane kätte saada. Kui see tegelane seda ei tee'@', see tähendab, et sisend ei ole täielik ja jätkab selle märgi lisamist tähemärgimassiivi recv_buf; See tegelane on täpselt õige'@', sisend on lõpetatud, seega saadetakse tsükkel PC-le, et iga recv_buf tegelane saadetaks PC-le, samal ajal kui recv_count lähtestatakse. (5) Eksperimentaalsed tulemusedEsiteks lõpeta riistvaraühendus, ava seriaalpordi silumistööriist ja seadista parameetrid allpool näidatud:
Klõpsa "Open Serial Port", alusta IAR silumist, lase programmil käivituda ja ootav string ilmub seriaalpordi silumistööriista vastuvõtukastis:
Seejärel sisesta "Hello" saatmise tekstikasti seriaalipordi silumistööriista alla, nagu allpool näidatud:
Pärast "Saada" klõpsamist võid imestada, miks CC2430 ei tagasta seda, mida sa kirjutasid, sest sa ei lõpetanud @. Kirjutame uuesti "Zigbee!@", klõpsame "Saada" ja tulemus näeb välja selline:
Oodatud sisu "Tere, Zigbee!" ilmub. See on läbi! See on eksperimendi lõpp~ 3. KokkuvõteSee artikkel kirjeldab suhtlust CC2430 arendusplaadi ja hostarvuti vahel. Nüüd, kui meil on jadakommunikatsiooni põhialused, õpime järgmises osas ADC (analoog-digitaalne konverteerimine) ühe proovivõtu kohta. ADC abil saame koguda temperatuurianduri väärtuse arendusplaadil ja saata temperatuuri väärtuse arvutile läbi seriaalpordi, et seda kuvada.
|