架构师_程序员_码农网

E Ambil kata sandi
Daftar

QQ登录

Hanya satu langkah untuk memulai

Cari
Lihat:5250|Balas: 0
打印 上一主题 下一主题

[转]Zigbee之旅(五):几个重要的CC2430基础实验--Komunikasi port serial

[Salin tautan]
A 跳转到指定楼层
pemilik gedung
2014-10-30 23:18:18|只看该作者回帖奖励|MembalikkanPenjelajahan|Mode Baca
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
nbsp; //Pilih UART0 sebagai posisi opsional satu, yaitu RXD ke P0.2, TXD ke P0.3 P0SEL |=0x0C; &nbsp

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 percobaan

Pertama, selesaikan koneksi perangkat keras, dan buka port serial

.

2011022316522615.jpg
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

.

2011022316560420.jpg
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 "

2011022316581688.jpg
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:

2011022317013210.jpg
g

Hanya konten yang diharapkan "Halo Zigbee!" sekarang!

Sampai akhir percobaan ini ~

III. Kesimpulan

Artikel 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.






Sebelumnya: [Ulangi] Perjalanan Zigbee (4): beberapa eksperimen dasar CC2430 yang penting - interupsi pengatur waktu
Selanjutnya: [Ulang] Perjalanan Zigbee (VI): Beberapa eksperimen dasar CC2430 yang penting - pengambilan sampel tunggal ADC
Jaringan Code Farmer, hanya dipublikasikan dalam proses latihan, mengalami kesulitan teknis, jangan menyesatkan orang lain.
Anda harus masuk sebelum dapat memposting kembali Masuk | Daftar

V ersi aturan integral iniB


PENAFIAN: Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer terbatas hanya untuk digunakan untuk tujuan pembelajaran dan penelitian; konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, semua konsekuensinya akan ditanggung oleh pengguna itu sendiri. Informasi situs ini berasal dari jaringan, sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus menghapus konten di atas sepenuhnya dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, mohon dukung perangkat lunak asli, beli registrasi dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email untuk menanganinya.

Mail To:help@itsvse.com

QQ | ( 鲁ICP备14021824号-2)|Peta Situs

GMT+8, 2024-9-17 14:51

Balas CepatKembali ke atasKembali ke daftar