打印
[Zigbee]

CC2530串口通讯-发送字符串

[复制链接]
1539|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gwsan|  楼主 | 2019-8-1 10:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 理论分析
1.1 CC2530 的 Usart 介绍
首先,我们要知道 CC2530 有几个串行通信口。由图1知,它总共有 2 个串口分别为 Usart0、Usart1。Usart0 和 Usart1 是串行通信接口,它们能够分别运行于异步 UART 模式或者同步 SPI 模式。两个 Usart 具有同样的功能,可以设置在单独的 I/O 引脚。由 CC2530 datasheet 可知:

        UART0 对应的外部设备 IO 引脚关系为:P0_2------RX, P0_3------TX
        UART1 对应的外部设备 IO 引脚关系为:P0_5------RX, P0_4------TX
        在 CC2530 的 Usart 的所有功能中,我们用得最多的就是:Uart 模式。

这里说明一下,就是 CC2530 的 Usart 的使用,都是要通过配置相应的寄存器来实现相应功能的,故在附录里我们给出操作 Usart 的所有寄存器的类型及其具体内容。
下面分别介绍 UART 模式和 SPI 模式:


使用特权

评论回复
评论
dirtwillfly 2019-8-3 20:47 回复TA
感谢分享 

相关帖子

沙发
gwsan|  楼主 | 2019-8-1 10:53 | 只看该作者
Uart 模式
UART 模式提供异步串行接口。在 UART 模式中,接口使用 2 线或者含有引脚 RXD、TXD、可选 RTS 和 CTS 的 4 线。UART 模式的操作具有下列特点:

(1) 8 位或者 9 位负载数据
(2) 奇校验、偶校验或者无奇偶校验
(3) 配置起始位和停止位电平
(4) 配置 LSB 或者 MSB 首先传送
(5) 独立收发中断
(6) 独立收发 DMA 触发
(7) 奇偶校验和帧校验出错状态

UART 模式提供全双工传送,接收器中的位同步不影响发送功能。传送一个 UART字节包含 1 个起始位、8 个数据位、1 个作为可选项的第 9 位数据或者奇偶校验位再加上 1 个或 2 个停止位。注意,虽然真实的数据包含 8 位或者 9 位,但是,数据传送只涉及一个字节。

UART 操作由 USART 控制和状态寄存器 UxCSR 以及 UART 控制寄存器 UxUCR 来控制。这里的 x 是 USART 的编号,其数值为 0 或者 1。当 UxCSR.MODE 设置为 1 时,就选择了 UART 模式。

使用特权

评论回复
板凳
gwsan|  楼主 | 2019-8-1 10:53 | 只看该作者
SPI 模式
在 SPI 模式中,USART 通过 3 线接口或者 4 线接口与外部系统通信。接口包含引脚 MOSI、MISO、SCK 和 SS_N。
SPI 模式包含下列特征:

(1) 3 线(主要)或者 4 线 SPI 接口
(2)主和从模式
(3)可配置的 SCK 极性和相位
(4)可配置的 LSB 或 MSB 传送
当 UxCSR.MODE 设置为 0 时,选中 SPI 模式。在 SPI 模式中,USART 可以通过写 UxCSR.SLAVE 位来配置 SPI 为主模式或者从模式。



图1 CC2530 内部结构图


使用特权

评论回复
地板
gwsan|  楼主 | 2019-8-1 10:53 | 只看该作者
1.2 Uart 发送
当 USART 收/发数据缓冲器、寄存器 UxBUF 写入数据时,该字节发送到输出引脚TXDx。 UxBUF 寄存器是双缓冲的。当字节传送开始时, UxCSR.ACTIVE 位变为高电平,而当字节传送结束时为低。当传送结束时,UxCSR.TX_BYTE 位设置为 1。

当 USART 收/发数据缓冲寄存器就绪,准备接收新的发送数据时,就产生了一个中断请求。该中断在传送开始之后立刻发生,因此,当字节正在发送时,新的字节能够装入数据缓冲器。

使用特权

评论回复
5
gwsan|  楼主 | 2019-8-1 10:53 | 只看该作者
2实验详解
2.1实验目的
1)、通过实验掌握CC2530 芯片串口配置与使用
2)、观察D2 串口发送指示灯的变化,每发送一串字符闪一次

注:嵌入式开发中,当程序能跑起来后,串口是第一个要跑起来的设备,所有的工作状态,交互信息都会从串口输出。我们用的是世界上最好的串口芯片FT232,高级USB串口线都用该芯片。

