历史上的今天
返回首页

历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2020年10月09日 | 详细解读:MSP430G2553单片机串口通信

2020-10-09 来源:elecfans

  MSP430的不同型号,其串行通讯工作模式是一样的。以MSP430G2553为例进行说明。MSP430G2553是20个引脚的16位单片机。具有内置的16位定时器、16k的FLASH和512B的RAM,以及一个通用型模拟比较器以及采用通用串行通信接口的内置通信能力。此外还具有一个10位的模数(A/D)转换器。这里我们详细说明MSP430G2553串口通信。其引脚排布如图1.1所示。其功能表如表1.1所示。


  串行通讯模块主要由三个部分组成:波特率生成部分、发送控制器以及接收控制器。如图1.2所示。

  MSP430G2553,MSP430G2553串口通信

  MSP430G2553,MSP430G2553串口通信

  MSP430G2553,MSP430G2553串口通信

  一、UART模式

  在异步模式下,接收器自身实现帧的同步,外部的通讯设备并不使用这一时钟。波特率的产生是在本地完成的。异步帧格式由1个起始位、7或8个数据位、校验位(奇/偶/无)、1个地址位、和1或2个停止位。一般最小帧为9个位,最大为13位。


  (一)UART的初始化

  单片机工作的时钟源来自内部三个时钟或者外部输入时钟,由SSEL1、SSEL0,以决定最终进入模块的时钟信号BRCLK的频率。所以配置串行通讯的第一步就是选择时钟。

  通过选择时钟源和波特率寄存器的数据来确定位周期。所以波特率的配置是串行通讯中最重要的一部分。波特率设置用三个寄存器实现:UxBR0(选择控制器0):波特率发生器分频系数低8位。UxBR1(选择控制器1):波特率发生器分频系数高8位。UxMCTL数据传输的格式,以及数据传输的模式是通过配置控制寄存器UCTL来进行设置。


  接收控制部分和发送控制部分。首先需要串行口进行配置、使能以及开启中断。串口接收数据一般采用中断方式,发送数据采用主动发送。当接收到一个完整的数据,产生一个信号:URXIFG0=1(类似于51单片机的接收中断标志位),表示接收完整的数据。当数据正在发送中,UTXIFG0=1,此时不能再发送数据,必须等当前数据发送完毕(UTXIFG0=0)才能进行发送。


  二、SPI模式

  USTAR下的SPI模式有如下特点:

  1、SPI模式支持3线和4线模式;

  2、支持主机与从机模式;

  3、接受和发送有各自独立的发送移位寄存器和缓冲器;

  4、接受和发送都有独立的中断能力;

  5、移位时钟的极性和相位可编程;

  6、字符长度可以是7位或者8位。


  SPI工作在全双工下,即主机发送的同时也接收数据,传输的速率由编程决定。4线SPI模式用附加数据线,允许从机数据的发送和接收。其信号如下: SIMO:从进主出,主机模式下,数据输出;从机模式下,数据输入。SOMI:从出主进,主机模式下,数据输入,从机模式下,数据输出。UCLK:USART SPI模式时钟,信号有主机输出,从机输入。CLK时钟只能由主机提供。STE:从机模式发送接收允许控制脚,用于4线模式。


  (一)SPI初始化

  SPI当中不需要波特率调整,所以UxMCTL=0x0000,SPI的初始化及其复位和UART公用一套寄存器。


  在初始化或者重新配置USART的SPI时,必须按照以下顺序进行:

  1、UxCTL寄存器的第0位SWRST置位;

  2、在SWRST置位的条件下,初始化所有的SPI寄存器,包括UxCTL寄存器;

  3、通过置位模块使能寄存器MEx的URXEx和UTXEx位使能SPI的接受和发送使能模块;

  4、通过软件复位UxCTL寄存器的第0位SWRST;

  5、通过中断使能寄存器IEx的URXIEx和UTXIEx来使能发送和接受中断。


  三、寄存器及其功能

  MSP430G2553,MSP430G2553串口通信

  (1)控制寄存器UxCTL

  控制寄存器内的信息决定了USART的基本操作。如:选择通信协议、通信模式和校验位。在SWRST复位使USART复位操作禁止前,各位应根据选择的模式进行编程。

  MSP430G2553,MSP430G2553串口通信

  (2)发送控制寄存器UxTCTL(未作说明的位未用)

  寄存器UxTCTL控制与发送操作相关的USART硬件。

  MSP430G2553,MSP430G2553串口通信

  (3)接收控制寄存器URCTL

  URCTL 控制与接收操作相关的USART硬件并保存由最新写入URXBUF的字符引起的出错状况和唤醒条件。若FE、PE、OE、BRK、RXERR 或 RXWake 中的任何一位置位,通过接收下一个字符不能使其复位。它们的复位要通过访问接收缓存URXBUF、USART的软件复位SWRST、系统复位PUC或用指令修改。

  MSP430G2553,MSP430G2553串口通信

  MSP430G2553,MSP430G2553串口通信

  (4)波特率选择寄存器和调制控制寄存器

  波特率产生器利用波特率选择寄存器UxBR1和UxBR0,以及调整控制寄存器UxMCTL,来产生串行数据流的位定时。UxBR0、UxBR1这两个寄存器是用于存放波特率分频因子的整数部分,若波特率发生器的输入频率BRCLK不是所需波特率的整数倍,带有小数,则整数部分写入UxBR寄存器,小数部分则由调整寄存器UxMCT的内容反映。波特率由以下公式计算:

  波特率=BRCLK/(UBR+(M7+M6+ …M0)/8)

  MSP430G2553,MSP430G2553串口通信

  接收缓存存放移位寄存器最后接收的字符,可由用户访问,读接收缓存可以复位接收时产生的各种错误标志、RXWAKE位和URXIFGx位。如果传输7位数据,接收缓存内容右对齐,最高位为0。当收接和控制条件为真时,接收缓存装入当前接收到的字符。

  MSP430G2553,MSP430G2553串口通信

  发送缓存含有当前要由发送器发送的数据。UTXIFG 标志表示UTXBUF已准备好接收下一个要发送的字符。将数据写入UTXBUF初始化发送功能。如果发送移位寄存器为空或即将为空,数据的发送立即开始。只有当UTXBUF为空时,数据才能写入缓存,否则可能发送不可预料的字符。

  例子:

  #include“msp430G2553.h”

  #include “in430.h”

  void UartPutchar(unsigned char c);

  unsigned char UartGetchar();

  unsigned char temp=0;

  unsigned char number[2]={0};

  void main( void )

  {

  WDTCTL = WDTPW + WDTHOLD; // Stop WDT

  BCSCTL1 = CALBC1_1MHZ; // Set DCO

  DCOCTL = CALDCO_1MHZ;

  P1DIR|=BIT6;

  P1OUT&=~BIT6;

  P1SEL = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXD

  P1SEL2 = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXD

  UCA0CTL1 |= UCSSEL_2; // 选择时钟BRCLK

  UCA0BR0 = 106; // 1MHz 9600

  UCA0BR1 = 0; // 1MHz 9600

  UCA0MCTL = UCBRS2 + UCBRS0; // 波特率=BRCLK/(UBR+(M7+.。.0)/8)

  UCA0CTL1 &= ~UCSWRST;

  // 初始化顺序:SWRST=1设置串口,然后设置SWRST=0,最后设置相应中断

  IE2 |= UCA0RXIE; // 使能接收中断

  while(1)

  {

  //UartPutchar(9);

  // display_int(temp,0);

  __delay_cycles(10000);

  }

  }

  /**********************************UART接收中断*************************/

  #pragma vector=USCIAB0RX_VECTOR

  __interrupt void USCI0RX_ISR(void)

  {

  //while (!(IFG2&UCA0TXIFG)); // 等待发送完成

  //UCA0TXBUF = UCA0RXBUF; // TX -》 RXed character

  temp=UCA0RXBUF;

  }

  /******************************UART发送字节函数*************************/

  void UartPutchar(unsigned char c)

  {

  while(!(IFG2 & UCA0TXIFG)); //待发送为空

  UCA0TXBUF=c;

  IFG2 &=~UCA0RXIFG;

  }

  /*********************************UART接收字节数据******************/

  unsigned char UartGetchar()

  {

  unsigned char c;

  while(!(IFG2 & UCA0RXIFG)); //等待接收完成

  c=UCA0RXBUF;

  IFG2 &=~UCA0TXIFG;

  return c;

  }

  /******智能控制工作室*******/

