我是靠谱客的博主 高高菠萝,最近开发中收集的这篇文章主要介绍# 【zigbee开发】CC2530串口通信,发送数据出现乱码以及没有数据原因解决方法【zigbee开发】CC2530串口通信,发送数据出现乱码以及没有数据原因:纠错方法一、串口没数据二、串口调试助手内接收的信息是乱码总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

【zigbee开发】CC2530串口通信,发送数据出现乱码以及没有数据原因:

提示:这些是在我学习过程中遇到过的情况,可供大家参考
cc2530串口开发时,代码都写完了拿到串口模拟助手上调试时,出现乱码或者干脆没有数据了。下面这些是我在学习过程中出现过的问题。

文章目录

  • 【zigbee开发】CC2530串口通信,发送数据出现乱码以及没有数据原因:
  • 纠错方法
  • 一、串口没数据
    • 1.1 检查串口连接情况
    • 1.2 检查串口驱动是否安装
    • 1.3 是否有写关于 发送字符串的数据
  • 二、串口调试助手内接收的信息是乱码
    • 2.1 检查是否写了 串口初始化 函数
    • 2.2 检查 串口初始化函数 配置是否正确
    • 2.3 检查 是否配置时钟(大部分人乱码的原因)
    • 2.4 检查 是否在main函数内调用 时钟 初始化函数
    • 2.5 检查自己的 发送字符串函数 设计是否正确
    • 2.6 检查代码内配置的 波特率 是否和 串口模拟助手 上的波特率一致
  • 总结

纠错方法

提示:先确定自己是否真的掌握了 cc2530串口通信 部分的知识

全面理解与cc2530串口通信相关的知识,出现错误时,按照知识体系的构成逐个排查。每当你的代码或者项目出现问题时,试着从简单的操作部分入手排查,会发现问题的所在。


``

一、串口没数据

1.1 检查串口连接情况

1.1.1 检查串口线是否正确连接
是否用usb转串口线,将开发板上的DP9接口连接至电脑的USB接口

1.1.2检查设备功能是否正常
1)检查串口线是否有问题(通电功能是否正常)
2)检查电脑的usb接口是否能用(可以试试用鼠标或者键盘的usb口,测试电脑usb口的使用是否正常)
3)检查开发板DB9接口(串口)是否有问题

1.2 检查串口驱动是否安装

1)使用usb转串口时,需要在电脑上安装驱动(可在网络上下载“usb转串口驱动”)

(现在的大部分电脑是没有串口的,电脑本身无法为接入的硬件分配串口编号
usb转串口驱动的作用是使usb转串口硬件,能在连接到电脑usb接口上时被识别为串口设备.
并分配相应的可用串口编号使用。)

1.3 是否有写关于 发送字符串的数据

1)有可能你写了串口发送字符串的函数,但是没有去使用他。看看自己的项目中,有没有执行类似发送数据的操作。

//1.检查自己是否有写字符串发送函数
void uart_tx_String(char *str,int len)  //串口发送数据函数,具体解释目录2.5有
{
  unsigned j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *str++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}
//2.检查是否有使用发送字符串的操作
void Sent_String()
{
	//发送字符串函数(发送内容,发送长度)
	uart_tx_String("Hello World!!!rn",19);
}
//3.检查main函数中,是否有调用发送字符串的函数
void main()
{
	while(1)
	{
		Sent_String();
	}
}

二、串口调试助手内接收的信息是乱码

2.1 检查是否写了 串口初始化 函数

代码如下(示例):

void Init_Uart0()
{
  PERCFG &=~0X01;             //串口使用备用位置1
  P0SEL |= 0X3C;              //将P0_2、P0_3 、P0_4 、P0_5设置为外设IO
  
  U0BAUD = 59;                //将波特率设置为9600
  U0GCR = 8;
  
  U0UCR |= 0X80;              //流控禁止、8位传送、禁用奇偶校验位,0位停止位
  U0CSR |= 0XC0;              //UxCSR 7:使用UART0、6:使能接收器
  //没有涉及接收,就不写接收的中断初始化函数了
}

2.2 检查 串口初始化函数 配置是否正确

代码如下(示例):

void Init_Uart0()
{
  PERCFG &=~0X01; 		//备用位置配置是否正确            
  //看看P0SEL 你使用的端口组是不是P0端口组 刚接触串口通信时,我经常写成P1SEL
  P0SEL |= 0X3C;        //CC2530 USART0所对应的外设端口为P0_2(RX接收位)和P0_3(TX发送位)
  
  U0BAUD = 59;                
  U0GCR = 8;
  
  U0UCR |= 0X80;              
  U0CSR |= 0XC0;              
}

2.3 检查 是否配置时钟(大部分人乱码的原因)

是否在main函数中将 内部16MRC振荡器 配置为 外部32M晶体振荡器

void Set_Clock_32M()     //将时钟设置为32M外部晶振
{
  CLKCONCMD &=~0X40;        //CLKCONCMD 第6位  0:32M   1:16M
  while(CLKCONSTA & 0X40);  //当CLKCONSTA为0x40 时转换完成
  CLKCONCMD &=~0X07;        //将时钟输出设置为8MHz
}

2.4 检查 是否在main函数内调用 时钟 初始化函数

经常忘记在main函数中调用我初始化的各种函数,可以检查一下自己的main函数有没有缺少初始化函数。

void main()
{
  Set_Clock_32M();                //调用晶振配置函数
  Init_Uart0();					  //调用串口初始化函数
  Init_WDT();					  //调用看门狗函数
}

2.5 检查自己的 发送字符串函数 设计是否正确

关于字符发送函数,主要是有没有将发送中断标志位(UTX0IF)清零,以及是否将数据存放U0DBUF寄存器中。

void uart_tx_String(char *str,int len)  //发送接收函数  形式函数:定义发送内瓤
{
  unsigned j;
  for(j=0;j<len;j++)		 //根据形式参数给定的长度发送数据
  {
    U0DBUF = *str++;		//使用U0DBUF寄存器发送数据(接收到的数据也是放在这个寄存器内)
    while(UTX0IF == 0);		//等待发送结束
    UTX0IF = 0;				//清除串口发送中断标志位
  }
}

2.6 检查代码内配置的 波特率 是否和 串口模拟助手 上的波特率一致

波特率:
每秒传输的二进制位数
例:9600bps = 每秒传输9600bit
波特率越大,传输速度越快,但是传输距离越短。

  U0BAUD = 59;       //波特率设为9600         
  U0GCR = 8;

总结

总结:在zigbee开发中,以上这些是我日常出现过的失误,表达的可能不全面,希望能够帮助到看这篇文章的博客阅读者们。关于串口检查,主要是检查调用模拟端口部分使用的是不是P0端口组(P0SEL |= 0x30)。其次就是时钟的配置,我经常会忘记将时钟配置位32M外部晶振。最后看看有没有在main中调用这些函数

最后

以上就是高高菠萝为你收集整理的# 【zigbee开发】CC2530串口通信,发送数据出现乱码以及没有数据原因解决方法【zigbee开发】CC2530串口通信,发送数据出现乱码以及没有数据原因:纠错方法一、串口没数据二、串口调试助手内接收的信息是乱码总结的全部内容,希望文章能够帮你解决# 【zigbee开发】CC2530串口通信,发送数据出现乱码以及没有数据原因解决方法【zigbee开发】CC2530串口通信,发送数据出现乱码以及没有数据原因:纠错方法一、串口没数据二、串口调试助手内接收的信息是乱码总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部