打印
[MCU]

msp430FR2433串口发送0x00,收到却是0xf0

[复制链接]
895|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tudousi001|  楼主 | 2020-9-4 14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近用msp430fr2433做个程序,实现通过串口uart0跟外部pc通讯,今天遇见一个问题,我发送一串十六进制数据时,第一个0x00的数据在接收端变成了0xe0,其他的数据都正确。比如我发送01 03 0C 00 0F 01 F4 00 0F 01 F4 00 0F 01 F4 BB 75 ,在pc用串口工具收到的数据是 01 03 0C F0 0F 01 F4 00 0F 01 F4 00 0F 01 F4 BB 75 ,第四个数从0x00变成了0xf0,暂时还没到找原因,看看网上有没有老师遇到过这种情况。备注一下:
1. 这种情况在波特率9600时出现,改为115200就没有问题
2. 串口的接收没有问题
3. 频率8M
4. uart0的初始化如下:
void uart0Init(int rate)
{

    // Configure UART pins
    P1SEL0 |= BIT4 | BIT5;                    // set 2-UART pin as second function
    PM5CTL0 &= ~LOCKLPM5;                    // Disable the GPIO power-on default high-impedance mode

    // Configure UART
    UCA0CTLW0 |= UCSWRST;
    UCA0CTLW0 |= UCSSEL__SMCLK;

    if(rate == e_UART_RATE_115200)
    {
        UCA0BR0 = 4;                             // 8000000/115200/16 = 4.34
        UCA0BR1 = 0x00;
        UCA0MCTLW = 0x5500 | UCOS16 | UCBRF_5;                   //0.34
    }
    else
    {
    // Baud Rate calculation
    // 8000000/(16*9600) = 52.083   3
    // Fractional portion = 0.083FDS
    // User's Guide Table 22-4: UCBRSx = 0x49
    // UCBRFx = int ( (52.083-52)*16) = 1
       UCA0BR0 = 52;                             // 8000000/16/9600
       UCA0BR1 = 0x00;
       UCA0MCTLW = 0x4900| UCOS16 | UCBRF_1;

    }

    UCA0CTLW0 &= ~UCSWRST;                    
    UCA0IE |= UCRXIE;                        
}

使用特权

评论回复

相关帖子

沙发
看别人照片| | 2020-9-4 15:32 | 只看该作者
我先仔细看一下代码,好像挺有用的。

使用特权

评论回复
板凳
zhangmangui| | 2020-10-8 12:43 | 只看该作者
你这个应该是硬件上下拉没设计对吧   

使用特权

评论回复
地板
zhangmangui| | 2020-10-8 12:43 | 只看该作者
开始校验应该能解决通信的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