打印

【MSP430i2xx教程第二讲】时钟系统 & EUSCI_A_UART

[复制链接]
楼主: xlhtracy
手机看帖
扫描二维码
随时随地手机跟帖
101
anvy178| | 2015-4-3 08:57 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 anvy178 于 2015-4-6 21:41 编辑
强仔00001 发表于 2015-4-1 12:15
占座,有些问题:现在的MSP430的DCO产生的时钟频率和接外部晶振产生的频率那个更稳定和准确,还 ...

这个很明显的  使用外部时钟  然后  再分频成32k  这样子 肯定比使用内部时钟耗电,  但是从可靠性来说  外部时钟可靠,如果外部时钟使用好的晶振 也会比内部的32K 频率稳定些

使用特权

评论回复
102
anvy178| | 2015-4-3 09:02 | 只看该作者
hanzhenfei 发表于 2015-4-1 12:44
DCO旁路模式什么概念?

旁路模式  就是 不利用内部的电路结构来产生时钟旁路的意思 就是  站在一边 看   不起作用 ,把内部的时钟结构旁路了 ,就是内部的时钟源结构不起作用了 ,旁路了 以后  就需要接一个外部时钟给cpu用了。

使用特权

评论回复
103
anvy178| | 2015-4-3 09:09 | 只看该作者
Leeone 发表于 2015-4-1 17:00
1、内部振荡器能不能屏蔽,外接有源晶振
2、内置空闲线和地址位通信协议的多处理器系统,这个是怎么应用的 ...

可以啊 ,利用dco模式  把内部的振荡器  屏蔽掉就行了,然后  就从aclk脚 输入有源晶振的频率  但是  频率必须是16.384Mhz

使用特权

评论回复
104
anvy178| | 2015-4-3 09:11 | 只看该作者
月下飞鸿 发表于 2015-4-1 20:58
刚学430,不太懂,有个弱智的问题想问一下,如果不是MSP430i2系列的单片机,而是MSP430F6系列的,可不可以 ...

ti 提供有库函数 就可以   没有就不行了

使用特权

评论回复
105
月下飞鸿| | 2015-4-3 09:19 | 只看该作者
mintspring 发表于 2015-4-2 22:14
你说的很对,这根本不会收到一个字符串,一次只能收到一个字符,对吧? ...

说实话,我真心不懂,但是我觉得应该是收到的字符,而不是字符串

使用特权