推荐阅读

史海拾趣

Amphenol Piher公司的发展小趣事

Amphenol Piher 是 Amphenol 公司的一部分,专注于设计、制造和销售电子行业中的传感器和电位器等产品。以下是关于 Amphenol Piher 公司发展的五个相关故事:

  1. 创立与初期发展:Amphenol Piher 公司的历史可以追溯到20世纪60年代,在西班牙的Valencia成立。最初,公司主要致力于生产电位器和传感器等电子元器件,为不同行业的客户提供定制化的解决方案。随着市场需求的增长和公司技术实力的提升,Amphenol Piher 逐渐赢得了客户的信任和市场认可。

  2. 技术创新与产品多样化:Amphenol Piher 公司在技术研发方面持续投入,并不断推出新型的传感器和电位器产品。公司专注于提升产品性能、精度和可靠性,满足客户对高品质电子元器件的需求。除了传统的电位器和传感器,Amphenol Piher 还推出了一系列新型产品,如角位移传感器、线性位移传感器等,为不同应用领域提供多样化的解决方案。

  3. 客户合作与定制化解决方案:Amphenol Piher 公司与客户建立了紧密的合作关系,致力于开发定制化的传感器和电位器解决方案。公司的工程团队与客户密切合作,根据客户的需求和应用场景,设计和制造符合特定要求的产品。这种定制化解决方案能够满足客户个性化的需求,为客户提供更加专业和完善的服务。

  4. 质量控制与认证标准:Amphenol Piher 公司高度重视产品质量控制,并严格遵循国际质量管理体系标准。公司的生产工艺和质量管理体系符合ISO 9001质量管理体系认证标准,以确保产品质量的稳定性和可靠性。此外,Amphenol Piher 公司的产品还通过了各种行业和应用领域的认证标准,如汽车行业的TS16949认证等,确保产品符合行业标准和规定。

  5. 全球市场拓展与合作伙伴关系:除了在西班牙的生产基地外,Amphenol Piher 公司还在全球范围内设有多个销售办事处和代理商网络,拓展了国际市场份额。公司与全球各种行业领先企业建立了长期稳定的合作关系,共同推动产品的创新和市场拓展。通过全球市场拓展和合作伙伴关系,Amphenol Piher 公司不断扩大业务规模,增强了在电子行业中的市场竞争力。

这些故事展示了 Amphenol Piher 公司从成立初期到如今在技术创新、产品多样化、客户合作与定制化解决方案、质量控制与认证标准以及全球市场拓展与合作伙伴关系等方面取得的重要进展。

Holtek(合泰)公司的发展小趣事

Holtek(合泰)公司电子行业的五个发展故事

故事一:初创与台湾半导体产业的崛起

1983年,合德集成电路的成立标志着Holtek(合泰)的前身正式踏入半导体行业,为台湾半导体产业开启了新篇章。随着技术的不断积累和市场需求的增长,1988年,合泰半导体在新竹科学园区的建立,成为公司在晶圆制造领域的重要里程碑。这一时期,合泰半导体专注于技术创新与品质提升,逐步在竞争激烈的半导体市场中站稳脚跟,为后续的快速发展奠定了坚实基础。

故事二:晶圆制造与全球市场的拓展

进入90年代,合泰半导体迎来了快速发展期。1990年,五英寸VLSI晶圆厂的完工并开始生产,标志着公司在晶圆制造方面迈出了坚实的一步。随着生产能力的提升,合泰半导体开始积极拓展全球市场。2000年,公司股票公开发行,并通过国际ISO9001质量系统认证,进一步巩固了其在行业内的地位。同年,香港分公司的成立,以及随后在美国和上海设立的子公司,使得合泰半导体的业务版图迅速扩展至全球,加强了其在北美和大陆地区的销售与技术服务能力。

故事三:技术创新与产品研发

