MSP430 ApplicationOne(原创)
0赞最近一直都在做一个软硬结合的项目,期间了解了点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);
}
}
串口调试过程中,应该充分利用一下串口调试助手来直观的查看数据发送接收情况