评论回复
106
anvy178| | 2015-4-3 09:24 | 只看该作者
月下飞鸿 发表于 2015-4-1 21:20
看到例程上有这么一段程序:
CS_initClockSignal(CS_MCLK, CS_CLKOCK_DIVIDER_8);
CS_initClockSignal(CS_S ...

这个 分频系数 是根据你的需要  选择   ,你想跑快点 就 分少点。
8分频后 肯定比2分频值小的,因为是同一个时钟源。mclk 大也行 ,
这个没有问题  他们两个是独立的。

使用特权

评论回复
107
anvy178| | 2015-4-3 09:28 | 只看该作者
fyliuxue 发表于 2015-4-2 10:04
msp430可以使用超过32.768kHz以上的外部晶振吗?

可以啊   除非是 专门接32.768的那两个脚  (有些是RTC时钟单独提供外部时钟
源的)

使用特权

评论回复
108
anvy178| | 2015-4-3 09:31 | 只看该作者
734774645 发表于 2015-4-2 16:43
我看了一下那个单片机的技术手册,跟楼主的教程对比了一下,发现了一个问题,就是串口UART可选的时钟有多种 ...

你选择11 还是smclk的意思  就是说 11 10  都是smclk

使用特权

评论回复
109
anvy178| | 2015-4-3 11:18 | 只看该作者
本帖最后由 anvy178 于 2015-4-3 11:33 编辑
gaoyang9992006 发表于 2015-4-2 10:54
这个需要大家一起讨论啊,哈哈,谁先研究出来,我到时候给谁奖

@Leeone      
    内置空闲线和地址位通信协议  说白了 其实就是单片机的串口通信的sm2位的功能,大家应该知道单片机sm2  用来 干啥的吧?
在多机通信中 是用来 区分地址和数据的。
         好,下面再回来说明MSP430这个系列的增强型串口的 空闲线   地址位。其实是用两种不同的办法实现同一个功能。你选择用
空闲线的办法可以,地址位的也可以。空闲线 大家可能觉得抽象 ,我就大概说:总线要空闲 莫非 就是拉高 ,因为多个设备串在一起
的时候  ,起决定性的是低电平。不发数据的机,你必须保持高电平,因为都在一条线上,是线与的 关系,你一直低的话,就会堵死。
大家都动不了,所以交通就会繁忙,闲不了。所以要空闲就要保持高电平。所以说 ,内置空闲线就是不用你处理这个空闲的功能(也
就是手动置高电平,跑过软件模拟单总线的同学应该明白,比如说I2c)。
       再说回来,430的内置空闲线,当你选
择这个模式的时候(通过寄存器配置),它的接收跟发送线,在发完数据之后
会自动将总线拉高置为空闲。拉多长时间这个不用你里,你只要在相应的寄存器里设置好标志就行了。
       下面具体对空闲模式举个例子来说明吧 ,这样好明白些。
        正常来说,我们大家用单片机的串口来说 一有数据来  就进入串口中断,然后就处理数据。如果是N多个机器在一条总线上工作,一个机器发送数据,所以的机器都会中断,这样子 会导致每个机器都会很忙。 但是 在空闲模式下,就不会出现这种情况。下面说下思路,大家跟着思路应该就明白,不明白再问吧。
       思路:假如N多台在一条总线上的机器。  
第一步:  地址发送
发送方:  机器A要发数据给另外一台机器B通信。那么机器A首先要发送的就是 机器B的地址,在发送地址之前,把UCTXADDR置为1,表示传送地址。这样的话,机器A把数据发出以后,就会自动将总线拉高 一段时间  就是手册里说的   不少于10个BITs的总线拉高时间。
接收方: 机器B,判断到这个是自己的地址之后(当然其它机器也会在这个时候会中断一次,因为一开始大家肯定都是处于接收地址的状态),就会改变自己判断总线空闲时间长度,(其实就是转为准备接收数据的状态)。
第二步:数据发送
发送方: 机器A,在发完地址之后,就会发数据,但是在这个过程中,间隔拉高总线电平的时间  不能够超过10bitS (当然啦 ,这个不用你干,你就设置好相对应的标志位就好了),这样子的话,接收方才能区分出来,什么是数据,什么是地址。在发送数据的过程中,因为,总线的空闲时间少于10bitS 。其它的没有接收到自己地址的,还处于接收地址的状态,所以他们不会进入中断。这样就避免了总线上有数据的时候,CPu 频繁的中断。
接收方:机器B,就会开始接收数据,直接到总线再次进入接收地址的状态。
     
所以 ,总的来说 ,这里的内置空闲总线,不是说啥都不干,(串口的时钟会一直对总线采样的)。只是用来区分发送的是地址,还是数据的一种手段而已。所以就不会有@Leeone串口接受空闲中断 的这种说法。 串口 要中断 ,就只有接收到数据的时候,(或者更加严格的说 ,是接收到属于自己的东西时候才会中断)。
    对于另外一个 地址位通信 就更加好理解了,  就是通过在发送的数据中  多加一个位 来表示传送的是数据  还是地址,这个跟单片机中的SM2 位  基本一样了。接收,发送过程跟上面一样   只是大家设置的标志位不一样而已 。

使用特权

评论回复
110
强仔00001| | 2015-4-3 13:08 | 只看该作者
anvy178 发表于 2015-4-3 08:57
这个很明显的  使用外部时钟  然后  再分频成32k  这样子 肯定比使用内部时钟省电,  但是从可靠性来说   ...

这也是,这要具体看个人的需求了

使用特权

评论回复
111
gaoyang9992006| | 2015-4-3 13:19 | 只看该作者
anvy178 发表于 2015-4-3 11:18
@Leeone           内置空闲线和地址位通信协议  说白了 其实就是单片机的串口通信的sm2位的功能,大家应该 ...

嗯,说的很好。

使用特权

评论回复
112
gaoyang9992006| | 2015-4-3 13:22 | 只看该作者
另外这个如果结合着那个结构图就更好理解了。请看用户手册的结构图,然后对比一下。

使用特权

评论回复
113
gaoyang9992006| | 2015-4-3 13:23 | 只看该作者
h615 发表于 2015-4-2 17:35
以前用4位机的,现在多32位机,好高端

这个是16位机器,TI刚刚推出了32位的MSP单片机,代号是MSP432.

使用特权

评论回复
114
gaoyang9992006| | 2015-4-3 13:25 | 只看该作者
月下飞鸿 发表于 2015-4-1 21:20
看到例程上有这么一段程序:
CS_initClockSignal(CS_MCLK, CS_CLKOCK_DIVIDER_8);
CS_initClockSignal(CS_S ...

通过CS模块的结构图我们可以看出来,系统DCO的标准输出是16.384MHz,也就是最大频率,如果经过分频输出给不同的外设,肯定8分频的频率小于2分频的。

使用特权

评论回复
115
gaoyang9992006| | 2015-4-3 13:25 | 只看该作者
dirtwillfly 发表于 2015-4-1 22:11
45楼说的比较全了,我再补充一下。
具体选择多少分频,是根据具体需要来选择的。运行频率高,程序执行的 ...

:lol他那个全面的是复制的我教程的内容。

使用特权

评论回复
116
gaoyang9992006| | 2015-4-3 13:28 | 只看该作者
lvyunhua 发表于 2015-4-1 22:33
试着写了下发送和接收程序,接收在中断进行。
uint8_t Rcvdat[10],SendDat[10]i, i=0;

每次只收一个字节的,我们可以这样,不是有停止位和启动位吗,先建立一个规则,把这个指令放到规则里,我们检测是否收到了一条完整的信息,在这条字符串找到关键词。然后判断。:lol

使用特权

评论回复
117
gaoyang9992006| | 2015-4-3 13:28 | 只看该作者
强仔00001 发表于 2015-4-1 23:04
那还是用内部的,有时间做做MSP430低功耗这方面的,最近出了个MSP432,不知道性能咋 ...

性能非常强劲,而且是32位的,且集成了TI独家知识产权的低功耗技术。

使用特权

评论回复
118
anvy178| | 2015-4-3 13:31 | 只看该作者
mintspring 发表于 2015-4-2 22:14
你说的很对,这根本不会收到一个字符串,一次只能收到一个字符,对吧? ...

串口的buff  是字节的  一次只能一个字节  所以只能是一个字符

使用特权

评论回复
119
hanzhenfei| | 2015-4-3 15:11 | 只看该作者
gaoyang9992006 发表于 2015-4-3 13:25
他那个全面的是复制的我教程的内容。

呵呵,见笑了。我感觉你写的很详细了就直接复制过来了。

使用特权

评论回复
120
稳稳の幸福| | 2015-4-3 15:12 | 只看该作者

根据这个图,再看教程很清楚明了啊。

使用特权

评论回复
评论
dirtwillfly 2015-4-3 21:49 回复TA
这个图在10楼发过了 
发新帖 本帖赏金 5.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则