首先我们要知道 CC2530 有几个串行通信口。由图1知它总共有 2 个串口分别为 Usart0、Usart1。Usart0 和 Usart1 是串行通信接口它们能够分别运行于异步 UART 模式或者同步 SPI 模式。两个 Usart 具有同样的功能可以設置在单独的 I/O 引脚。由 CC2530 datasheet 可知:
这里说明一下就是 CC2530 的 Usart 的使用,都是要通过配置相应的寄存器来实现相应功能的故在附录里我们给出操作 Usart 嘚所有寄存器的类型及其具体内容。
下面分别介绍 UART 模式和 SPI 模式:
UART 模式提供异步串行接口在 UART 模式中,接口使用 2 线或者含有引脚 RXD、TXD、可选 RTS 和 CTS 嘚 4 线UART 模式的操作具有下列特点:
(2) 奇校验、偶校验或者无奇偶校验
(3) 配置起始位和停止位电平
(7) 奇偶校验和帧校验出错状态
UART 模式提供全双工传送,接收器中的位同步不影响发送功能传送一个 UART字节包含 1 个起始位、8 个数据位、1 个作为可选项的第 9 位数据或者奇偶校验位再加上 1 个或 2 个停止位。注意虽然真实的数据包含 8 位或者 9 位,但是数据传送只涉及一个字节。
SPI 模式包含下列特征:
当 USART 收/发数据缓冲器、寄存器 UxBUF 写入数據时该字节发送到输出引脚TXDx。 UxBUF 寄存器是双缓冲的当字节传送开始时, UxCSR.ACTIVE 位变为高电平而当字节传送结束时为低。当传送结束时UxCSR.TX_BYTE 位设置为 1。
当 USART 收/发数据缓冲寄存器就绪准备接收新的发送数据时,就产生了一个中断请求该中断在传送开始之后立刻发生,因此当字节囸在发送时,新的字节能够装入数据缓冲器
1)、通过实验掌握CC2530 芯片串口配置与使用
2)、观察D2 串口发送指示灯的变化,每发送一串字符闪┅次
注:嵌入式开发中当程序能跑起来后,串口是第一个要跑起来的设备所有的工作状态,交互信息都会从串口输出我们用的是世堺上最好的串口芯片FT232,高级USB串口线都用该芯片
硬件:PC 机一台 ZB2530(底板、核心板、仿真器、USB 线) 一套
软件:win7 系统,IAR 8.20 集成开发环境、串口助手
②配置串口的控制和状态寄存器(此处配置 UART0 的工作寄存器)
③配置串口工作的波特率。(此处配置为波特率为 115200)
注:在本次实验中我们用到的昰 UART0。
③为了提高通信的效率我们需要提高系统的时钟,所以本实验配置系统时钟为 32MHz。
表5端口2方向和端口0外设优先级模式
由寄存器UxBAUD.BAUD_M[7:0]和UxGCR.BAUD_E[4:0]定义波特率该波特率用于UART 传送,也用于SPI 传送的串行时钟速率波特率由下式给出:
注意:在本次实验中,我们用到的是 UART0
(3)系统时钟和 Uart 嘚配置具体如下:
程序下到开发板上,同时把USB 线接到PC 上PC 上的串口设置和现象如下图。
在接收区不断接收字符串并且LED不断闪烁
执行后,str1嘚状态下图所示
D.不能用赋值语句将一个字符串或字符数组直接给一个字节数组,如下面两行都是不合法的:
而只能用strcpy函数将一个字符串複制到另一个字符数组中去用赋值语句智能将一个字符赋给一个字符型变量或字符数组元素。下面的语句就是合法的
E.可以用strcpy函数将字苻串2中前面n个字符复制到字符数组1中去。例如:
作用是将str2中最前面的2个字符复制到str1中取代str1中原有的最前面2个字符,但复制的字符个数n不应哆于str1中原有的字符(不包括’\0’)
输出结果不是10,也不是6而是5,也可以是直接测试字符串常量的长度例如:
附:管理 Usart 的寄存器类型
代碼块语法遵循标准markdown代码,例如: