[讨论] msp430f4152 LPM3模式下,9600bps 串口通信不能收发数据

18633013902   2016-6-22 10:55 楼主
RT,msp430f4152在LPM3模式下,时钟为SMCLK时,TimerA 模拟的UART串口不能通信, 不知道什么原因造成的? 本帖最后由 18633013902 于 2016-6-22 10:58 编辑

回复评论 (5)

时钟为ACLK时
点赞  2016-6-24 12:58
引用: clls2080000 发表于 2016-6-24 12:58
时钟为ACLK时

什么意思?ACLK可以通信
点赞  2016-6-24 16:41
串口在ACLK时钟下 LPM3可以工作
点赞  2016-9-9 10:17
你研究研究下面的官方例程吧,注意时钟设置:

  1. //******************************************************************************
  2. //   MSP430x41x2 Demo - USCI_A0, 115200 UART Echo ISR, DCO SMCLK, LPM3
  3. //
  4. //   Description: Echo a received character, RX ISR used. Normal mode is LPM3.
  5. //   Automatic clock activation for SMCLK through the USCI is demonstrated.
  6. //   USCI_A0 RX interrupt triggers TX Echo.
  7. //   Baud rate divider with 1048576hz = 1048576/115200 = ~9.1 (009h|01h)
  8. //   ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
  9. //   //* An external watch crystal between XIN & XOUT is required for ACLK *//       
  10. //
  11. //               MSP430x41x2
  12. //             -----------------
  13. //         /|\|              XIN|-
  14. //          | |                 | 32kHz
  15. //          --|RST          XOUT|-
  16. //            |                 |
  17. //            |     P6.6/UCA0TXD|------------>
  18. //            |                 | 115200 - 8N1
  19. //            |     P6.5/UCA0RXD|<------------
  20. //
  21. //
  22. //  P. Thanigai
  23. //  Texas Instruments Inc.
  24. //  January 2009
  25. //  Built with CCE Version: 3.1 and IAR Embedded Workbench Version: 4.11
  26. //******************************************************************************
  27. #include  <msp430x41x2.h>

  28. void main(void)
  29. {
  30. volatile unsigned int i;

  31.   WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
  32.   FLL_CTL0 |= XCAP14PF;                     // Configure load caps

  33.   do
  34.   {
  35.   IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  36.   for (i = 0x47FF; i > 0; i--);             // Time for flag to set
  37.   }
  38.   while ((IFG1 & OFIFG));                   // OSCFault flag still set?

  39.   P6SEL |= BIT5+BIT6;                       // P6.5,6 = USCI_A0 RXD/TXD
  40.   UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  41.   UCA0BR0 = 0x09;                           // 1MHz 115200
  42.   UCA0BR1 = 0x00;                           // 1MHz 115200
  43.   UCA0MCTL = 0x02;                          // Modulation
  44.   UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  45.   IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  46.   __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled
  47. }

  48. // Echo back RXed character, confirm TX buffer is ready first
  49. #pragma vector=USCIAB0RX_VECTOR
  50. __interrupt void USCI0RX_ISR(void)
  51. {
  52.   while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  53.   UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
  54. }

我爱大清国我怕它完了可谁爱我啊
点赞  2016-9-15 02:07
引用: wojiaomt 发表于 2016-9-15 02:07
你研究研究下面的官方例程吧,注意时钟设置:

已解决  
根据数据手册查询得知在TIMERA模拟UART时,低功耗模式下时钟不能自动激活
点赞  2016-9-18 17:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复