姓名:杨汉雄
学号:19011210569
【嵌牛导读】MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。MSP430含有两个USCI外设支持复数的串行通信协议,不同的USCI模块支持不同的协议。其中USCI_Ax支持UART,IrDA,LIN,SPI协议;USCI_Bx支持IIC,SPI协议。
【嵌牛正文】
UART是通用异步串行接口的简称。串行通信接口是用来与单片机外界系统进行通信桥梁,比如可以吧单片机ADC转换的数据通过串口发送给PC机(上位机),经上位机处理之后在发回给单片,达到通信的目的。TI公司的MSP430系列单片机均具有UART功能,其中大部分还和SPI,I2C功能复用,通过相关寄存器的配置,可以很轻松地就实现了UART,SPI,I2C的通信功能。本文对MSP430串口的寄存器进行了小结。
UCAxCTL0寄存器
7-UCPEN 校验位使能 0=关闭 1=开启
6-UCPAR 校验方式选择 0=奇校验 1=偶校验
5-UCMSB 数据方向 0=低位先 1=高位先
4-UC7BIT 单次数据最大长度 0=八位数据 1=七位数据
3-UCSPB 停止位选择 0=1位停止位 1=2位停止位
2-1-UCMODEx 串口模式选择位
00=uart模式
01= Idle-line multiprocessor mode
10= Address-bit multiprocessor mode
11=UART mode with automatic baud-rate detection
0-UCSYNC 同步模式使能位 0=异步模式 1=同步模式
UCAxCTL1寄存器
7-6 UCSSELx 串口时钟选择位 00=外部时钟 01=ACLK 10=SMCLK 11=SMCLK
5 UCRXEIE 接收错误中断使能位 0=关闭中断 1=开启中断
4 UCBRKIE 接收完成中断使能位 0=关闭中断 1=开启中断
3 UCDORM 睡眠模式使能 0=关闭 1=开启
2 UCTXADDR帧数据选择 0=下一帧送数据 1=下一帧送地址
1 UCTXBRK数据停止帧选择 0=下一帧非停止 1=下一帧停止
0 UCSWRST软件复位使能 拉高时开启复位将发送缓存接收缓存中断标志等清零
串口波特率设置
MSP430串口可以使用选择低频晶振或高频晶振来产生串口通信的波特率,以此节省功耗,通过配置UCAxMCTL 调制控制寄存器的第0位:UCOS16=0进入低频模式 UCOS16=1进入高频模式(ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz)。
UCAxBR0 设置波特率的低八位
UCAxBR1 设置波特率的高八位
一般来说波特率可由时钟分频得到,分频数N=晶振频率/想得到的波特率
但N往往不是整数,所以需要用到调制功能。 通过UCAxMCTL调制控制寄存器可以配置出相应的小数部分。
7-4位UCBRFx 高时钟模式下的调制值;
3-1位UCBRSx 低时钟模式下的调制值
0位UCOS16 高低频模式的选择
调制功能有两种:
1.通过低频时钟调制低波特率(32.768K)
整数部分UCBRx=N;
小数部分UCBRSx=round[(N-INT(N)*8] //ROUND为四舍五入
2.通过高频时钟调制低波特率(1048576时钟预分频后)
整数部分UCBRx=INT(N/16)
小数部分UCBRFx=round([(N/16)-INT(N/16)]*16)
比如要在低频模式下得到9600波特率,先计算分频数N=32768/9600=3.41,取整得N=3,则应向UCAxBR0 填入0x0000 0011
取小数位0.41*8=3.28 则应向UCBRSx 寄存器中填入0x0000 0011