msp430单片机之串口通信模块

发布者:qinghong最新更新时间:2016-06-02 来源: eefocus关键字:msp430  单片机  串口通信模块 手机看文章 扫描二维码
随时随地手机看文章
串口通信

       单片机的串口通信模块在单片机中起到重要作用,通过串口它可以与PC机或者其他模块进行通信,传输数据或者控制命令,当然在传输数据的时候我们必须有一定的协议,让通信双方能够知道得到的数据是什么,所以我们必须设置一种格式,让通信双方能够得到正确的数据信息,首先我们从整体上来看看这个模块的结构,下图是msp430单片机中的串口模块:

msp430单片机之串口通信模块

 

从上图中我们可以看出串口模块可以分为4部分:控制模块,接收模块,发送模块,波特率控制模块

这些模块有相应的寄存器,我们的主要任务就是对这些寄存器进行相关的配置,接下来就详细介绍这些寄存器的作用。

1.控制寄存器UXCTL (X为数字,不同型号的产品包含的串口模块也不同,有些只有一个,有些可能包含多个)

我们来看看每一位的作用吧

msp430单片机之串口通信模块

PENA:校验允许位(0禁止,1允许)

PEV   :奇偶校验位,该位在校验允许时有效(0奇校验,1偶校验)

SPB   :停止位选择,决定发送的停止位,但接收时接收器只检测1位停止位(0 1位停止位,1 2位停止位)

CHAR:发送数据长度(0 7位,1 8位)

LISTEN:反馈信号

SYNC:模块的模式选择(0UART模式(异步),1 SPI模式(同步)

MM    :多机模式选择(0线路空闲多机协议,1 地址为多机协议)

SWRST:控制位,上电时改位置位,一次正确的模块初始化过程应该是:先在SWRST = 1时设置,设置完串口后再设置SWRST = 0,最后如需中断,再设置中断使能。

2.发送和接收控制寄存器

发送控制寄存器主要是控制时钟源的选择等其他控制,而接受控制寄存器主要是一些标志位,判断时候出错,溢出,中断标志等,具体内容见相关数据手册

3.波特率发生器控制模块

这个模块有3个寄存器,两个寄存器用作波特率选择,一个用于调整(UxBR0和UxBR1用于选择波特率,UxMCTL用于调整)

4接收和发送数据缓存

URXBUF和UTXBUF这两个寄存器用于存放接收和发送的数据。

 

整个模块大概就是这些内容了,那么怎么编写发送和接收的程序呢?

一般地,接收过程使用中断方式(因为不知道什么时候会接收到数据,这样效率高),发送采用查询方式。

串口通信模块的设置步骤如下:

1.设置系统时钟源

2.设置串口模块

3.处理接收发送过程

下面是一个简单的程序,该程序实现的功能是从PC机接收数据,然后单片机又将接收的数据原封不动的发送给PC机。

#include


#define CPU_F ((double)8000000) 
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) 
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) 


#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long


/*当BRCLK=CPU_F时用下面的公式可以计算,否则要根据设置加入分频系数*/
#define baud           9600                                //设置波特率的大小
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式
#define baud_h         (uchar)(baud_setting>>8)            //提取高位
#define baud_l         (uchar)(baud_setting)               //低位


//*
//                    系统时钟初始化
//*
void Clock_Init()
{
  uchar i;
  BCSCTL1&=~XT2OFF;                 //打开XT振荡器
  BCSCTL2|=SELM1+SELS;              //MCLK为8MHZ,SMCLK为8MHZ
  do{
    IFG1&=~OFIFG;                   //清除震荡标志
    for(i=0;i<100;i++)
       _NOP();                      //延时等待
  }
  while((IFG1&OFIFG)!=0);           //如果标志为1,则继续循环等待
  IFG1&=~OFIFG; 
}
//*
//              MSP430内部看门狗初始化
//*
void WDT_Init()
{
   WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
}


//*
//               MSP430串口初始化
//*
void UART_Init()
{
  U0CTL|=SWRST;               //复位SWRST
  U0CTL|=CHAR;                //8位数据模式 
  U0TCTL|=SSEL1;              //SMCLK为串口时钟
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps
  ME1|=UTXE0;                 //UART1发送使能
  ME1|=URXE0;                 //UART1接收使能
  U0CTL&=~SWRST;
  IE1|=URXIE0;                //接收中断使能位
  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式
  P3DIR|= BIT4;               //设置IO口方向为输出
  P3SEL|= BIT5;
}


