概述
【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串口通信,发送数据出现乱码以及没有数据原因:纠错方法一、串口没数据二、串口调试助手内接收的信息是乱码总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复