2.2实验设备
硬件:PC 机一台 ZB2530(底板、核心板、仿真器、USB 线) 一套
软件:win7 系统,IAR 8.20 集成开发环境、串口助手

使用特权

评论回复
6
gwsan|  楼主 | 2019-8-1 10:54 | 只看该作者
2.3相关电路图

图 2 FT232

图3 USB

使用特权

评论回复
7
gwsan|  楼主 | 2019-8-1 10:54 | 只看该作者
2.4实验分析
(1)CC2530 配置串口的一般步骤:
①配置 IO,使用外部设备功能。(此处配置 P0_2 和 P0_3 用作串口 UART0)
②配置串口的控制和状态寄存器。(此处配置 UART0 的工作寄存器)
③配置串口工作的波特率。(此处配置为波特率为 115200)

注:在本次实验中,我们用到的是 UART0。

(2) 我们要配置的寄存器有:
P0,P0DIR,P0SEL(管理按键的)
CLKCONCMD,CLKCONSTA(管理系统时钟的)
PERCFG,P0SEL,P2DIR,U0CSR,U0GCR,U0BAUD,UTX0IF(管理 Usart 的)

注意:
①由于使用异步 Uart 模式,数据传输速度是比较慢的;
②CC2530 有 4 个时钟,分别为:内部 32KHz RC Oscillator 和外部 32.768KHz晶振,还有内部自带的 16MHz RC oscillator 和 32MHz crystal oscillator。CC2530 的系统时钟 system clock 可选择外部 32MHz crystal oscillator,或者内部自带的 16MHz RC oscillator,但是 RF 工作时必须选择 32MHz crystal oscillator。另外, CC2530 的 32KHz Clock 可以选择外部的 32.768KHz, 或者内部 32KHz RCOscillator,32KHz 时钟最主要使用在 Sleep Timer 和 Watchdog Timer 上。上电运行的时候先用的是内部自带的 16MHz RC oscillator, 因为 RC 的起振时间短,正常运行后再换成 32MHz,用于 RF。
③为了提高通信的效率,我们需要提高系统的时钟,所以,本实验配置系统时钟为 32MHz。

相关寄存器CLKCONCMD、CLKCONSTA、PERCFG 、P0SEL、P2DIR、 UxCSR、UxUCR、UxGCR、UxBUF、UxBAUD、IRCON2如下表所示.

使用特权

评论回复
8
gwsan|  楼主 | 2019-8-1 10:55 | 只看该作者
表1 时钟控制命令



使用特权

评论回复
9
gwsan|  楼主 | 2019-8-1 10:55 | 只看该作者
表2 时钟控制状态


使用特权

评论回复
10
gwsan|  楼主 | 2019-8-1 10:56 | 只看该作者
表3 外设控制


使用特权

评论回复
11
gwsan|  楼主 | 2019-8-1 10:56 | 只看该作者
表4端口0功能选择


使用特权

评论回复
12
gwsan|  楼主 | 2019-8-1 10:57 | 只看该作者
表5端口2方向和端口0外设优先级模式


使用特权

评论回复
13
gwsan|  楼主 | 2019-8-1 10:57 | 只看该作者
表6 USART 0控制和状态


使用特权

评论回复
14
gwsan|  楼主 | 2019-8-1 10:58 | 只看该作者
表7 USART 0 UART控制


使用特权

评论回复
15
gwsan|  楼主 | 2019-8-1 10:58 | 只看该作者
表8 USART 0通用控制


使用特权

评论回复
16
gwsan|  楼主 | 2019-8-1 10:59 | 只看该作者
表9 USART 0接收/传送数据缓存


使用特权

评论回复
17
gwsan|  楼主 | 2019-8-1 10:59 | 只看该作者
表10 USART 0 波特率控制


使用特权

评论回复
18
gwsan|  楼主 | 2019-8-1 11:00 | 只看该作者
表11中断标志


使用特权

评论回复
19
gwsan|  楼主 | 2019-8-1 11:00 | 只看该作者
表12 串口寄存器


由寄存器UxBAUD.BAUD_M[7:0]和UxGCR.BAUD_E[4:0]定义波特率。该波特率用于UART 传送,也用于SPI 传送的串行时钟速率。波特率由下式给出:



其中:F 是系统时钟频率,等于16 MHz RCOSC 或者32 MHz XOSC。
32 MHz 系统时钟常用的波特率设置。


使用特权

评论回复
20
gwsan|  楼主 | 2019-8-1 11:01 | 只看该作者
表13 波特率设置

注意:在本次实验中,我们用到的是 UART0。



使用特权

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

本版积分规则

68

主题

3427

帖子

1

粉丝