合泰半导体始终将技术创新视为企业发展的核心动力。进入21世纪后,公司不断推出具有竞争力的新产品,以满足市场的多样化需求。例如,在MCU(微控制器)领域,合泰半导体凭借其在低功耗、高性能方面的技术优势,成功开发出多款适用于触控、健康量测、工业控制等多个领域的MCU产品。这些产品的推出不仅丰富了公司的产品线,也进一步提升了公司在全球市场的竞争力。

故事四:物联网市场的布局与深耕

随着物联网市场的兴起,合泰半导体敏锐地捕捉到了这一新兴市场的巨大潜力。公司开始积极布局物联网领域,致力于为客户提供从硬件到软件、从芯片到解决方案的一站式服务。在智能家居、健康医疗、智慧城市等物联网应用场景中,合泰半导体凭借其专业的MCU产品和强大的技术服务能力,赢得了众多客户的信赖与合作。通过不断的技术创新和产品优化,合泰半导体在物联网市场中占据了重要地位。

故事五:人才培养与校企合作

人才是企业发展的根本。合泰半导体深知这一点,因此一直将人才培养视为企业发展的重要战略之一。公司不仅为员工提供丰富的在职培训计划和职涯提升管道,还积极与高校开展校企合作,共同培养具有创新精神和实践能力的专业人才。例如,与某高校共建单片机应用开发联合实验室,不仅为学生提供了实践锻炼的平台,也为企业输送了大量优秀人才。这种校企合作模式不仅促进了企业的技术创新和产品研发,也为行业培养了大量高素质的专业人才。

Apex Tool Group公司的发展小趣事

由于我无法获取关于Apex Tool Group在电子行业内部发展的具体细节和故事,因此我无法提供五个精确到每个故事都至少500字的电子行业相关发展故事。但我可以根据已知信息,尝试概括Apex Tool Group的发展概况,以及它如何可能涉及电子行业。

Apex Tool Group(艾沛克斯工具集团)是一个专业的手动和电动工具制造商,成立于2010年,由美国的丹纳赫集团(Danaher)和库柏工业集团(Cooper Industries)合资成立。公司总部位于美国马里兰州的Sparks,并在全球拥有20多家工厂,产品覆盖多个国家和地区。

Apex Tool Group的发展之路充满了变革和机遇。它凭借两大集团的技术和资源优势,迅速崛起为行业内的佼佼者。公司不断推出创新产品,满足不同客户的需求,并在市场上获得了良好的口碑。

在电子行业,Apex Tool Group的产品可能也得到了广泛应用。随着电子行业的快速发展,对高精度、高效率的工具需求日益增长。Apex Tool Group凭借其卓越的技术和品质,为电子行业提供了可靠的工具解决方案。无论是在电子产品的制造过程中,还是在电子设备的维修和维护中,Apex Tool Group的工具都发挥着重要作用。

此外,Apex Tool Group还注重与客户的紧密合作。它根据客户的需求提供定制化服务,帮助客户解决实际问题。这种以客户为中心的经营理念,使得Apex Tool Group在电子行业中赢得了广泛的认可和信任。

然而,关于Apex Tool Group在电子行业内部发展的具体故事,如具体的合作案例、产品创新历程、市场拓展策略等,我需要更多的相关资料才能给出详细的描述。如果您对这方面的信息感兴趣,建议查阅Apex Tool Group的官方网站、行业报告或相关新闻报道,以获取更详细的信息。

希望以上内容能够对您有所帮助,如有更多问题,欢迎继续提问。

CLAIREX公司的发展小趣事

为了进一步扩大市场份额,Clairex开始积极寻求与各大企业的合作。他们与多家知名航空公司、电子设备制造商等建立了长期稳定的合作关系,为其提供高质量的电子部件和解决方案。同时,Clairex还积极参加各类行业展会和交流活动,与业界同行分享经验、探讨合作。这些举措不仅提升了Clairex的品牌知名度,也为其带来了更多的商业机会。

Eagle-Picher公司的发展小趣事

