|
1. Menghubungkan tingkat atas dan bawah Dalam jaringan penginderaan nirkabel, CC2430 perlu mengirim data yang dikumpulkan ke komputer host (yaitu, PC) untuk diproses, dan komputer host perlu mengirim informasi kontrol ke CC2430. Semua ini tidak terlepas dari transmisi informasi antara keduanya. Di bagian ini, kita akan mempelajari cara menerapkan komunikasi port serial antara PC dan CC2430. CC2430 mencakup 2 antarmuka komunikasi serialPENGGUNAAN0danCATATAN UTAMA1, setiap port serial mencakup dua mode:UARTmode (asinkron),SPI(sinkron), bagian ini hanya membahas mode UART). 2. Eksperimen komunikasi port serial(1) Pengantar percobaanSadari komunikasi antara papan pengembangan dan PC: PC mengirimkan string tertentu ke CC2430, dan CC2430 mengembalikan string ini ke PC setelah menerimanya. (2) Persiapan eksperimentalSebelum mulai menulis kode, Anda perlu mengatur fasilitas perangkat keras: koneksi yang benar + instal driver serial USB. Diperlukan dua koneksi perangkat keras: Port JTAG dari papan pengembangan CC2430 → debugger → port USB PC(Untuk debugging dan mengunduh program) Port serial papan pengembangan CC2430 → port USB PC(Untuk komunikasi data antara PC dan CC2430) Maka Anda perlu menginstal USB ke driver serial (Unduh alamat) Untuk mengirim data ke port serial, alat debugging port serial (Unduh alamat)。 (3) Bagan alur program
(4) Kode sumber dan analisis eksperimental/*
Deskripsi eksperimental: UART0, baud rate 115200bps, PC mengirimkan string ke CC2430 (diakhiri dengan @ character), CC2430 mengembalikan string setelah menerimanya
*/
#include
tidak ditandatangani arangrecv_buf[300] = {0};
tidak ditandatangani arangrecv_count =0;
/*系统时钟初始化
-------------------------------------------------------*/
kosongxtal_init(kosong)
{ TIDUR &= ~0x04; //都上电
sementara(! (TIDUR &0x40)); //晶体振荡器开启且稳定 CLKCON &= ~0x47; Pilih osilator kristal 32MHz TIDUR |=0x04;
}
/*UART0通信初始化
-------------------------------------------------------*/
kosongUart0Init(tidak ditandatangani arangStopBits,tidak ditandatangani arangParitas)
{ PERCFG&= ~0x01; Pilih UART0 sebagai posisi opsional pertama, yaitu RXD ke P0.2 dan TXD ke P0.3 P0SEL |= 0x0C; //初始化UART0端口,设置P0.2与P0.3为外部设备IO口
U0CSR =0xC0; Atur ke mode UART dan aktifkan penerima
U0GCR = 11; U0BAUD = 216; Atur baud rate UART0 ke 115200bps, adapun mengapa 216 dan 11, silakan lihat manual bahasa Cina CC2430
U0UCR |= StopBits| Paritas; //设置停止位与奇偶校验
}
/*UART0发送数据
-------------------------------------------------------*/
kosong Uart0Kirim(tidak ditandatangani arangdata)
{
sementara(U0CSR&0x01); //等待UART空闲时发送数据 U0DBUF = data;
}
/*UART0发送字符串
-------------------------------------------------------*/
kosongUart0SendString(tidak ditandatangani arang*dt)
{
sementara(*s !=0) //依次发送字符串s中的每个字符 Uart0Kirim(*s++);
}
/*UART0接受数据
-------------------------------------------------------*/
tidak ditandatangani arangUart0Menerima(kosong)
{
tidak ditandatangani arangdata;
sementara(! (U0CSR&0x04));//查询是否收到数据,否则继续等待 data=U0DBUF; //提取接收到的数据
Kembalidata;
}
/*主函数
-------------------------------------------------------*/
kosongutama(kosong)
{
tidak ditandatangani arangi, b;
xtal_init();
Uart0Init(0x00,0x00); //初始化UART0,设置1个停止位,无奇偶校验 Uart0SendString("Tolong Input string diakhiri dengan '@'!");
recv_count =0;
sementara(1) {
sementara(1) { b = Uart0Menerima(); UART
jika(b=='@')istirahat; Jika '@' diterima, itu melompat keluar dari loop dan mengeluarkan string
recv_buf[recv_count] = b; Jika bukan '@', lanjutkan menambahkan karakter ke array karakter recv_buf[] recv_count++; }
untuk(i=0; saya<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" string keluaran[="" i][="" warna] Uart0Kirim (recv_buf);
Uart0SendString(""); recv_count =0; //重置 }
}
Pertama, konfigurasikan port I/O yang sesuai dengan USART0: teruskan pasanganPECFRG.0Atur UART0 ke posisi opsional 1, yaitu P0.2 untuk RXD dan P0.3 untuk TXD. Kemudian konfigurasikan P0.2 dan P0.3 sebagai I/O perangkat eksternal. Kemudian pilih mode UART dan aktifkan penerima. Kemudian konfigurasikan parameter USART0: baud rate 115200, tidak ada paritas, dan stop bit 1. Kemudian kirim string ke PC: Silakan Input string diakhiri dengan'@'! , dan kemudian gunakan while(1) untuk terus mencoba mendapatkan setiap karakter yang diterima. Ketika karakter ini tidak melakukannya'@', itu berarti input tidak lengkap, dan terus menambahkan karakter ini ke array karakter recv_buf; Karakter ini tepat'@', input selesai, sehingga loop dikirim ke PC agar setiap karakter di recv_buf dikirim ke PC, sambil mengatur ulang recv_count. (5) Hasil eksperimenPertama, selesaikan koneksi perangkat keras, buka alat debugging port serial, dan konfigurasikan parameter seperti yang ditunjukkan di bawah ini:
Klik "Buka Port Serial", lalu mulai debugging IAR, biarkan program berjalan, dan Anda akan menemukan string yang diharapkan muncul di kotak penerimaan pada alat debugging port serial:
Kemudian masukkan "Halo" di kotak teks kirim di bawah alat debugging port serial, seperti yang ditunjukkan di bawah ini:
Setelah mengklik "Kirim", Anda mungkin bertanya-tanya mengapa CC2430 tidak mengembalikan apa yang Anda ketik, karena Anda tidak berakhir dengan @. Kami mengetik "Zigbee!@" lagi, klik "Kirim" dan hasilnya terlihat seperti ini:
Konten yang diharapkan "Halo Zigbee!" akan muncul. Sudah berakhir! Ini adalah akhir dari percobaan~ 3. KesimpulanArtikel ini menjelaskan komunikasi antara papan pengembangan CC2430 dan komputer host. Sekarang setelah kita memiliki dasar-dasar komunikasi serial, mari kita pelajari tentang pengambilan sampel tunggal ADC (konversi analog-ke-digital) di bagian berikutnya. Dengan ADC, kami dapat mengumpulkan nilai sensor suhu pada papan pengembangan dan mengirim nilai suhu ke PC melalui port serial untuk menampilkannya.
|