专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
【MSP430i2xx教程第二讲】时钟系统 & EUSCI_A_UART
2019-07-23 15:44
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
6319
19
1128
本帖最后由 xlhtracy 于 2015-4-20 15:01 编辑
本教程作者为21ic网友
@gaoyang9992006
,回帖参与讨论、提问、分享,就能赢取超多丰厚奖励哦~
@gaoyang9992006
也将随时和大家交流学习中的问题。(
PS:本教程未经允许,谢绝转载
)
活动说明详见:
【学教程,送奖励】GET新技能,和gaoyang一起学习MSP430i2xx
第一讲链接(错过的去补课
):
【MSP430i2xx教程第一讲】怎样使用库函数 & GPIO详解
第三、四讲也已经发布啦:
【MSP430i2xx教程第三讲】24-BitΣ-Δ 模数转换器 & FlashCtl-Flash存储控制器
【MSP430i2xx教程第四讲】电源管理模块 & TLV
感谢大家的热情参与,
前两讲的获奖结果已公布,获奖的亲们向最终持之以恒奖冲刺吧!没获奖的亲们不要气馁,再接再励哈~
说的有点啰嗦了,下面正式开讲:
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
xlhtracy
1楼-- · 2019-07-23 21:20
本帖最后由 xlhtracy 于 2015-4-10 12:31 编辑
第三章 时钟系统(
CS
)
3.1 本章
引言
时钟系统(
Clock
System)模块支持低成本和低功耗。通过使用
4
个内部时钟信号,用户可以在低功耗和性能之间做到最好的平衡。
时钟模块可以配置成无需任何外部组件,使用一个外部电阻器或完全使用
DCO
旁路模式。
时钟模块有四个系统时钟信号可以使用:
ACLK:辅助时钟。当运行在
DCO
时,ACLK
是固定在
32kHz。如果设备是设置在
DCO
旁路模式
,ACLK
运行在旁路时钟频率的
1/512
。
MCLK
:主时钟。
MCLK
可以被1,2,4,8
或
16
分频。
MCLK
通常被
CPU
和系统使用
。
SMCLK:子系统主时钟。SMCLK
可以被
1,2,4,8
或
16
分频。
SMCLK
可以被各个外围模块通过软件选择使用。
SD24CLK:SD24
时钟提供一个
1.024MHz
固定频率的时钟给
Sigma
-Delta ADC(SD24)。
该时钟只为
SD24
的请求所使用
。如果
SD24
功能必须在
DCO
旁路模式下工作
,那么外部时钟频率必须是16.384Mhz
。
这个驱动程序包含在
cs
.c
文件里
,cs.h
头文件包含该应用程序使用的
API
定义
。
3.2
函数总览
宏 #define CS_DCO_FREQ 16384000
1void
GS_setupDCO
( uint8_t mode )使用选中的模式配置
DCO
2void
CS_initClockSignal
(uint8_t clockSource, uint8_t clockSourceDivider)使用分频器初始化时钟信号3uint32_t
CS_getACLK
(void)获取当前
ACLK
的频率(单位
Hz
)
4uint32_t
CS_getSMCLK
(void)获取当前SMCLK
的频率
(单位
Hz
)
5uint32_t
CS_getMCLK
(void)获取当前
MCLK
的频率(单位
Hz
)
6uint8_t
CS_getFaultFlagStatus
(uint8_t mask)获取
DCO
故障(或错误)标志状态
加载中...
xlhtracy
2楼-- · 2019-07-24 01:58
本帖最后由 xlhtracy 于 2015-4-1 11:45 编辑
第四章
EUSCI
通用异步接收器
/
发送器(
EUSCI_A_UART
)
4.1
本章
引言
MSP430i2xx
系列的
EUSC_A_UART
驱动库特性包括
:
奇偶校验或非奇偶校验
独立的发送和接收移位寄存器
分立的发送和接收缓冲寄存器
低位优先或高位优先数据发送和接收
内置空闲线和地址位通信协议的多处理器系统
具有从
LPMx
模式自动唤醒接收器启动的边缘检测
用于错误检测和抑制的状态标志
地址检测的状态标志
用于接收和发送独立的中断能力
在
UART
模式中
,eUSCI
在一
定的位速率下,异步与另外一个设备进行字符的发送和接收。每个字符的时间长度是基于所选择的
e
USCI
的
波特率所固定的。因此,发送和接收函数要使用相同的波特率进行通信。 这个驱动程序包含在
eusci
_a_uart.c
文件里
,
eusci
_a_uart.h
头文件包含该应用程序使用的
API
定义
。
4.2
函数总览
1bool
EUSCI_A_UART_init
( uint16_t baseAddress,EUSCI_A_UART_initParam *param )先进的
UART
模块初始化程序,把初始化参数通过初始化函数写进时钟预分频器。2void
EUSCI_A_UART_transmitData
(uint16_t baseAddress, uint8_t transmitData)从
UART
模块发送出去一个字节3void
EUSCI_A_UART_receiveData
(uint16_t baseAddress)接收一个字节数据。4void
EUSCI_A_UART_enableInterrupt
(uint16_t baseAddress,uint8_t mask)
使能
UART
(独立的)
中断源5void
EUSCI_A_UART_disableInterrupt
(uint16_t baseAddress,uint8_t mask)关闭
UART
(独立的)
中断源6void
EUSCI_A_UART_getInterruptStatus
(uint16_t baseAddress,uint8_t mask)获取当前
UART
中断状态
7void
EUSCI_A_UART_clearInterruptStatus
(uint16_t baseAddress,uint8_t mask)清除
UART
中断源。(备注:清除中断状态,重置中断状态标识)8void
EUSCI_A_UART_enable
(uint16_t baseAddress)启用
UART
模块
9void
EUSCI_A_UART_disable
(uint16_t baseAddress)关闭
UART
模块
10uint8_t
EUSCI_A_UART_queryStatusFlags
(uint16_t baseAddress, uint8_t mask)获取当前
UART
状态标志
.(
查询
UART
当前状态标识
)11void
EUSCI_A_UART_setDormant
(uint16_t baseAddress)把
UART
模块设置在休眠模式12void
EUSCI_A_UART_resetDormant
(uint16_t baseAddress)把
UART
模块从休眠模式唤醒
13void
EUSCI_A_UART_transmitAddress
(uint16_t baseAddress,uint8_t transmitAddress)根据所选的多处理器模式,传送下一个字节标记为地址14void
EUSCI_A_UART_transmitBreak
(uint16_t baseAddress)发送终止15uint32_t
EUSCI_A_UART_getReceiveBufferAddress
(uint16_t baseAddress)返回
RX
缓冲区的
UART
的
DMA
模块的地址。
16uint32_t
EUSCI_A_UART_getTransmitBufferAddress
(uint16_t baseAddress)返回TX缓冲区的
UART
的
DMA
模块的地址。
17void
EUSCI_A_UART_selectDeglitchTime
(uint16_t baseAddress,uint16_t deglitchTime)设置抗尖峰脉冲时间
加载中...
xlhtracy
3楼-- · 2019-07-24 06:32
本帖最后由 xlhtracy 于 2015-4-1 11:44 编辑
void
EUSCI_A_UART_enable
(uint16_t baseAddress) 启用
UART
模块,这将能够操作
UART
模块
。 该函数只有1个参数:baseAddress。
参数
baseAddress
是
EUSCI_A_UART
模块的基地址
加载中...
xlhtracy
4楼-- · 2019-07-24 10:27
本帖最后由 xlhtracy 于 2015-4-1 11:50 编辑
4.3
例程
例程将展示怎样使用EUSCI_A_UART API
来初始化
EUSCI_A_UART
并开始发送字符。
//
使用
SMCLK
频率为
16384000Hz配置
UART
模块
波特率为
115200
//
可以在以下网址计算器计算出配置参数
:
//
http://software-dl.ti.com/msp430/msp430
public sw/mcu/msp430/MSP430BaudRateConverter/index.html
EUSCI_A_UART_ initParam
uartConfig = {
EUSCI_A_UART_ CLOCKSOURCE SMCLK,
// SMCLK Clock Source
8,
// BRDIV = 8
14,
// UCxBRF = 14
34,
// UCxBRS = 34
EUSCI_A_UART_ NO PARITY,
// No Parity
EUSCI_A_UART_ MSB FIRST,
// MSB First
EUSCI_A_UART_ ONE STOP BIT,
// One stop bit
EUSCI_A_UART_ MODE,
// UART mode
EUSCI_A_UART_ OVERSAMPLING_BAUDRATE_GENERATION
// Oversampling Baudrate
};
WDT_hold
(WDT_BASE);
//
设置
DCO
使用内部电阻
,DCO
将被配置在
16.384MHz.
CS_setupDCO
(CS_INTERNAL RESISTOR);
// SMCLK
设置与
DCO
相同的速度
。SMCLK = 16.384MHz
CS_initClockSignal
(CS_SMCLK, CS_CLOCK DIVIDER_1);
//
设置
P1.2
和
P1.3
管脚作为
UART
管脚
。P1.4
管脚作为
LED
输出
GPIO_setAsPeripheralModuleFunctionInputPin
(GPIO_PORT_P1, GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);
GPIO_setAsOutputPin
(GPIO_PORT_P1, GPIO_PIN4);
GPIO_setOutputLowOnPin
(GPIO_PORT_P1, GPIO_PIN4);
//
配置和使能
UART
外设
EUSCI_A_UART_ init
(EUSCI_A0_BASE, &uartConfig);
EUSCI_A_UART_ enable
(EUSCI_A0_BASE);
EUSCI_A_UART_ enableInterrupt
(EUSCI_A0_BASE, EUSCI_A_UART_ RECEIVE_INTERRUPT);
while
(1) {
EUSCI_A_UART_ transmitData
(EUSCI_A0_BASE, TXData);
//
进入休眠并等待退出
LPM
__bis_SR_register(LPM0_bits | GIE);
}
加载中...
xlhtracy
5楼-- · 2019-07-24 13:03
精彩回答 2 元偷偷看……
加载中...
xlhtracy
6楼-- · 2019-07-24 17:17
本帖最后由 xlhtracy 于 2015-4-1 11:54 编辑
本章节的作业:
根据例程,编写串口发送和接收程序,发送
LED
_ON
字符串点亮接收
MCU
的
LED,
发送
LED_OFF,
关闭接收
MCU
的
LED
,发送
LED_TEST
字符串
,返回当前的
LED
状态
。
加载中...
1
2
3
4
下一页
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
第三章 时钟系统(CS)
3.1 本章引言
时钟系统(Clock System)模块支持低成本和低功耗。通过使用4个内部时钟信号,用户可以在低功耗和性能之间做到最好的平衡。 时钟模块可以配置成无需任何外部组件,使用一个外部电阻器或完全使用DCO旁路模式。 时钟模块有四个系统时钟信号可以使用:
- ACLK:辅助时钟。当运行在DCO时,ACLK是固定在32kHz。如果设备是设置在DCO旁路模式,ACLK运行在旁路时钟频率的1/512。
- MCLK:主时钟。MCLK可以被1,2,4,8或16分频。MCLK通常被CPU和系统使用。
- SMCLK:子系统主时钟。SMCLK可以被1,2,4,8或16分频。SMCLK可以被各个外围模块通过软件选择使用。
- SD24CLK:SD24时钟提供一个1.024MHz固定频率的时钟给Sigma-Delta ADC(SD24)。
该时钟只为SD24的请求所使用。如果SD24功能必须在DCO旁路模式下工作,那么外部时钟频率必须是16.384Mhz。 这个驱动程序包含在cs.c文件里,cs.h头文件包含该应用程序使用的API定义。3.2 函数总览宏 #define CS_DCO_FREQ 16384000
1void GS_setupDCO ( uint8_t mode )使用选中的模式配置DCO2void CS_initClockSignal (uint8_t clockSource, uint8_t clockSourceDivider)使用分频器初始化时钟信号3uint32_t CS_getACLK (void)获取当前ACLK的频率(单位Hz)4uint32_t CS_getSMCLK (void)获取当前SMCLK的频率(单位Hz)5uint32_t CS_getMCLK (void)获取当前MCLK的频率(单位Hz)6uint8_t CS_getFaultFlagStatus (uint8_t mask)获取DCO故障(或错误)标志状态
第四章 EUSCI通用异步接收器/发送器(EUSCI_A_UART)4.1 本章引言 MSP430i2xx系列的EUSC_A_UART驱动库特性包括:
- 奇偶校验或非奇偶校验
- 独立的发送和接收移位寄存器
- 分立的发送和接收缓冲寄存器
- 低位优先或高位优先数据发送和接收
- 内置空闲线和地址位通信协议的多处理器系统
- 具有从LPMx模式自动唤醒接收器启动的边缘检测
- 用于错误检测和抑制的状态标志
- 地址检测的状态标志
- 用于接收和发送独立的中断能力
在UART模式中,eUSCI在一定的位速率下,异步与另外一个设备进行字符的发送和接收。每个字符的时间长度是基于所选择的eUSCI的波特率所固定的。因此,发送和接收函数要使用相同的波特率进行通信。 这个驱动程序包含在eusci_a_uart.c文件里,eusci_a_uart.h头文件包含该应用程序使用的API定义。4.2 函数总览1bool EUSCI_A_UART_init ( uint16_t baseAddress,EUSCI_A_UART_initParam *param )先进的UART模块初始化程序,把初始化参数通过初始化函数写进时钟预分频器。2void EUSCI_A_UART_transmitData (uint16_t baseAddress, uint8_t transmitData)从UART模块发送出去一个字节3void EUSCI_A_UART_receiveData (uint16_t baseAddress)接收一个字节数据。4void EUSCI_A_UART_enableInterrupt (uint16_t baseAddress,uint8_t mask)
使能UART(独立的)中断源5void EUSCI_A_UART_disableInterrupt (uint16_t baseAddress,uint8_t mask)关闭UART(独立的)中断源6void EUSCI_A_UART_getInterruptStatus (uint16_t baseAddress,uint8_t mask)获取当前UART中断状态7void EUSCI_A_UART_clearInterruptStatus (uint16_t baseAddress,uint8_t mask)清除UART中断源。(备注:清除中断状态,重置中断状态标识)8void EUSCI_A_UART_enable (uint16_t baseAddress)启用UART模块9void EUSCI_A_UART_disable (uint16_t baseAddress)关闭UART模块10uint8_t EUSCI_A_UART_queryStatusFlags (uint16_t baseAddress, uint8_t mask)获取当前UART状态标志.(查询UART当前状态标识)11void EUSCI_A_UART_setDormant(uint16_t baseAddress)把UART模块设置在休眠模式12void EUSCI_A_UART_resetDormant(uint16_t baseAddress)把UART模块从休眠模式唤醒13void EUSCI_A_UART_transmitAddress(uint16_t baseAddress,uint8_t transmitAddress)根据所选的多处理器模式,传送下一个字节标记为地址14void EUSCI_A_UART_transmitBreak(uint16_t baseAddress)发送终止15uint32_t EUSCI_A_UART_getReceiveBufferAddress(uint16_t baseAddress)返回RX缓冲区的UART的DMA模块的地址。16uint32_t EUSCI_A_UART_getTransmitBufferAddress(uint16_t baseAddress)返回TX缓冲区的UART的DMA模块的地址。17void EUSCI_A_UART_selectDeglitchTime(uint16_t baseAddress,uint16_t deglitchTime)设置抗尖峰脉冲时间
void EUSCI_A_UART_enable (uint16_t baseAddress) 启用UART模块,这将能够操作UART模块。 该函数只有1个参数:baseAddress。 参数baseAddress是EUSCI_A_UART模块的基地址
4.3 例程例程将展示怎样使用EUSCI_A_UART API 来初始化EUSCI_A_UART并开始发送字符。// 使用SMCLK频率为16384000Hz配置UART模块波特率为115200// 可以在以下网址计算器计算出配置参数:
// http://software-dl.ti.com/msp430/msp430 public sw/mcu/msp430/MSP430BaudRateConverter/index.html
EUSCI_A_UART_ initParam uartConfig = {
EUSCI_A_UART_ CLOCKSOURCE SMCLK, // SMCLK Clock Source
8, // BRDIV = 8
14, // UCxBRF = 14
34, // UCxBRS = 34
EUSCI_A_UART_ NO PARITY, // No Parity
EUSCI_A_UART_ MSB FIRST, // MSB First
EUSCI_A_UART_ ONE STOP BIT, // One stop bit
EUSCI_A_UART_ MODE, // UART mode
EUSCI_A_UART_ OVERSAMPLING_BAUDRATE_GENERATION // Oversampling Baudrate
};
WDT_hold(WDT_BASE);
// 设置DCO使用内部电阻,DCO将被配置在16.384MHz. CS_setupDCO(CS_INTERNAL RESISTOR);
// SMCLK设置与DCO相同的速度。SMCLK = 16.384MHz
CS_initClockSignal(CS_SMCLK, CS_CLOCK DIVIDER_1);
// 设置P1.2和P1.3管脚作为UART管脚。P1.4 管脚作为LED输出
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1, GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);
GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN4);
GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN4);
// 配置和使能UART外设 EUSCI_A_UART_ init(EUSCI_A0_BASE, &uartConfig);
EUSCI_A_UART_ enable(EUSCI_A0_BASE);
EUSCI_A_UART_ enableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_ RECEIVE_INTERRUPT);
while(1) {
EUSCI_A_UART_ transmitData(EUSCI_A0_BASE, TXData);
//进入休眠并等待退出LPM
__bis_SR_register(LPM0_bits | GIE);
}
本章节的作业: 根据例程,编写串口发送和接收程序,发送LED_ON字符串点亮接收MCU的LED,发送LED_OFF,关闭接收MCU的LED,发送LED_TEST字符串,返回当前的LED状态。
一周热门 更多>