找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8006|回复: 1
打印 上一主题 下一主题
收起左侧

CC2530串口通信实验详解 带源码与安卓APP

[复制链接]
跳转到指定楼层
楼主
串口通信,发送字符串
模块通过串口向安卓发送数据
1、往CC2530模块里面下载程序 打开 iar810,再用 iar810 去打开工程,在“2014-5-1-NJZBcc2530\2.基础实验源码\9.串口通讯-发送字符串”文件夹内,打开之后,rebuild all,然后再 debug(如果不会,请看基础实验的第一个实验),然后按仿真器的复位按钮。程序就运行起来了。
2、安装APK到安卓设备(需要安卓 3.1以上)
安卓 APK 在“2014-8-1-NJZBcc2530\2.基础实验源码\9.串口通讯-发送字符串”目录下,请大家自己把这个 apk:“WchUsbDriver.apk”安装到你的安卓设备。

3、安卓显示cc2530通过串口送来的数据:
如下顺序连接硬件:
安卓—OTG 数据线————套件中的 usb 数据线—模块   把安卓和模块连接:

如上连接后,在你的安卓打开你刚安装的 apk 程序,波特率选择115200,然后点击 config 按钮,
就会在数据接受区,看到模块送来的“Hello Zigbee”字符了。

4、实验分析
本实验相关电路:

  P0_2、 P0_3 配置为外设功能时: P0_2为 RX,   P0_3为 TX. USART0 和 USART1 是串行通信接口,它们能够分别运行于异步 UART 模式或者同步 SPI 模式。两个 USART 具有同样的功能,可以设置在单独的 I/O 引脚。

实验相关寄存器   
相关寄存器 UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLKCONCMD、CLKCONSTA 如下表
所示:  (见附件)


CC2530配置串口的一般步骤:   
1、 配置 IO,使用外部设备功能。此处配置 P0_2 和 P0_3 用作串口 UART0   
2、 配置相应串口的控制和状态寄存器。   
3、 配置串口工作的波特率。   
寄存器具体配置如下:   
PERCFG = 0x00; //位置 1 P0 口   
P0SEL = 0x0c; //P0_2,P0_3用作串口(外部设备功能)   
P2DIR &= ~0XC0; //P0优先作为UART0   
U0CSR |= 0x80; //设置为UART方式   
U0GCR |= 11;   
U0BAUD |= 216; //波特率设为115200 根据上面表中获得的数据   
   UTX0IF = 0; //UART0 TX 中断标志初始置位 0   
源码分析,大家可以在 IAR 中看下注释。


九、串口通信----发送字符
1、打开 iar810,再用 iar810去打开工程,在“2014-5-1-NJZBcc2530\2.基础实验源码\9.串口通讯-发送字符串”
文件夹内,打开之后,debug,然后按仿真器的复位按钮。程序就运行起来了。
2、用usb 数据线直接把模块链接到电脑

如上图操作后,就会在电脑里面生成一个 com口,可以在设备管理器中看的到: +


然后打开串口助手(在“cc2530模块资料(天线杆版本--2013-9-25)\8.软件工具\串口调试助手 V2.2”):

本实验相关电路:

  P0_2、P0_3配置为外设功能时:P0_2为RX,  P0_3为TX. USART0和USART1是串行通信接口,它们能够分
别运行于异步 UART模式或者同步SPI  模式。两个 USART具有同样的功能,可以设置在单独的 I/O  引脚。



  1. /****************************************************************************
  2. * 文 件 名: main.c
  3. * 作    者: Andy
  4. * 修    订: 2013-01-08
  5. * 版    本: 1.0
  6. * 描    述: 设置串口调试助手波特率:115200bps 8N1
  7. *           会收到CC2530发过来的:Hello Zigbee
  8. ****************************************************************************/
  9. #include <ioCC2530.h>
  10. #include <string.h>

  11. typedef unsigned char uchar;
  12. typedef unsigned int  uint;
  13. #define TX_SIZE    20

  14. #define TX_STRING  "Hello Zigbee  "

  15. char TxData[TX_SIZE];        //存储发送字符串

  16. /****************************************************************************
  17. * 名    称: DelayMS()
  18. * 功    能: 以毫秒为单位延时 16M时约为535,32M时要调整,系统时钟不修改默认为16M
  19. * 入口参数: msec 延时参数,值越大延时越久
  20. * 出口参数: 无
  21. ****************************************************************************/
  22. void DelayMS(uint msec)
  23. {  
  24.     uint i,j;
  25.    
  26.     for (i=0; i<msec; i++)
  27.         for (j=0; j<1070; j++);
  28. }

  29. /****************************************************************************
  30. * 名    称: InitUart()
  31. * 功    能: 串口初始化函数
  32. * 入口参数: 无
  33. * 出口参数: 无
  34. ****************************************************************************/
  35. void InitUart(void)
  36. {
  37.     PERCFG = 0x00;           //外设控制寄存器 USART 0的IO位置:0为P0口位置1
  38.     P0SEL = 0x0c;            //P0_2,P0_3用作串口(外设功能)
  39.     P2DIR &= ~0XC0;          //P0优先作为UART0
  40.    
  41.     U0CSR |= 0x80;           //设置为UART方式
  42.     U0GCR |= 11;                                       
  43.     U0BAUD |= 216;           //波特率设为115200
  44.     UTX0IF = 0;              //UART0 TX中断标志初始置位0
  45. }

  46. /****************************************************************************
  47. * 名    称: UartSendString()
  48. * 功    能: 串口发送函数
  49. * 入口参数: Data:发送缓冲区   len:发送长度
  50. * 出口参数: 无
  51. ****************************************************************************/
  52. void UartSendString(char *Data, int len)
  53. {
  54.     uint i;
  55.    
  56.     for(i=0; i<len; i++)
  57.     {
  58.         U0DBUF = *Data++;
  59.         while(UTX0IF == 0);
  60.         UTX0IF = 0;
  61.     }
  62. }

  63. /****************************************************************************
  64. * 程序入口函数
  65. ****************************************************************************/
  66. void main(void)
  67. {       
  68.     CLKCONCMD &= ~0x40;               //设置系统时钟源为32MHZ晶振
  69.     while(CLKCONSTA & 0x40);          //等待晶振稳定为32M
  70.     CLKCONCMD &= ~0x47;               //设置系统主时钟频率为32MHZ   
  71.       
  72.     InitUart();                       //调置串口相关寄存器
  73.     memset(TxData, 0, TX_SIZE);       //数据清0
  74.     memcpy(TxData, TX_STRING, sizeof(TX_STRING)); //复制发送字符串到TxData
  75.         
  76.     while(1)
  77.     {
  78.         UartSendString(TxData, sizeof(TX_STRING)); //串口发送数据
  79.         DelayMS(1000);                 //延时
  80.     }
  81. }
复制代码

全部资料51hei下载地址:
9.串口通讯-发送字符串.rar (3.21 MB, 下载次数: 49)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:552120 发表于 2019-6-2 19:45 | 只看该作者
下载不了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表