aerkate

MSP430 ApplicationOne(原创)

0
阅读(1786)

最近一直都在做一个软硬结合的项目,期间了解了点MSP430单片机通过串口与PC机进行通信的内容。下面简单介绍一下我的一点认识。

考虑到485总线可以挂载更多的设备,而且可以有效地延长一下通信距离,同时与PC机连接只能使用232的特点,使用了上面的通用模式来进行通信。

考虑到MSP430相对高效的运算能力以及强大的低功耗性能,我们可以选择它作为节点和终端的MCU。终端和节点之间可以通过天线模块进行通信,而这种通信方式构成了一个简单的RFID的应用。

所有的终端都挂在485串行总线上面,然后要与PC机通信就通过485转232 然后通过串口来实现,这个过程就涉及到了用430单片机来操作串口发生数据的一些问题。

在操作串口之前我们需要对其进行初始化

/*******************************************

函数名称:InitUART

功    能:初始化UART端口

参    数:无

返回值  :无

********************************************/

void InitUART0(void)

{

    P3SEL |= 0x30;                            // P3.4,5 = USART0 TXD/RXD

    ME1 |= URXE0 + UTXE0;                             // Enable USART0 T/RXD

    UCTL0 |= CHAR;                            // 8-bit character

    UTCTL0 |= SSEL0;                          // UCLK = ACLK

    UBR00 = 0x03;                             // 32k/9600 - 3.41

    UBR10 = 0x00;                             //

    UMCTL0 = 0x4A;                            // Modulation

    UCTL0 &= ~SWRST;                          // Initialize USART state machine

}

在初始化了串口后,如果一些事件发生,我们就可以使用他来传输一些可用的数据,给上位机来进行处理。

下面我们给出一个通过MSP430向串口发送数据的程序

#include<msp430x14x.h>

#include"uart0.h"

#include"uart1.h"

#define DE          P5OUT |= BIT3     //设置485芯片处于发送状态

#define RE          P5OUT &= ~BIT3    //设置485芯片处于接收状态

 

char time_out = 0;

char address[6]={0x80,0x81,0x82,0x83,0x84,0x85},j=3,k=0;

void main()

{

  char addr_g = 0, numb = 0 , i = 0, time = 0;

  char da[255] = {0};

 

  WDTCTL = WDTPW + WDTHOLD;            // Stop WDT

  P5DIR |= BIT3;

  P2DIR = 0xFF;                    

 

  InitUART1();

  InitUART0();

delay_ms(500);

        Send1Char(0xca);

        Send1Char(0x01);

        Send1Char(0x00);

        Send1Char(0x86);

        Send1Char(0x00);

        Send1Char(0x01);

        

        while(1);

       

  while(1)

  {

     Delay_ms(500);

}

}

 串口调试过程中,应该充分利用一下串口调试助手来直观的查看数据发送接收情况