//*
//              串口0发送数据函数
//*


void Send_Byte(uchar data)
{
  while((IFG1&UTXIFG0)==0);          //发送寄存器空的时候发送数据
    U0TXBUF=data;
}


//*
//               处理来自串口 0 的接收中断
//*


#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{
  uchar data=0;
  data=U0RXBUF;                       //接收到的数据存起来
  Send_Byte(data);                    //将接收到的数据再发送出去
}


//*
//            处理来自串口 0 的发送中断,预留
//*


#pragma vector=UART0TX_VECTOR
__interrupt void UART0_TX_ISR(void)
{


}


//*
//           主函数
//*
void main(void)

  WDT_Init();                         //看门狗设置
  Clock_Init();                       //系统时钟设置
  UART_Init();                        //串口设置初始化
  _EINT();                            //开中断
  while(1)                            //无限循环
    {
    }
}

得到的结果如下:

msp430单片机之串口通信模块

串口部分到此为止,这只是简单的设置,在后续的学习中必然会用到串口传输复杂的数据进行处理,这里先打个基础。

关键字:msp430  单片机  串口通信模块 引用地址:msp430单片机之串口通信模块

上一篇:MSP430单片机输入与输出
下一篇:怎样学习MSP430单片机

推荐阅读最新更新时间:2024-03-16 14:55

