| I. Mengisi kekosongan Dalam jaringan sensor nirkabel, CC2430 perlu mengirim data yang dikumpulkan ke komputer host (misalnya PC) untuk diproses, dan pada saat yang sama komputer host perlu mengirim informasi kontrol ke CC2430. Semua ini tidak dapat dipisahkan dari transfer informasi di antara keduanya. Pada bagian ini, kita akan mempelajari cara mengimplementasikan komunikasi serial antara PC dan CC2430. CC2430 memiliki dua antarmuka komunikasi serial yaitu USART0 dan USART1, masing-masing port serial memiliki dua mode: mode UART (asinkron) dan mode SPI (sinkron), bagian ini hanya membahas mode UART). Kedua, percobaan komunikasi port serial(1) Pengantar percobaan Mencapai komunikasi antara papan pengembangan dan PC: PC mengirimkan string tertentu ke CC2430, dan CC2430 mengembalikan string ini ke PC setelah menerimanya. (2) Persiapan percobaan Sebelum Anda mulai menulis kode, Anda perlu menyiapkan fasilitas perangkat keras: koneksi yang benar + instal driver USB ke serial. Koneksi perangkat keras membutuhkan dua: Port JTAG pada papan pengembangan CC2430 → debugger → port USB PC (untuk men-debug dan mengunduh program) Port serial papan pengembangan CC2430 → port USB PC (untuk komunikasi data PC dan CC2430) Kemudian Anda perlu menginstal driver USB ke port serial ( alamat unduhan ) Untuk mengirim data ke port serial, alat debugging port serial juga diperlukan ( alamat unduhan ). (3) Diagram alir program
(4) Kode sumber percobaan dan analisis/* Deskripsi percobaan: UART0, baud rate 115200bps, PC mengirimkan sebuah string ke CC2430 (diakhiri dengan karakter @), CC2430 menerima dan mengembalikan string tersebut*/#include unsigned char recv_buf[ 300 ] = {0};
u nsigned char recv_count = 0;/* inisialisasi jam sistem-------------------------------------------------------*/void xtal_init( void ) { SLEEP & amp;= ~0x04; // keduanya menyalawhile (! (SLEEP & 0x40 )); // osilator kristal aktif dan stabil CLKCON &=~0x47; &
nbsp; //pilih osilator kristal 32MHz SLEEP |=0x04; }/* inisialisasi komunikasi UART0-------------------------------------------------------*/void Uart0Init(
u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01;   nbsp; //Pilih UART0 sebagai posisi opsional satu, yaitu RXD ke P0.2, TXD ke P0.3 P0SEL |=0x0C;  
nbsp; //Inisialisasi port UART0, atur P0.2 dan P0.3 sebagai port IO perangkat eksternal U0CSR =0xC0; //Setel ke port UART0.
nbsp; //Setel mode UART dan aktifkan penerima U0GCR = 11; U0BAUD = 216; & nbsp;//Setel port UART0, setel P0.2 dan P0.3 sebagai port IO perangkat eksternal. nbsp; / / Atur baud rate UART0 ke 115200bps, untuk alasan mengapa 216 dan 11, Anda dapat merujuk ke manual Cina CC2430 & nbsp
U0UCR |= StopBits|Parity; //Set StopBits dan Paritas }/*UART0 mengirim data----------------------------------------
- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR & 0x01 ); / / Tunggu UART menganggur saat mengirim data & &
nbsp;U0DBUF = data; }/*UART0SendString-------------------------------------------------------*/void Uart0SendString( unsigned char *s) { & nbsp;while (*s !
= 0 ) //Kirimkan setiap karakter dalam string s secara bergantian Uart0Send(*s++); }/*UART0 menerima data-----------------------------------
- -------------------*/unsigned char Uart0Receive( void ) {unsigned char data;while (!
( U0CSR&0x04 )); //query jika data diterima, jika tidak terus menunggu data=U0DBUF;//ekstrak data yang diterimakembalikan data;&
nbsp; }/* fungsi utama-------------------------------------------------------*/void main( void ) {
u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //inisialisasi UART0, set 1 stop bit, tanpa paritas && Uart0Send(0x00, 0x00 ); //inisialisasi UART0, set 1 stop bit, tanpa paritas Uart0SendString( "Mohon masukan string yang diakhiri dengan '@'!
& quot;); recv_count =0;while( 1 ) {while ( 1 ) &
nbsp; { b = Uart0Receive() UARTif (b== '@' ) break; //Jika '@' diterima, lompat keluar dari
l oop, output string recv_buf[recv_count] = b;//Jika tidak '@', lanjutkan menambahkan karakter ke larik karakter recv_buf[] &
recv_count++; }for ( i=0; i<recv_count; i++)="" [color="rgb(0," 136,=&
q uot;" 0)] ="" string keluaran[="" i][="" warna] Uart0Send(recv_buf); Uart0SendString ( ""); recv_count=0; &
n bsp; //reset } }Pertama-tama konfigurasikan port I / O yang sesuai dengan USART0: atur UART0 ke posisi opsional 1 dengan mengosongkan PECFRG.0 ke nol, yaitu, RXD sesuai dengan P0.2 dan TXD sesuai dengan P0.3. Kemudian konfigurasikan P0.2 dan P0.3 sebagai I / O perangkat eksternal. Mode UART dan aktifkan receiver. Kemudian konfigurasikan parameter USART0: baud rate 115200, tanpa paritas, stop bit 1. Kemudian kirimkan string ke PC: Masukkan string yang diakhiri dengan '@'! lalu gunakan while(1) untuk terus mencoba mendapatkan setiap karakter yang diterimanya. Ketika karakter ini bukan '@', itu berarti input belum selesai, dan terus menambahkan karakter ini ke larik karakter recv_buf; ketika karakter ini tepat '@', itu berarti input sudah selesai, dan oleh karena itu lompat keluar dari loop untuk mengirim setiap karakter dalam recv_buf ke PC secara berurutan, dan pada saat yang sama, setel ulang recv_count. (5) Hasil percobaanPertama, selesaikan koneksi perangkat keras, dan buka port serial .
A lat debugging, konfigurasikan parameter sebagai berikut:
Klik "Buka Port Serial", lalu mulai debugging IAR, biarkan program berjalan , Anda akan menemukan bahwa debugger port serial akan berjalan .
A nda akan melihat string yang diharapkan muncul di kotak terima pada alat debugging serial:
Kemudian pada kotak teks kirim di bagian bawah alat debugging serial, masukkan "
H alo" sebagai berikut:
Setelah mengklik "Kirim", Anda mungkin bertanya-tanya mengapa CC2430 tidak membalas pesan Anda. Setelah mengklik "Kirim", Anda mungkin bertanya-tanya mengapa CC2430 tidak membalas pesan yang Anda ketik, itu karena Anda tidak mengakhiri pesan dengan @. Mari kita ketik "Zigbee!@" lagi dan klik "Send", hasilnya adalah sebagai berikut:
g
Hanya konten yang diharapkan "Halo Zigbee!" sekarang! Sampai akhir percobaan ini ~ III. KesimpulanArtikel ini memperkenalkan papan pengembangan CC2430 dan komunikasi komputer host . Dengan dasar komunikasi serial, bagian selanjutnya kita akan mempelajari pengambilan sampel tunggal ADC (konversi analog-ke-digital). Dengan menggunakan ADC, kita dapat mengumpulkan nilai sensor suhu pada papan pengembangan dan mengirimkan nilai suhu melalui port serial ke PC untuk menampilkannya.
|