msp430串行通信.docx
《msp430串行通信.docx》由会员分享,可在线阅读,更多相关《msp430串行通信.docx(16页珍藏版)》请在冰豆网上搜索。
msp430串行通信
USART串行异步模式
MSP430F14USART0异步方式中断控制位
特殊功能寄存器
接收中断控制位
发送中断控制位
IFG1
接收中断标志URXIFG0
发送中断标志UTXIFG0
IE1
接收中断使能URXIE0
发送中断使能UTXIE0
ME1
接收允许URXE0
接收允许UTXE0
MSP430F14USART1异步方式中断控制位
特殊功能寄存器
接收中断控制位
发送中断控制位
IFG2
接收中断标志URXIFG1
发送中断标志UTXIFG1
IE2
接收中断使能URXIE1
发送中断使能UTXIE1
ME2
接收允许URXE1
接收允许UTXE1
在MSP430器件中有的型号有两个通信硬件模块USART0和USART1,因此他们有两套
寄存器.请看下表:
USART0的寄存器
寄存器
缩写
读写类型
地址
初始状态
控制寄存器
U0CTL
读/写
070H
PUC后001H
发送控制寄存器
U0TCTL
读/写
71H
PUC后001H
接收控制寄存器
U0RCTL
读/写
72H
PUC后000H
波特率调整控制寄存器
U0MCTL
读/写
73H
不变
波特率控制寄存器0
U0BR0
读/写
74H
不变
波特率控制寄存器1
U0BR1
读/写
75H
不变
接收缓冲器
U0RXBUF
读
76H
不变
发送缓冲器
U0TXBUF
读/写
77H
不变
SFR模块使能寄存器1
ME1
读/写
004H
PUC后000H
FR模块使能寄存器1
IE1
读/写
000H
PUC后000H
FR模块使能寄存器1
IFG1
读/写
002H
PUC后082H
USART1的寄存器
寄存器
缩写
读写类型
地址
初始状态
控制寄存器
U1CTL
读/写
078H
PUC后001H
发送控制寄存器
U1TCTL
读/写
79H
PUC后001H
接收控制寄存器
U1RCTL
读/写
7AH
PUC后000H
波特率调整控制寄存器
U1MCTL
读/写
7BH
不变
波特率控制寄存器0
U1BR0
读/写
7CH
不变
波特率控制寄存器1
U1BR1
读/写
7DH
不变
接收缓冲器
U1RXBUF
读
7EH
不变
发送缓冲器
U1TXBUF
读/写
7FH
不变
SFR模块使能寄存器1
ME2
读/写
005H
PUC后000H
FR模块使能寄存器1
IE2
读/写
001H
PUC后000H
FR模块使能寄存器1
IFG2
读/写
003H
PUC后020H
UxCTL控制寄存器
7
6
5
4
3
2
1
0
PENA
PEV
SPB
CHAR
LISTEN
SYNC
MM
SWRST
PENA校验允许位
0校验禁止
1校验允许
校验允许时,发送端发送校验,接收端接收该校验,地址位多机模式中,地址
位包含校验操作.
PEV奇偶校验位,该位在校验允许时有效
0奇校验
1偶校验
SPB停止位选择.决定发送的停止位数,但接收时接收器只检测1位停止位.
01位停止位
12位停止位
CHAR字符长度
07位
18位
LISTEN反馈选择.选择是否发送数据由内部反馈给接收器
0无反馈
1有反馈,发送信号由内部反馈给接收器
SYNCUSART模块的模式选择
0UART模式[异步]
1SPI模式[同步]
MM多机模式选择位
0线路空闲多机协议
1地址位多机协议
SWRST控制位
上电时该位置位,此时USART状态机和运行标志初始化成复状态
(URXIFG=0,URXIE=0,UTXIE=0,UTXIFG=1)。
所有受影响的逻辑保持在复位状态,直至
SWRST复位。
也就是说一次系统复位后,只有对SWRST复位,USART才能重新被允许。
而接收和发送允许标志URXE和UTXE不会因SWRST而更改。
SWRST位会使URXIE、UTXIE、URXIFG、RXWAKE、TXWAKE、RXERR、BRK、PE、OE
及FE等复位。
在串行口使用设置时,这一位起重要的作用。
一次正确的USART模块初始化应
该是这样设置过程的:
先在SWRST=1时设置,设置完串口后再设置SWRST=0;最后
如需要中断,则设置相应的中断使能。
UxTCTL发送控制寄存器
7
6
5
4
3
2
1
0
未用CKPLSSEL1SSEL0URXSETXWAKE未用TXEPT
CKPL时钟极性控制位
0UCLKI信号与UCLK信号极性相同
1UCLKI信号与UCLK信号极性相反
SSEL1、SSEL0时钟源选择,此两位确定波特率发生器的时钟源
0外部时钟UCLKI;
1辅助时钟ACLK
2子系统时钟SMCLK
3子系统时钟SMCLK
URXSE接收触发沿控制位
0没有接收触发沿检测
1有接收触发沿检测
TXWAKE传输唤醒控制
0下一个要传输的字符为数据
1下一个要传输的字符是地址
TXEPT发送器空标志,在异步模式与同步模式时是不一样的。
0正在传输数据或者发送缓冲器(UTXBUF)有数据
1表示发送移位寄存器和UTXBUF空或者SWRST=1
URCTL接收控制寄存器
7
6
5
4
3
2
1
0
FE
PE
OE
BRK
URXEIE
URXWIE
RXWAKE
RXERR
FE帧错误标志位
0没有帧错误
1帧错误
PE校验错误标志位
0校验正确
1校验错误
OE溢出标志位
0无溢出
1有溢出
BRK打断检测位
0没有被打断
1被打断
URXEIE接收出错中断允许位
0不允许中断,不接收出错字符并且不改变URXIFG标志
1允许中断,出错字符接收并且能够置位URXIFG
URXWIE接收唤醒中断允许位,当接收到地址字符时,该位能够置位URXIFG,当
URXEIE=0,如果接收内容有错误,该位不能置位URXIFG。
0所有接收的字符都能够置位URXIFG
1只能接收到地址字符才能置位URXIFG
在各种条件下URXEIE和URXWIE对URXIFG的影响
URXEIE
URXWIE
字符出错
地址字符
接收字符后的标志位
URXIFG
0
X
1
X
不变
0
0
0
X
置位
0
1
0
0
不变
0
1
0
1
置位
1
0
X
X
置位(接收所有字符)
1
1
X
0
不变
1
1
X
1
置位
RXWAKE接收唤醒检测位。
在地址位多机模式,接收字符地址位置位时,该机被唤醒,在线路空闲多机模式,在接收到字符前检测到URXD线路空闲时,该机被唤起,RXWAKE置位。
0没有被唤醒,接收到的字符是数据
1唤醒,接收的字符是地址
RXERR接收错误标志位
0没有接收错误
1有接收到错误
UxBR0、UxBR1波特率选择寄存器这两个寄存器是用于存放波特率分频因子的整数部分。
UxBR0波特率选择寄存器0
7
6
5
4
3
2
1
0
27
26
25
24
23
22
21
20
UxBR1波特率选择寄存器1
7
6
5
4
3
2
1
0
2152142132122112102928
UxMCTL波特率调整控制寄存器
7
6
5
4
3
2
1
0
M7
M6
M5
M4
M3
M2
M1
M0
若波特率发生器的输入频率BRCLK不是所需波特率的整数倍,带有一小数,则
整数部分写UBR寄存器,小数部分由调整寄存器UxMCTL的内容反映。
波特率由以下
公式计算:
波特率=BRCLK/(UBR+(M7+M6+…M0)/8)
URXBUF接收数据缓存
7
6
5
4
3
2
1
0
接收缓存存放移位寄存器最后接收的字符,可由用户访问。
读接收缓存可以复
位接收时产生的各种错误标志、RXWAKE位和URXIFGx位。
如果传输7位数据,接收
缓存内容右对齐,最高位为0。
当收接和控制条件为真时,接收缓存装入当前接收到的字符。
当接收和控制条件为真时接收数据缓存结果
条件
结果
URXEIE
URXWIE
装入URXBUF
PE
FE
BRK
0
1
无差错地址字符
0
0
0
1
1
所有地址字符
X
X
X
0
0
无差错字符
0
0
0
1
0
所有字符
X
X
X
UTXBUF发送数据缓存
7
6
5
4
3
2
1
0
发送缓存内容可以传至发送移位寄存器,然后由UTXDx传输。
对发送缓存进行
写操作可以复位UTXIFGx。
如果传输出7位数据,发送缓存内容最高为0。
常用波特率及其对应设置参数与对应误差表
baudrate
Divideby
ACLK[32768HZ低频振荡器]
MCLK[1048576HZ高频振荡器]
ACLK
MCLK
Ux
BR
1
UxBR0
UxMCTL
Max.TXError/%
Max.RXError
/%
SynchrTXError/%
UxBR1
Ux
BR
0
UxMCTL
Max.TXError
/%
Max.RXError/%
75
436.
91
1398
1
1
B4
FF
-0.3/0.3
-0.3/
0.3
±2
36
9D
FF
0/0.1
±2
CPU的状态寄存器SR
15-9
8
7
6
5
4
3
2
1
0
保留
V
SCG1
SCG0
OscOff
CPUoff
GIE
N
Z
C
V溢出标志
SCG1SCG0时钟控制位
SCG1置位关闭SMCLK
SCG0置位关闭DCO发生器
OscOff晶体振荡控制位
置位OscOff使晶体振荡器处于停止状态,置位OscOff同时CPUoff位也置
位。
可用NMI或外部中断(系统当前中断允许)将CPU唤醒。
CPUoffCPU控制位
置位CPUoff可使CPU进入关闭模式,可以用所中断允许将CPU唤醒。
GIE全局中断标志位
控制可屏蔽中断
GIE置位CPU可响应可屏蔽中断
GIE置位CPU不响应可屏蔽中断
N负标志
Z零标志
C进位标志
特殊功能寄存器
系统中断处理
当各模块发生中断请求时并且相应的中断允许和通用中断允许位(GIE)置位时,中断服务程
序按以下顺序动作:
[1]CPU处于活动状态:
完成当前所执行的指令.
[2]CPU处于停止状态:
低功耗模式终止.
[3]指向下一条指令的PC值压入堆栈.
[4]SR压入堆栈
[5]如果在执行上条指令时已发生多个中断请求等待服务,则选择最高优先级者.
[6]单中断源标志的中断请求位自动复位,多中断源标志仍保持置位等待软件服务.
[7]通用中断允许位GIE复位;CPUoff位、OSCOff位和SCG1位置位;状态位V、N、Z和C复位;SCG0位保持不变.
[8]相应的中断向量值装入PC,程序从此地址继续执行中断处理.
ME1模块允许寄存器1
7
6
5
4
3
2
1
0
UTXE0
URXE0/USPIE0
初始状态:
PUC后为000H
UTXE0USART0发送允许位
0不允许
1可允许
URXE0USART0接收允许位
0不允许
1可允许
USPIE0USART0发送与接收允许位(在SPI模式)
IFG1中断标志寄存器1
7
6
5
4
3
2
1
0
UTXIFG0
URXIFG0
NMIIFG
OFIFG
WDTIFG
初始状态:
PUC后为082H
UTXIFG0USART0发送中断标志位(F14、15、16、44)
此位上电为UTXIFG0=1,表示可以向发送缓冲器写操作。
对发送缓存进行
写操作时可以复位UTXIFG0。
URXIFG0USART0接收中断标志位(F14、15、16、44)
0无接收到有效字符
1接收到有效字符,读接收缓存可以复位接收时产生的各种错误标志、
RXWAKE位和URXIFGx位。
NMIIFGNMI/RST引脚信号位
OFIFG振荡器失效时置位
0无振荡器失效
1振荡器失效,当XT扫荡器丢失大约100个振荡周期时设置TX振荡器失效
标志OSCFault。
OSCFault标志设置振荡器失效中断标志OFIFG,如果这时振荡器失
效中断允许(OFIE)置位,则将产生非屏蔽中断请求。
OFIFG标志必须由用户软件来
清除。
WDTIFG看门狗中断标志
看门狗模式时溢出或密钥不符时产生置位
IE1中断使能寄存器1
7
6
5
4
3
2
1
0
UTXIE0
URXIE0
ACCVIE
NMIIE
OFIE
WDTIE
初始状态:
PUC后为000H
UTXIE0USART发送中断允许位
0不允许
1允许
URXIE0USART0接收中断使能位允许
0不允许
1允许
ACCVIEFLASH存贮器非法访问中断允许
NMIIENMI中断允许
OFIE振荡器失效中断允许
0不允许
1允许
WDTIE看门狗允许,选看门狗模式无效
0不允许
1允许
ME2模块允许寄存器1
7
6
5
4
3
2
1
0
UTIE1
URXE1/USPIE1
初始状态:
PUC后为000H
UTXE1USART1发送允许位
0不允许
1可允许
URXE1USART1接收允许位
0不允许
1可允许
USPIE1USART0发送与接收允许位(在SPI模式)
IFG2中断标志寄存器2
7
6
5
4
3
2
1
0
UTXIFG1
URXIFG1
初始状态:
PUC后为020H
UTXIFG1USART1发送中断标志位(F14、15、16、44)
此位上电为UTXIFG0=1,表示可以向发送缓冲器写字符。
对发送缓存进行写
操作时可以复位UTXIFG0。
URXIFG1USART1接收中断标志位(F14、15、16、44)
0无接收到有效字符
1接收到有效字符,读接收缓存可以复位接收时产生的各种错误标志、
RXWAKE位和URXIFGx位。
IE2中断使能寄存器2
7
6
5
4
3
2
1
0
UTXIE1
URXIE1
初始状态:
PUC后为000H
UTXIE1USART1发送中断允许位(F14、15、16、44)
URXIE1USART1接收中断允许位(F14、15、16、44)
所谓异步通讯是指通信双方有共同的时钟,通信双方使用各自的时钟,并约定使用同样的通细调,通信需要有16倍于波特率的时钟。
通过寄存器UxR00和UR10粗略调整波特率,再通过UMTL0进一步,通过UCTL0设置串行通信的模式,UTCL0设置产生波特使用的时钟。
设置时注意:
设置通信模块时应该使寄存器UTCL0的SWRT位置位,以便串行通信模块处于复位状态,设置完后再复位SWRT位