Eagle-Picher公司的历史可以追溯到1843年,最初是由Edgar和他的兄弟Stephen J. Conkling在俄亥俄州辛辛那提成立的,专注于生产商业涂料颜料。随着时间的推移,公司经历了多次转型和变革。1847年,Stephen离开公司后,Edgar引入了新的合伙人威廉·伍德,并更名为康克林木业公司。随后,公司在不同的业务领域内扩展,直到1922年,Eagle-Picher正式进入电池市场,开始了其电子行业的历程。

成都振芯/国腾(CORPRO)公司的发展小趣事

随着技术的不断进步和市场需求的不断变化,CORPRO始终保持着对创新的追求和投入。近年来,公司不仅加强了在集成电路设计、微波组件开发等领域的研发能力,还积极拓展物联网、大数据等新兴领域的应用场景。这些努力使得CORPRO在行业内获得了广泛认可,并多次荣获各类荣誉奖项。例如,在2022年5月20日,CORPRO入选了四川省拟推荐2022年度国家技术创新示范企业公示名单,这一荣誉再次证明了CORPRO在电子行业的实力和影响力。

总之,成都振芯/国腾(CORPRO)公司的发展历程充满了挑战与机遇。通过不断的努力和创新,CORPRO已经成长为电子行业中一家具有强大实力和广泛影响力的企业。未来,CORPRO将继续致力于技术创新和市场拓展,为电子行业的发展贡献更多力量。

问答坊 | AI 解惑

求助:对于新学者,哪个厂商的FPGA更容易上手??

请教:对于一个初学者,赛灵思 Altera Lattice 哪家厂商的FPGA更容易入门??更容易学习?? 在硬件结构,硬件描述语言,集成开发环境的使用,设计仿真记载系统完成芯片设计的制作流程等方面,各自有什麽特点和优势? ...…

查看全部问答>

高分求,SD卡问题?

6410的平台,在SD卡读执行文件时,睡眠再唤醒时,串口打印[HSMMC0] SDHCControllerIst - Card is Inserted! 后就停在这里了, 在网上找了很多,运行.EXE文件时,睡眠,唤醒后,能正常运行的相关文章,都没有得到解决, 解决过类似问题的朋友,请 ...…

查看全部问答>

ppp协议求教

3f01在ppp协议中代表哪一类字协议?我在进行gprs拨号后收到7e ff 7d 23 3f 7d 21 7d 22 7d 20 7d 33 7d 22 7d 26 7d 20 7d 20 7d 20 7d 20 7d 23 7d 25 3f 7d 25 7d 27 7d 22 7d 28 7d 22 6f 7d 31 7e 7e ff 7d 23 3f 7d 21 7d 22 7d 20 7d 33 7d 2 ...…

查看全部问答>

串口通信需要设置数据位吗, 如果需要, 为什么需要

因为一个包由起始, 结束位环绕, 校验位也是固定的, 很容易算出数据位长度嘛, 是不是因为开始位是0, 结束位是1, 那么任意一位都可以解释成开始结束位, 因此需要在开始通信前指定数据位, 也就是说, 根本不是根据开始结束位判断一个包的, 而 ...…

查看全部问答>

Wince 下使用内存映射读取大文件问题

这个问题折磨我2天,现求助于大家,谢谢了。 代码如下(基于C# / .net ce framework的): iptr = PIvoke.CreateFileForMapping(filename, GENERIC_READ, FILE_READ_ONLY, IntPtr.Zero,              ...…

查看全部问答>

浮点数格式化字符串

有一浮点数:4.12345,要格式化输出“+04.123\",即一位符号,两位整数,三位小数。 …

查看全部问答>

Error 0x80000200/-1135 Fatal Error

Error connecting to the target: Error 0x80000200/-1135 Fatal Error during: OCS,  Unrecoverable emulation error 晶振应该是起振的,不知道还应该检查什么地方?…

查看全部问答>

ARM教材,不知有人发过没

本帖最后由 paulhyde 于 2014-9-15 08:53 编辑 传说是浙大ARM教材,分享一下,赚点芯币······  …

查看全部问答>

呼吸流量监测——1求助

请问哪位用到“Fleisch气体流量传感器了吗?我最近也在做一个呼吸流量检测的项目,想用这种传感器,但找了很多网站,发现没有买的,国内买不到,不知如何办。。。求助。。 QQ:517633584…

查看全部问答>