TI中文支持网
TI专业的中文技术问题搜集分享网站

有关5438A的COM0 RX错误

用MSP430F5438A,MCLK和SMCLK都跑到25M,COM0配成115200BPS。但是发现COM0发送时,PC机接收的完全正确,但是PC发送时,MCU收到的却是错误的。用的是TIDriverlib 1.25的代码配的CLK和UART,代码如下:

     if(STATUS_FAIL == UART_init( __MSP430_BASEADDRESS_USCI_A0__,                                 

UART_CLOCKSOURCE_SMCLK,                                 

UCS_getSMCLK(__MSP430_BASEADDRESS_UCS__),                                 

115200,                                 

UART_NO_PARITY,                                 

 UART_LSB_FIRST,                                 

UART_ONE_STOP_BIT,                                 

UART_MODE,                                 

 UART_OVERSAMPLING_BAUDRATE_GENERATION)

 我如果把SMCLK换成ACLK,波特率降到1200,收发都是没问题的,说明硬件应该没问题。那为什么会这样呢?哪位达人也碰到这种问题?给个提示吧。

Becca Jet:

非常奇怪。我是基于freertos写的串口程序。发现如果在freertos的task启动前给while(1)下来,接收是没问题的。但是如果启动了task,哪怕我PC只发送一个字节,MCU接收中断里的数据也是错误的。所以基本肯定是freertos影响了我的接收。但是非常奇怪啊,freertos我写的那些个task,没有任何跟串口有关的代码啊?怎么会影响我的接收中断呢?

Leon Yan:

回复 Becca Jet:

你好,下面是一些建议:

1. MCU的晶振是内部还是外部?

2. 如果使用了RTOS,Timer中断肯定一直在调度任务,所以有可能打断UART接收;

3. 多个任务都在运行的时候,是不是有多个中断?

谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » 有关5438A的COM0 RX错误
分享到: 更多 (0)