微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 请教关于CC2541串口0位置2的使用

请教关于CC2541串口0位置2的使用

时间:10-02 整理:3721RD 点击:

串口设置如下:

PERCFG = 0x01; //位置2 P1口
P1SEL = 0x30; //P1_4,P1_5用作串口(外部设备功能)

U0UCR = 0x02; //禁止流控,8bits,无校验位,1位停止位
                              //起始位低电平,停止位高电平

U0CSR |= 0x80; //设置为UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200
UTX0IF = 0; //UART0 TX中断标志初始置位0

为什么我的串口0位置2,输出就是有规律的乱码呢?

如果我设置成起始位高电平,停止位低电平,比如送法0xaa 就会收到 0x55

分享一个我们群里的小伙伴分享的使用方法

哇哦 大神 我有看你的csdn的关于cc2541的帖子

我这个并没有使用协议栈,就是单纯的串口发送调试使用。都是按照技术手册配置的寄存器,但是现象就是我说的有规律乱码。

我换了个思路解决了,就是起始位配置为高电平、停止位配置为低电平、然后发送全部位取反就能收到正常的数据了。

//*****************串口初始化*********************//
void Init_Uart(void)
{
    PERCFG |=  0x01;    //USART0为位置2
//  P2DIR  &= ~0xc0;    //优先级USART0>USART1>定时器1
    P1SEL  |=  0x30;    //P1_4、P1_5用作外部设备
    U0CSR  |=  0x80;    //设备用作UART方式
    
    U0UCR   =  0x01;    //禁止流控,8bits,无校验位,1位停止位
                        //起始位高电平,停止位低电平,不同于其他串口
    U0GCR  |=  11;      //32Mhz下的 BAUD_E:11,
    U0BAUD |=  216;     //32Mhz下的 BAUD_E:216,115200
    UTX0IF  =  0;       //UART0 TX 中断标志初始置位0
    
    U0CSR  &=  ~0x40;   //关闭接收器
  //IEN0   |=  0x04;    //使能USART0 RX中断
  //IEN2   |=  0x04;    //使能USART0 TX中断  
  //EA      =  1;       //开启总中断
}
//**************串口发送数据*******************//
void UartSendString(char *Data)
{
    unsigned int i,len;
    
    len=strlen(Data);
      
    for(i=0;i<len;i++)
    {
        U0DBUF = ((*Data++)^0xff);   //使用异或操作
        while(!UTX0IF);
        UTX0IF = 0;
    }
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top