7147|9

431

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

eZ430-学习心得(二) [复制链接]

串口是系统与外界联系的重要手段,在嵌入式系统开发和应用中,经常需要上位机实现系统调试及现场数据的采集和控制。一般是通过上位机本身配置的串行口,通过串行通信技术,和嵌入式系统进行连接通信。USART 模块可以自动从任何一种低功耗模式 LPMx 开始自动工作。功能有USART模式,空闲线多级模式,地址位多机模式和UART自动波特率探测模式。

在芯片上的管脚位置为:

P3.4/UCA0TXD/UCA0SIMO P3.5/UCA0RXD/UCA0SOMI

串口配置的步骤是:

1、将相应的管脚设置为串口的功能

P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD

  P3DIR |=BIT4; //P3.4为输出方向

2、设置波特率,由于硬件有波特率小数寄存器,所以误差比较小

//Baud rate divider with 1MHz = 1MHz/9600 = ~104.2

  UCA0CTL1 |= UCSSEL_2;                     // SMCLK

  UCA0BR0 = 104;                            // 1MHz 9600

  UCA0BR1 = 0;                              // 1MHz 9600

3、开启串口功能

UCA0MCTL = UCBRS0;  // Modulation UCBRSx = 1

UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

IE2 |= UCA0RXIE;  // Enable USCI_A0 RX interrupt

__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled

3、中断函数

//  Echo back RXed character, confirm TX buffer is ready first

#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCI0RX_ISR(void)

{

  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?

  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character

}

 

 

UCA0MCTL = UCBRS0;  // Modulation UCBRSx = 1

这句不是很懂,哪位高手解答下,这个寄存器是根据什么做设置的。

这里选用32K时钟,UCA0MCTL设置的是3,为什么?

UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK

  UCA0BR0 = 0x03;                           // 32kHz/9600 = 3.41

  UCA0BR1 = 0x00;                           //

  UCA0MCTL = UCBRS1 + UCBRS0;  // Modulation UCBRSx = 3 [ 本帖最后由 0212009623 于 2011-4-19 14:13 编辑 ]

最新回复

顶一个  慢慢研究  详情 回复 发表于 2012-5-8 21:07
 
点赞 关注

回复
举报

6066

帖子

92

TA的资源

裸片初长成(初级)

沙发
 
赞一个!期待更多心得与大家分享交流!
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

板凳
 
#define UCBRS2              (0x08)    /* USCI Second Stage Modulation Select 2 */
#define UCBRS1              (0x04)    /* USCI Second Stage Modulation Select 1 */
#define UCBRS0              (0x02)    /* USCI Second Stage Modulation Select 0 */

The USCI module is used for serial data communication. The USCI module supports synchronous communication protocols like SPI (3 or 4 pin), I2C and asynchronous communication protocols such as UART, enhanced UART with automatic baudrate detection (LIN), and IrDA.
USCI_A0 provides support for SPI (3 or 4 pin), UART, enhanced UART, and IrDA.
USCI_B0 provides support for SPI (3 or 4 pin) and I2C.


看下msp430f2274的手册,和demo里的
msp430f2274.h文件,这样便于理解!
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(中级)

4
 
支持下
 
个人签名Be myself!
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

5
 
USBRS 是高密度波特率模式的一个设置寄存器。根据datasheet table 15-4里面的设置就好了。具体的原因参看figure 15-1 block diagram以及15章中相关解释。

我想询问lz一个问题。ez430套件,使用usb口有个虚拟的串口,与f2274的串口相连的是一个f16x的pin34 35 而 f16x的pin32 33 与 tusb3410vf相连然后转成u口的。是不是 f2274与f16x通讯的串口速率是规定好的没办法改变了呢?我测试了一下,貌似通过套件u口连接电脑,改变速率就只能收到乱码了。请问楼主如何解决这个问题?一定要弄个电平转换之间从f2274引出串行通讯才可以吗?9600不是很慢?

十分感谢lz的学习心得系列
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(中级)

6
 
波特率是配置好的,固定的。你想波特率自动调节,好像430有种模式吧
 
个人签名Be myself!
 
 

回复

452

帖子

0

TA的资源

五彩晶圆(初级)

7
 
这个可以改动的,具体你可以咨询我或者看下之前同学的帖子,呵呵
 
个人签名人生苦短,何必为声名所累,放开自己心态,去追求自己想要的梦想去吧!http://pytech-inc.taobao.com/
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 7楼 梦之旅 的帖子

请问版主,除了修改与f16x 的pin34 35相连接的 f2274的程序里面 UCBR UCBRS UCBRF 以外 还需要修改什么呢?十分感谢
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 楼主 0212009623 的帖子

UCA0MCTL里面的值=8*(3.41-3)=3.28,去掉小数部分,即为3,这是对波特率的修正的
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

10
 

顶一个  慢慢研究

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表