请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR2532 工具/软件:Code Composer Studio
大家好、
我有一个 MSP430FR2532项目需要使用波特率为57600的 UART、因为另一侧的默认波特率为57600。 在开发过程中、MSP430FR2532和 FTDI USB-UART 适配器(FT232R)之间的通信在9600、19200、38400时效果极佳。 但是、一旦我将波特率增加到57600、从 FR2532发送到 FT232R 的消息就会被始终识别、但是从 FT232R 发回 MSP430的消息会不时损坏、尤其是第一个消息块、通常为前10个字节左右。
下面是用于初始化时钟和 UART 的代码
//设置时钟 __bis_SR_register (SCG0); //禁用 FLL CSCTL3 |= SELREF_REFOCLK; //将 REFO 设置为 FLL 基准源 CSCTL0 = 0; //清除 DCO 和 MOD 寄存器 CSCTL1 &=~(DCORSEL_7); //清除 DCO 频率选择位第一 个 CSCTL1 |= DCORSEL_3; //设置 DCO = 8MHz CSCTL2 = FLLD_0 + 242; // DCODIV = 8MHz __delay_cycles (3); __BIC_SR_register (SCG0); //启用 FLL while (CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));// 初始化轮询直到 FLL 锁定 CSCTL4 = SELMS_DCOCLKDIV | SELA_REFOCLK;//将默认 REFO (~32768Hz)设置为 ACLK 源,ACLK = 32768Hz;// UCCL0 | UCCL0 = UCCL0 | UCCL0 | UCCTRL0 = 327UCCTRL0 | UCTLK 源;//将 UCCTL0 = 327UCCL0 = UCCL0 | UCCL0 = UCCL0 | UCCL0 = UCCL0 //波特率计算 // 8000000/57600 = 138.889 // OS16 = 1、UCBR1 = 8、UCBRF1 = 10 //分数部分= 0.889 //用户指南表21-4:UCBRSx = 0xF7 UCA1BR0 = 8; // 8000000/57600/16 UCA1BR1 = 0x00; UCA1MCTLW = 0xF700 | UCOS16 | UCBRF_10; UCA1CTLW0 &=~UCSWRST; //初始化 eUSCI UCA1IE |= UCRXIE; //启用 USCI_A1 RX 中断
不确定是否相关、MCU 将保持在 LPM3模式、每100ms 唤醒一次、或从 UART1/FT232R 接收到一条消息。
我在这里会错过什么? 其他一些帖子报告 FR2532的工作正常、仅为57600、甚至为115200。