이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 7636|회답: 0

지그비 여정 (5): 여러 중요한 CC2430 기본 실험 - 직렬 통신

[링크 복사]
게시됨 2014. 10. 30. 오후 11:18:18 | | | |
1. 상하층 연결

무선 감지 네트워크에서는 CC2430이 수집된 데이터를 호스트 컴퓨터(즉, PC)로 전송하여 처리해야 하며, 호스트 컴퓨터는 CC2430에 제어 정보를 전송해야 합니다. 이 모든 것은 두 사람 간의 정보 전달과 불가분의 관계입니다. 이 섹션에서는 PC와 CC2430 간의 직렬 포트 통신을 구현하는 방법을 배울 것입니다.

CC2430은 2개의 직렬 통신 인터페이스를 포함하고 있습니다USART0그리고USART1, 각 직렬 포트는 두 가지 모드를 포함합니다:UART(비동기) 모드,SPI(동기) 모드, 이 섹션은 UART 모드만을 다룹니다).

2. 직렬 포트 통신 실험(1) 실험 소개

개발 보드와 PC 간의 통신을 구현하세요: PC가 특정 문자열을 CC2430에 보내고, CC2430이 받은 후 이 문자열을 PC에 반환합니다.

(2) 실험적 준비

코드를 작성하기 전에 하드웨어 기능을 설정해야 합니다: 올바른 연결 + USB 시리얼 드라이버 설치.

두 개의 하드웨어 연결이 필요합니다:

    CC2430 개발 보드의 JTAG 포트는 디버거→ PC USB 포트→(프로그램 디버깅 및 다운로드용)

    CC2430 개발 보드의 직렬 포트 → PC의 USB 포트(PC와 CC2430 간 데이터 통신용)

그 다음에는 USB to 시리얼 드라이버를 설치해야 합니다 (다운로드 주소

직렬 포트로 데이터를 전송하기 위해 직렬 포트 디버깅 도구(다운로드 주소)。

(3) 프로그램 플로우차트

(4) 실험적 소스 코드 및 분석/*
  실험 설명: UART0, 보드 속도 115200bps, PC가 CC2430에 문자열(끝이 @문자로 끝나며), CC2430은 문자열을 받은 후 반환합니다
*/

#include

서명 없음 차어recv_buf[300] = {0};
서명 없음 차어recv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
공허xtal_init(공허)
{
  잠 &= ~0x04;            //都上电
  반면(! (잠 그리고0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            32MHz 크리스털 발진기를 선택하세요
  잠 |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
공허Uart0Init(서명 없음 차어스톱비트,서명 없음 차어패리티)
{
   PERCFG&= ~0x01;                  첫 번째 선택적 위치로 UART0를 선택하는데, 즉 RXD에서 P0.2, TXD에서 P0.3으로 변환합니다
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    UART 모드로 설정하고 수신기를 활성화하세요
   
   U0GCR = 11;
   U0BOUD = 216;                     UART0 보드 속도를 115200bps로 설정하세요. 왜 216과 11bps인지는 CC2430 중국 매뉴얼을 참고하세요
   
   U0UCR |= StopBits| 패리티;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
공허  Uart0Send(서명 없음 차어데이터)
{
  반면(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = data;
}

/*UART0发送字符串
-------------------------------------------------------*/
공허Uart0SendString(서명 없음 차어*s)
{
  반면(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
서명 없음 차어Uart0Receive(공허)
{
  서명 없음 차어데이터;
  반면(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  귀환데이터;         
}

/*主函数
-------------------------------------------------------*/
공허주요(공허)
{
  서명 없음 차어i,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("입력 줄이 '@'로 끝나요!");

  recv_count =0;
  
  반면(1)
  {
    반면(1)                           
    {
      b = Uart0Receive(); UART
      만약(b=='@')휴식;                 '@'가 수신되면 루프에서 벗어나 문자열을 출력합니다

      recv_buf[recv_count] = b;        만약 '@'이 아니라면, 문자 배열에 문자를 계속 추가하세요 recv_buf[]
      recv_count++;
    }
    에 대해(i=0; <recv_count; i++)="" [color="RGB(0), 136,="" 0)]="" 출력 문자열[="" i][="" color]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

먼저, USART0에 대응하는 I/O 포트를 설정하세요: 쌍을 전달합니다PECFRG.0UART0를 선택적 위치 1, 즉 RXD는 P0.2, TXD는 P0.3으로 설정하세요. 그 다음 P0.2와 P0.3을 외부 장치 I/O로 설정하세요.

그 다음 UART 모드를 선택하고 수신기를 활성화하세요. 그 다음 USART0의 매개변수를 설정하세요: 보드 속도 115200, 패리티 없음, 스톱 비트 1.

그 다음 PC에 다음과 같은 문자열을 보냅니다: Please Input 문자열은 다음과 같이 끝납니다'@'! , 그리고 while(1)을 사용해 모든 문자를 받도록 계속 시도합니다. 이 캐릭터가 그렇게 하지 않을 때'@', 입력이 완전하지 않다는 의미이며, 이 문자를 문자 배열에 계속 추가하는 recv_buf; 이 캐릭터는 딱 맞아요'@', 입력이 완료되면, recv_buf 내 각 문자가 PC로 전송되도록 루프가 PC로 전송되고 recv_count가 초기화됩니다.

(5) 실험 결과

먼저, 하드웨어 연결을 완료하고 직렬 포트 디버깅 도구를 열어 아래에 표시된 매개변수를 설정하세요:

"Open Serial Port"를 클릭한 후 IAR 디버깅을 시작하고, 프로그램이 실행되도록 두면, 시리얼 포트 디버깅 도구의 수신 상자에 예상 문자열이 나타납니다:

그 다음 직렬 포트 디버깅 도구 아래 send 텍스트박스에 "Hello"를 입력하세요.

"전송"을 클릭한 후, 왜 CC2430이 입력한 내용을 반환하지 않는지 궁금할 수 있습니다. 왜냐하면 @로 끝나지 않았기 때문입니다.

다시 "Zigbee!@"를 입력한 후 "보내기"를 클릭하면 결과가 다음과 같습니다:

예상되는 콘텐츠인 "Hello Zigbee!"가 등장할 것입니다. 끝났어요! 이게 실험의 끝이야~

3. 결론

이 글에서는 CC2430 개발 보드와 호스트 컴퓨터 간의 통신을 설명합니다. 이제 직렬 통신의 기본을 알았으니, 다음 섹션에서 ADC(아날로그-디지털 변환) 단일 샘플링에 대해 배워보겠습니다. ADC를 사용하면 개발 보드의 온도 센서 값을 수집해 시리얼 포트를 통해 PC에 온도 값을 전송해 표시할 수 있습니다.






이전의:지그비 여정 (4): 여러 중요한 CC2430 기본 실험 - 타이머 중단
다음:Zigbee Journey (6): 여러 중요한 CC2430 기본 실험 - ADC 단일 샘플링
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com