msp430f541x、msp430f543x多达4个通用串行通信接口(USCI)模块,支持多种串行通信模式,不同的 USCI 模块支持不同的模式。
USCI_Ax模块支持:
UART模式;
IrDA通信的脉冲整形;
LIN通信的自动波特率检测;
SPI模式;
USCI_Bx模块支持:
IIC模式;
SPI模式;
UART模式:
在异步模式下,USCI_Ax模块通过两个外部引脚UCAxRXD和UCAxTXD将芯片连接到外部系统。当UCSYNC
位清零时,选择UART模式。
UART模块特征包括:
带奇校验、偶校验或非奇偶校验的7或8位数据;
独立的发送和接收移位寄存器;
独立的发送和接受缓冲寄存器;
发送和接收的独立中断能力;
最低位优先或最高位优先的数据发送和接收;
多处理器系统的内置空闲线路和地址位通信协议;
用于自动从LPMx模式唤醒的接收机起始边沿检测;
波特率可编程控制,支持小数波特率调制;
用于错误检测和抑制的状态标志;
用于地址检测的状态标志;
一、USCI初始化和复位
PUC或置位UCSWRST,可以使USCI复位。PUC后,UCSWRST位自动置位,这使 USCI保持在复位状态。UCSWRST位置位,将使UCRXIE,UCTXIE,UCRXIFG,UCRXERR,UCBRK,UCPE,UCOE,UCFE,UCSTOE 和 UCBTOE 位复位,UCTXIFG 位置位。清除 UCSWRST 将释放 USCI,使其进入操作状态。
推荐使用以下过程,进行初始化或重新配置:
1.置位UCSWRST (BIS.B #UCSWRST,&UCAxCTL1);
2.2设置UCSWRST=1,初始化所有的USCI寄存器(包括UCAxCTL1);
3.配置端口;
4.软件清除UCSWRST(BIC.B #UCSWRST,&UCAxCTL1);
5.通过UCRXIE和/或UCTXIE使能中断(可选);
例:串口助手发什么就返回什么.
#include "msp430x54x.h"
// ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz
// P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P5SEL = 0xc0; // P5.6,7 = USCI_A1 TXD/RXD
UCA1CTL1 |= UCSWRST; // **Put state machine in reset**
UCA1CTL1 |= UCSSEL_2; // SMCLK
UCA1BR0 = 9; // 1MHz 115200 (see User's Guide)
UCA1BR1 = 0; // 1MHz 115200
UCA1MCTL |= UCBRS_1 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0
UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
}
// Echo back RXed character, confirm TX buffer is ready first,发送数据之前确定发送缓存准备好
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
switch(__even_in_range(UCA1IV,4))
{
case 0:break; // Vector 0 - no interrupt
case 2: // Vector 2 - RXIFG
while (!(UCA1IFG&UCTXIFG)); // USCI_A1 TX buffer ready?
UCA1TXBUF = UCA1RXBUF; // TX -> RXed character
break;
case 4:break; // Vector 4 - TXIFG
default: break;
}
}
// UCTXIFG=0x02,UCA1IFG&UCTXIFG,当UCA1IFG的UCTXIFG位为1时,说明UCA1TXBUF为空,跳出while循环循环;当UCTXIFG位为0时UCA1TXBUF不为空,停在循环。
二、USCI中断
USCI只有一个发送和接收共用的中断向量,USCI_Ax和USC_Bx不共用中断向量。
2.1 USCI 发送中断操作
发射机置位 UCTXIFG 中断标志,这表明 UCAxTXBUF 已经准备好接收另一个字符(即UCAxTXBUF 为空)如果UCTXIE 和GIE 也置位的话,将产生中断请求。如果将字符写入,UCAxTXBUF、UCTXIFG将自动复位而无需软件复位。PUC之后或UCSWRST = 1时,UCTXIFG 置位、UCTXIE 复位。
2.2 USCI 接收中断操作
每接收到1个字符并将其载入到 UCAxRXBUF 时,UCRXIFG 中断标志置位,如果 UCTXIE 和 GIE 也置位的话,将产生中断请求。UCRXIFG 和UCRXIE 可以通过系统复位PUC信号或 UCSWRST = 1复位。当读取UCAxRXBUF时,UCRXIFG 自动复位。
2.3 UCAxIV,中断向量发生器
USCI 中断标志具有一定的优先次序,组合使用一个中断向量。中断向量寄存器 UCAxIV 用于确定产生中断的标志。使能的具有最高优先级的中断在 UCAxIV寄存器内产生一个数值,该数值可以加到程序计数器上,从而自动跳转到相应的软件子程序处。禁止中断不会影响 UCAxIV的值。
对UCAxIV寄存器的任何访问,读或写,将会自动复位挂起的优先级最高的中断标志。如果另一个中断标志置位,在响应完第一个中断后,立即产生另一个中断。
三、寄存器
3.1
此寄存器主要是定义数据通信的字符格式,UART 的字符格式包括一个起始位,7 或 8 位数据位,一个奇/偶/非奇偶校验位,地址位(地址位模式),以及1或2个停止位,UCMSB位控制传送方向,选择低位或高位优先,UART 通讯的典型选择是低位优先。
PUC之后全为0,即 字符长度8、1个停止位、无奇偶校验、低位优先,UART模式。
UCMODEx Bits2_1位:
两个芯片进行异步通信时,对协议来说,不需要多处理器格式。当3 个或更多个芯片通信时,USCI 支
持线路空闲和地址位多处理器通信格式。
3.11 线路空闲多处理器模式(待续)
3.12 地址位多处理器模式(待续)
3.13 自动波特率检测(待续)
3.2
此寄存器主要是配置USCI,PUC后时钟选择外部时钟,所以初始化时除了置位 UCSWRST 位外还需配置时钟源。其它的默认就行。
四、低功耗 UART模式下使用 USCI模块
USCI 模块提供低功耗模式下的自动时钟激活功能。当 USCI 时钟源由于设备处于低功耗模式不活动时,无论时钟源的控制位如何设置,USCI 模块会在需要时激活时钟源,时钟将保持活动状态直到 USCI模块返回空闲状态。USCI模块返回到闲状态后,将反转时钟源控制位的设置。
eg.
void InitUARTA1(void)
{
UCA1CTL1 |= UCSWRST;// PUC后,UCSWRST位自动置位,这使 USCI保持在复位状态
UCA1CTL0 = 0x00;
UCA1CTL1 |= UCSSEL_2; // SMCLK
UCA1BR0 = 216; // 24MHz 115200
UCA1BR1 = 0; // 24MHz 115200
UCA1MCTL = UCBRS_2 + UCBRF_0; // 0x04+0x00
P5SEL = 0xC0; // P5.6/7 = USCI_A0 TXD/RXD
UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**,。清除UCSWRST 将释放 USCI, UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt
}
#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
switch (__even_in_range(UCA1IV,4))
{
case 0:break;
case 2:
g_uartBufA[g_bufALen] = UCA1RXBUF;
if (g_uartBufA[g_bufALen]==0xFF)
{
}
if (g_uartBufA[g_bufALen++]==0xFD) //判断PC机发送的命令帧是否已完
{
g_bufALen=0;
g_uartReceive = 1;// 置位
}
break;
case 4:break; // Vector 4 - TXIFG
default: break;
}
}
void USciSend( )
{
unsigned char i;
for (i = 0; i < g_bufALen; i++)
{
while (!(UCA1IFG & UCTXIFG));
UCA1TXBUF = g_uartBufA[uartBuf1];
}
}// UCA1MCTL 是UCA1的调制控制寄存器
五、波特率的产生
USCI 波特率发生器可以从非标准源频率中产生标准的波特率,可以通过UCOS16位选择系统提供的两种操作模式。波特率可以通过使用BRCLK 产生,根据 UCSSELx设置,BRCLK 可以作为外部时钟 UCAxCLK或内部时钟ACLK 或SMCLK 的时钟源。
5.1 低频波特率
当UCOS16=0 时选择低频模式。该模式允许从低频时钟源产生波特率(例如从32768Hz 晶振产生9600波特)。通过使用较低的输入频率,可以降低模块的功耗。在高频和高分频设置下使用这种模式,将会使多数表决在逐渐缩小的窗口中执行,因此会降低多数表决法的优势(下面的例子都是这种模式)。
在低频模式下,波特率发生器使用1个预分频器和1个调制器产生位时钟时序。这种组合下,产生波特率时支持小数分频;在这种模式下,最大的 USCI波特率是UART 源时钟频率 BRCLK的1/3 。
每一位的时序如图所示,对于接收的每一位,为了确定该位的值,采用多数表决法。这些采样点发生在N/2-1/2,N/2 和N/2 + 1/2 个BRCLK 周期处,这里N 是每个BITCLK 时钟中 BRCLKs 的数值。
调制是建立在如表15-2 所示的 UCBRSx 设置基础上的。表中1个1 表示m= 1,相应的BITCLK 周期是一个BRCLK 周期,它比m=0 时的BITCLK 周期长。调制在8位后进行,但以新的开始位重新启动。
5.2 过采样波特率的产生
当UCOS16=1时,选择过采样模式。该模式支持在较高输入时钟频率下对UART 位流采样。在多数表决方法的结果总是一个位时钟周期的1/16位置。当使能IrDA 编码器和解码器时,这种模式也支持带有3/16位时间的IrDA脉冲。
该模式使用一个预分频器和调制器产生BITCLK16 时钟,该时钟比 BITCLK 快16倍。这种组合方式支持波特率产生时 BITCLK16 和BITCLK 的小数分频。在这种情况下,最大的USCI 波特率是 UART源时钟频率BRCLK的1/16。当UCBRx 设置为0或1时,将忽略第一级分频器和调制器,BRCLK等于 BITCLK16—在这种情况下BITCLK16没有调制,因此将忽略 UCBRFx位。
BITCLK16 调制是建立在如表15-3 所示的 UCBRFx 设置基础上的。表中1个1 表示相应的 BITCLK16 周期一个BRCLK周期,它比m=0 时的BITCLK16周期长。以每一个新位时序开始调制;BITCLK调制是建立在如前所述的 UCBRSx设置(见表15-2)基础上的。
5.3 设置波特率
430的波特率设置用三个寄存器实现:
UxBR0:波特率发生器分频系数低8位;
UxBR1:波特率发生器分频系数高8位;
UxMCTL:波特率发生器分频系数的小数部分实现;
对于给定的BRCLK时钟源,所使用的波特率将决定分频因子 N: N = fBRCLK/波特率。分频因子N 通常不是一个整数值,因此至少需要一个分频器和一个调制器来尽可能接近分频因子,如果N 值等于或大于16,可以通过置位UCOS16 选择过采样波特率产生模式。
在低频模式下,分频因子的整数部分通过预分频器实现 UCBRx = INT(N);
小数部分由带有下面nominal公式的调制器实现: UCBRSx = round((N–INT(N))× 8),(round表示舍入)
UCBRSx计数值增1或减1,对任何给定的位给一个较小的最大比特误差。为了检测是不是这种情况,对于每个UCBRSx设置的每一位都必须经过详细的误差计算;
在过采样模式下,预分频器设置为:UCBRx = INT(N/16),第一阶调制器设置为:UCBRFx = round(((N/16)– INT(N/16) ) × 16 ),当需要更高精度时,UCBRSx调制器可以实现从 0到7 的值。对于给定位,为了找到最低的最大误码率设置,对于带有初始UCBRFx设置和增1 或减 1的 UCBRFx设置的 UCBRSx从0到7的所有设置,都必须经过详细的误差计算。
下面详解上例中的四条语句:
UCA1CTL1 |= UCSSEL_2; // SMCLK
UCA1BR0 = 216; // 24MHz 115200
UCA1BR1 = 0; // 24MHz 115200
UCA1MCTL = UCBRS_2 + UCBRF_0; // 0x04+0x00
这里 SMCLK 已在时钟部分初始化,其时钟源为: Fdcoclkdiv = (760+1)*32768 = 24.936448 MHZ;
分频系数 N = 24936448/115200 = 216.462222,UCA1BR0是分频系统整数部分的低8位、UCA1BR1是高8位,所以..
UCA1MCTL 是波特率发生器分频系数的小数部分,由于是低频模式(UCOS16=0), UCA1MCTL 寄存器中的 UCBRFx 位忽略,而 UCBRSx = round((N–INT(N))× 8) 即 UCBRSx = 0.46×8 四舍五入取为 4。
UCBRSx 的值也可以这么解释: 0.46*8=3.68 四舍五入为 4个1,把这4个1分成8位均匀排开 01010101 (LSB在前),对照表15-2 查得 UCBRSx=0x04。
上一篇:msp430f5419/38学习笔记之时钟系统
下一篇:MSP430F5529液晶SPI通信协议
推荐阅读
史海拾趣
Habia Cable公司电子行业发展的五个故事
故事一:聚四氟乙烯的先驱
Habia Cable的故事始于1941年,由Carl Herbert Jacobsson在瑞典斯德哥尔摩创立。起初,公司是一家聚合物制造商,专注于胶木部件的生产。然而,Jacobsson的远见卓识使Habia成为欧洲首批使用聚四氟乙烯(PTFE)的公司之一,并在1946年在美国推出了第一款商业聚四氟乙烯产品。这一创新不仅为Habia奠定了技术基础,也使其迅速在电线电缆领域崭露头角。随着时间的推移,Habia成为最早制造聚四氟乙烯电线和电缆的公司之一,这一技术突破为公司后续的发展奠定了坚实的基础。
故事二:国际扩张的征程
自1957年Habia制造其第一条电缆以来,公司便踏上了国际扩张的征途。1969年,Habia在荷兰布雷达开设了其第一家国际销售办公室,这标志着公司正式进入全球市场。随后,Habia在70年代至80年代经历了迅速的国际扩张,工厂和销售办事处相继在法国、德国、英国、西班牙、比利时和美国等地成立或收购。这一时期的快速扩展不仅增强了Habia在全球范围内的市场竞争力,也为其后续的发展积累了宝贵的经验和资源。
故事三:技术创新的引领
Habia Cable一直以来都是技术创新的引领者。在2000年,公司收购了德国Norderstedt的高温电线和电缆制造商Isotec Kabel GmbH,这一举措使德国成为Habia最大的市场,并为其在欧洲的进一步发展提供了强有力的支持。此外,Habia Cable还不断投资于新技术和新设备的研发,以满足市场对高性能电缆和线束的需求。例如,在2016年,Habia Cable投资独特设备制造含氟聚合物电线和电缆的长截面和大截面产品,以满足离岸部门等苛刻应用的需求。
故事四:亚洲市场的布局
随着全球化进程的加速,Habia Cable也开始将目光投向亚洲市场。2000年,Habia Cable在中国常州设立工厂,生产同轴电缆,这标志着公司正式进入亚洲市场。此后,Habia在亚洲的扩张步伐不断加快,不仅在中国建立了多个生产基地,还在韩国、香港和日本等地设立了销售办事处。这些举措不仅提升了Habia在亚洲市场的知名度,也为其在全球范围内的业务增长提供了新的动力。
故事五:定制解决方案的提供
Habia Cable一直致力于为客户提供定制化的解决方案。公司拥有一支知识渊博的销售团队和设计工程师团队,他们能够与客户紧密合作,根据客户的独特需求开发满足其要求的电缆和线束产品。Habia Cable的制造灵活性、低订单数量要求和短交货周期等特点使其在市场上具有很强的竞争力。无论是电信、核电、国防还是海洋和工业领域,Habia Cable都能为客户提供高质量、高性能的电缆和线束产品,满足其苛刻的应用需求。
Ho Chien Electronics Group Inc公司发展故事
故事一:创立与全球化布局
Ho Chien Electronics Group Inc.(以下简称“Ho Chien”)创立于1974年,其全球总部位于美国波士顿。自成立以来,Ho Chien迅速在全球范围内扩展其业务,先后在中国、新加坡、德国、巴西、加拿大和墨西哥等地设立了超过40个分部。这一布局不仅加强了公司的市场渗透力,还为其提供了丰富的资源支持,助力其在电子行业细分市场中稳步前行。Ho Chien特别专注于互连与机电产品领域,通过为原始设备制造商和合约制造商提供高质量的产品和服务,逐步在行业内建立了良好的声誉。
故事二:亚太市场的拓展
2012年12月,Ho Chien正式启动其亚太业务,并将亚太区总部设在香港。为了更好地服务亚太地区的客户,Ho Chien不仅设立了销售部,还构建了区域配送中心和增值服务中心。经过数年的努力,Ho Chien亚太区已开设24个分部和3处仓库,极大地提升了其在该地区的运营效率和服务质量。这一举措不仅加深了Ho Chien在亚太市场的影响力,还为其未来的全球扩张奠定了坚实的基础。
故事三:产品线的丰富与拓展
Ho Chien致力于为电子行业各细分市场的客户提供全面支持,其产品线涵盖了25个不同元器件类别。主要分销产品包括互连器件、继电器、风扇、开关、散热解决方案、套管和线束产品、晶体与振荡器、紧固件与五金件以及传感器等。随着市场的不断变化和技术的飞速发展,Ho Chien不断调整和优化其产品线,以满足客户日益增长的需求。这一策略不仅帮助Ho Chien保持了其在行业内的竞争力,还为其带来了稳定的收入来源。
故事四:创新与研发
作为电子行业的领军企业之一,Ho Chien深知创新对于公司发展的重要性。因此,公司不断加大在研发方面的投入,致力于新技术、新产品的开发和应用。通过引进先进的研发设备和优秀人才,Ho Chien在多个领域取得了重大突破,并成功推出了一系列具有自主知识产权的产品。这些创新成果不仅提升了Ho Chien的品牌价值,还为其在全球市场上的拓展提供了有力支持。
故事五:人才培养与企业文化
在快速发展的过程中,Ho Chien深刻认识到人才对于公司持续发展的关键作用。因此,公司始终坚持“以员工为中心”的管理思想,努力为员工创造宽松的工作氛围和良好的发展机会。Ho Chien不仅提供优厚的福利待遇和丰富的培训资源,还鼓励员工积极发挥自己的才华和潜能。在这种企业文化的影响下,Ho Chien汇聚了一大批优秀的专业人才和管理精英,为公司的快速发展提供了强有力的智力支持。同时,这种积极向上的企业文化也进一步提升了Ho Chien的品牌形象和社会影响力。
科达嘉电子高度重视质量管理,先后通过了ISO9001质量管理体系、ISO14001环境管理体系认证。公司不仅建立了完善的质量检测流程,还成立了专门的检测中心,对产品进行严格的质量把控。这些措施确保了科达嘉电子产品的稳定性和可靠性,进一步提升了公司在市场上的竞争力。
随着公司规模的扩大,C&K开始在全球范围内进行布局。它在中国、法国、越南、德国和印度等地设立了生产基地,这些工厂不仅提高了生产效率,还使得C&K能够更好地服务全球客户。同时,C&K的产品线也不断扩展,覆盖了消费类、工业类和汽车类等多个领域。此外,C&K还支持定制化开发,能够满足不同客户的特殊需求。这种全球布局和业务拓展使得C&K在电子行业中获得了广泛的认可和好评。
GSI Technology公司成立于1995年3月,总部位于加利福尼亚州的圣何塞(硅谷),自创立之初便专注于提供领先的电信和网络解决方案。公司采用先进的CMOS工艺技术,如0.25、0.15和0.13微米等,致力于开发低功耗、全功能、高性能的SRAM产品。通过不断的技术创新和产品优化,GSI Technology逐渐在高性能存储器市场占据了一席之地,为后续的快速发展奠定了坚实的基础。
在国内市场取得一定成绩后,B.B. Battery公司开始积极拓展国际市场。他们参加国际电池展会,与全球知名企业建立合作关系,将产品打入国际市场。同时,公司还注重品牌建设,通过提升产品质量和服务水平,树立了良好的品牌形象。这些努力使得B.B. Battery公司的品牌在全球范围内都享有较高的知名度和美誉度。
目前市场上三菱伺服电机主要有MR-E、MR-J2S、MR-J3三种,这三种伺服相对应有专门的调试软件,可通过电脑实施监控、一次性参数输入与保存、图表显示、以及测试等操作。每种伺服放大器和电脑连接也有对应的电缆。 型号 软件 电缆 MR-E ...… 查看全部问答∨ |
|
需求:对实时讲话语音(卡拉OK)信号进行移频,比如1KHZ变成1005HZ,2KHZ变成2005HZ(或2010HZ)。要求:成本控制非常严格(8元以下),最好使用单片机(DSP好像没那么便宜),单片机型号不限, &nbs ...… 查看全部问答∨ |
|
beagblebone之node.js的LED流水灯设计、网页控制LED灯(初步) A基于node.js的LED流水灯设计 1、前提: 已建立PC与beagblebone之间的网络连接 2、效果描述: 采用beaglebone的node.js开发环境,即在浏览器输入http://IP_ADDR_OF_BB:3000,参照自带的blinkled程序,做一个将beag ...… 查看全部问答∨ |
本帖最后由 Sur 于 2014-1-25 12:19 编辑 近期这个活动:比比看:谁是TI的铁杆粉丝,正在火热进行中,我们现在可以在EE的TI版块看到来自五湖四海的EEer分享的TI开发板、芯片或设计,每个开发板或者芯片亦或是设计上都 ...… 查看全部问答∨ |