| I. 여유 공간 확보 무선 센서 네트워크에서 CC2430은 수집된 데이터를 호스트 컴퓨터(즉, PC)로 전송하여 처리해야 하며, 동시에 호스트 컴퓨터는 제어 정보를 CC2430으로 전송해야 합니다. 이 모든 것은 둘 사이의 정보 전송과 분리할 수 없습니다. 이 섹션에서는 PC와 CC2430 간의 직렬 통신을 구현하는 방법을 배웁니다. CC2430에는 두 개의 직렬 통신 인터페이스 USART0과 USART1이 있으며, 각 직렬 포트에는 UART (비동기) 모드, SPI (동기) 모드의 두 가지 모드가 있습니다(이 섹션에서는 UART 모드만 다룹니다). 둘째, 직렬 포트 통신 실험(1) 실험 소개 개발 보드와 PC 간의 통신을 달성합니다: PC가 특정 문자열을 CC2430에 보내고, CC2430은 이 문자열을 수신한 후 PC에 반환합니다. (2) 실험 준비 코드 작성을 시작하기 전에 하드웨어 기능을 설정해야 합니다: 올바른 연결 + USB-시리얼 드라이버 설치. 하드웨어 연결은 두 가지가 필요합니다: CC2430 개발 보드의 JTAG 포트 → 디버거 → PC의 USB 포트 (디버깅 및 프로그램 다운로드용) CC2430 개발 보드의 직렬 포트 → PC의 USB 포트 (PC와 CC2430 데이터 통신용) 그런 다음 USB-시리얼 포트 드라이버를 설치해야 합니다( 다운로드 주소 ). 시리얼 포트로 데이터를 전송하기 위해서는 시리얼 포트 디버깅 툴도 필요합니다( 다운로드 주소 ). (3) 프로그램 흐름도
(4) 실험 소스 코드 및 분석/* 실험 설명: UART0, 전송속도 115200bps, PC가 문자열을 CC2430으로 전송(@문자로 끝), CC2430이 문자열을 수신하여 반환*/#include unsigned char recv_buf[ 300 ] = {0};
u nsigned char recv_count = 0;/* 시스템 클럭 초기화-------------------------------------------------------*/void xtal_init( void ) { SLEEP &. amp;= ~0x04; // both power upwhile (! (SLEEP & 0x40 )); //크리스탈 오실레이터 켜고 안정 CLKCON &=~0x47; &.
nbsp; //select 32MHz 수정 발진기 SLEEP |=0x04; }/*UART0 통신 초기화-------------------------------------------------------*/void Uart0Init(
부호 없는 문자 StopBits, 부호 없는 문자 Parity) { PERCFG&=~0x01;   ; //선택적 위치 1번으로 UART0을 선택, 즉 RXD를 P0.2로, TXD를 P0.3으로 선택 P0SEL |=0x0C;  
U ART0 포트를 초기화하고, P0.2와 P0.3을 외부 장치 IO 포트로 설정합니다. U0CSR =0xC0; //Set to UART0 port.
U ART 모드로 설정하고 수신기를 활성화합니다 U0GCR = 11; U0BAUD = 216; & nbsp;//Set UART0 포트, P0.2 및 P0.3을 외부 장치 IO 포트로 설정합니다. U ART0 전송 속도를 115200bps로 설정하고, 왜 216과 11인지에대해서는 CC2430 중국어 매뉴얼을 참조하세요.
; U0UCR |= StopBits|Parity; //Set StopBits and Parity }/*UART0 send data----------------------------------------
- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); //데이터를 전송하는 동안 UART가 유휴 상태가 될때까지 기다립니다 .
nbsp;U0DBUF = data; }/*UART0SendString-------------------------------------------------------*/void Uart0SendString( unsigned char *s) { & nbsp;while (*s !
= 0 ) //Send 각 문자를 차례대로 문자열 s로 전송 Uart0Send(*s++); }/*UART0 accepts data-----------------------------------
- -------------------*/unsigned char Uart0Receive( void ) {unsigned char data;while (!
( U0CSR&0x04 )); //데이터가 수신되면 쿼리, 그렇지 않으면 계속 대기 data=U0DBUF;//수신된 데이터를 추출반환 데이터;&?
nbsp; }/* main function-------------------------------------------------------*/void main( void ) {
u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //UART0 초기화, 1 스톱 비트 설정, 패리티 없음 &*/*! nbsp;Uart0SendString("@'로 끝나는 문자열을 입력하세요!
& quot;); recv_count =0;while( 1 ) {while ( 1 ) &( ...)
nbsp; { b = Uart0Receive() UARTif (b== '@' ) break; //'@'가 수신되면, 루프에서 벗어나
루프, 출력 문자열 recv_buf[recv_count] = b;//'@'가 아니라면, 문자 배열에 문자를 계속 추가합니다 recv_buf[] & amp;.
nbsp; recv_count++; }for ( i=0; i<recv_count; i++)="" [colour="rgb(0," 136,=&&.
q uot;" 0)] ="" 출력 문자열[="" i][="" color] Uart0Send(recv_buf); Uart0SendString ( ""); recv_count=0; &?
n bsp; //reset } }먼저 USART0에 해당하는 I/O 포트를 구성합니다: PECFRG.0을 0으로 지워 UART0을 선택적 위치 1로 설정합니다(즉, RXD는 P0.2에 해당하고 TXD는 P0.3에 해당). 그런 다음 P0.2와 P0.3을 외부 장치 I/O로 구성한 다음 UART 모드를 선택하고 수신기를 활성화합니다. 그런 다음 USART0의 파라미터를 설정합니다: 전송 속도 115200, 패리티 없음, 정지 비트 1. 그런 다음 PC에 문자열을 보냅니다: '@' 로 끝나는 문자열을 입력하세요! 를 입력한 다음 while(1)을 사용하여 수신하는 모든 문자를 계속 시도합니다. 이 문자가 '@' 가 아니면 아직 입력이 끝나지 않았다는 의미이므로 이 문자를 문자 배열 recv_buf에 계속 추가하고, 이 문자가 정확히 '@' 이면 입력이 끝났다는 의미이므로 루프에서 벗어나 recv_buf의 각 문자를 순서대로 PC로 보내고 동시에 recv_count를 재설정합니다. (5) 실험 결과먼저 하드웨어 연결을 완료하고 직렬 포트를 엽니다 .
"Open Serial Port"를 클릭한 후 IAR 디버깅을 시작하고 프로그램을 실행하면 직렬 포트 디버거가 실행되는 것을 확인할 수 있습니다.
직렬 디버깅 도구의 수신 상자에 예상 문자열이 표시됩니다:
그런 다음 직렬 디버깅 도구 하단의 보내기 텍스트 상자에 " .
H ello"를 다음과 같이 입력합니다:
"보내기"를 클릭한 후 CC2430이 메시지를 회신하지 않는 이유가 궁금할 수 있습니다. "보내기"를 클릭한 후 CC2430이 입력한 내용을 반환하지 않는 이유는 @로 메시지를 끝내지 않았기 때문일 수 있습니다. 다시 "Zigbee!@"를 입력하고 "보내기"를 클릭하면 다음과 같은 결과가 표시됩니다:
g
예상 내용만
"안녕 지그비!" 지금! 이 실험의 끝 ~ III. 결론이번 글에서는 CC2430 개발 보드와 호스트 컴퓨터 통신에 대해 소개했습니다. 시리얼 통신의 기초를 다진 다음에는 ADC(아날로그-디지털 변환) 싱글 샘플링에 대해 알아보겠습니다. ADC를 사용하면 개발 보드에서 온도 센서의 값을 수집하고 직렬 포트를 통해 온도 값을 PC로 전송하여 표시할 수 있습니다.
|