基于PIC单片机的智能目标跟踪系统设计方案
摘 要: 通过借鉴嵌入式系统在电子技术、信号处理以及计算机等领域应用的成功经验,在分析目标检测与跟踪算法的基础上,将目标检测与跟踪算法与嵌入式技术相结合,设计一种基于嵌入式PIC32单片机的目标检测与跟踪系统,可以实现目标检测跟踪系统的小型化,智能化,并以具体飞行目标为例进行了目标的识别和跟踪。 研究目的 随着现代社会对军用和民用设备需求的不断扩大及要求的不断提高,运动目标的识别和跟踪技术已经迅速发展成为现代信息处理领域中一项非常重要的技术,也是无人机野外战场侦察技术中的重点和难点,并在许多领域内发挥着不可替代的作用。目前,基于PC 机的目标检测与跟踪技术已趋于成熟,但其在嵌入式平台的应用研究还处于初级阶段。由于嵌入式系统具有
[单片机]
基于PIC<font color='red'>单片机</font>的智能目标跟踪系统设计方案
瑞萨与第10所著名大学合作 吉林大学MCU基础讲座开讲
近日,由株式会社瑞萨科技与中国吉林大学电子科学与工程学院共同开设的“瑞萨微控制器原理及应用”(以下简称瑞萨MCU基础讲座),在中国吉林大学举行了隆重的开讲仪式。 吉林大学是目前全国办学规模最大的高校,学科门类几乎涵盖了各行各业。吉林大学的电子科学与工程学院是中国电子工程领域规模大,专业水平高的学院,毕业生多数就职于知名IT企业。此次与吉林大学的合作,是瑞萨继与清华大学、北京大学、上海交通大学、西安交通大学等国内著名高等院校合作之后,目前为止在国内开设“MCU基础讲座”课程的第10所国家重点大学。此前瑞萨参加了吉林大学所在的长春市的ITS基础设施构筑计划,07年6月开始已经进入实验阶段。而通过此次讲座,瑞萨更增强了与当地大学之间的
[焦点新闻]
单片机小白学习之路(二十六)---EEPROM-IIC总线理解(一)
目标:EEPROM-IIC总线理解(一) 1.IIC总线简介 IIC(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。由于其管脚少,硬件实现简单,可扩展性强等特点,因此被广泛的使用在各大集成芯片内。 I2C是一个通信协议,它拥有严密的通信时序逻辑要求,而EEPROM是一个器件,只是这个器件采样了I2C协议的接口与单片机相连而已,二者并没有必然
[单片机]
<font color='red'>单片机</font>小白学习之路(二十六)---EEPROM-IIC总线理解(一)
MCS-51单片机有哪些寻址方式,是怎样操作的?
什么是寻址方式?MCS-51单片机有哪些寻址方式,是怎样操作的?各种寻址方式的寻址空间和范围是什么? 答: MCS-51单片机有7种寻址方式:立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、位寻址和指令寻址。可以分为两类:操作数寻址和指令寻址。 立即数寻址的寻址空间和范围是:在程序存储空间,随指令读入MOV A,#46H 直接寻址的寻址空间和范围是:片内RAM中,低128字节和SFR MOV A,46H 寄存器寻址的寻址空间和范围是:使用R0~R7、A、B、C、DPTR MOV A,R2 寄存器间接寻址的寻址空间和范围是:片内RAM:使用@Ri,SP;范围为256B,不含SFR,片外RAM:使用@Ri,@DP
[单片机]
液晶显示模块MGLS-12864的接口技术及其应用
随着液晶显示技术的发展和仪表智能化程度的提高,人们对信息显示方式的要求也在不断提高,传统的数字显示已经不能表达复杂的信息。而液晶显示器(LCD)则以其重量轻、电压低、功耗小、显示内容丰富等优点逐渐在单片机控制的智能仪器仪表、工业控制等领域得到广泛应用。 矿用隔爆馈电开关是煤矿井下配电系统的关键设备,其性能好坏直接影响煤矿井下的生产安全和生产效率。目前大部分矿井馈电开关保护器的显示通常是发光二极管或LED数字显示,并且大部分用灯来显示故障。 为了改进馈电开关的显示功能,利用单片机8031和液晶显示器设计了一种具有汉字显示功能的显示系统,该系统能够通过液晶显示器实时显示开关的工作参数(电压、电流等)、工作状态、供电线路的故
[单片机]
液晶显示模块MGLS-12864的接口技术及其应用
英飞凌安全单片机提升谷歌Chromebook安全性
    英飞凌科技股份公司近日宣布,公司面向采用谷歌Chrome操作系统的设备,推出可信平台模块(TPM)芯片。TPM是谷歌Chromebook的安全架构不可或缺的组成部分。英飞凌成为适合与面向网络应用的全新操作系统结合使用的TPM芯片的首家供应商。     Chromebook经过精心设计,可为主要利用计算设备登录互连网以及使用网络应用的用户,带来快速、轻松和安全的体验。这种设计的一个重要部分被称为“纵深防御”,可提供多重恶意软件保护。这种安全架构具备硬件支持特性,包括每台Chromebook内置的TPM芯片支持的各种功能。     英飞凌科技股份公司芯片卡与安全IC业务部总经理Helmut Gassel博士指出:“谷歌
[工业控制]
基于STC单片机和传感器的LED智能照明控制系统
   0 引言   我国是一个资源紧缺的国家,但在日常的生活中,人们并没有意识到这一点。以室内照明为例,在很多公共场合中都采用手动开关,经常出现没有及时关灯的现象,从而造成能源的浪费,也会缩短灯具的使用寿命。针对这一现象,有必要研究一种智能照明控制系统。该系统利用智能传感器感应室外亮度来自动调节灯光,以保持室内恒定照度,既能使室内有最佳照明环境,又能达到节能的效果。   LED 被称为第四代绿色光源,LED 的发光器件是冷光源,具有节能、环保、寿命长、体积小等特点。LED 光的单色性好,光谱窄,无需过滤,可直接发出有色可见光。在相同的照明情况下,LED 灯耗电量为白炽灯的十分之一,荧光灯的二分之一,是未来照明的发展趋势。  
[单片机]
基于STC<font color='red'>单片机</font>和传感器的LED智能照明控制系统
定时器中断是什么意思,定时器中断的工作原理
定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。STM32中共有11个定时器。 一、定时器中断是什么意思 定时器中断是由单片机中的定时器溢出而申请的中断。 51单片机中有两个定时器T0和T1: (1)TF0:定时器T0溢出中断请求。当定时器TO产生溢出时,TO中断请求标志TF0置1,请求中断处理。 (2)TF1:定时器T1溢出中断请求。当定时器Tl产生溢出时,T1中断请求标志TF1置1,请求中断处理。 Stm32共有11个定时器: 1、两个高级定时器:TIM1、TIM8-------------------------APB2 2、四个通用定时器:TIM2~TIM5-------------
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved