CC2540开发板学习笔记(五)——串口通信

(一)串口发送

一、实验现象:

    开发板实现功能发送

二、实验过程

1、PL2303 USB转串口电路图

image

2、串口发送

(1)查看用户手册有:

UART0 对应的外部设备 IO 引脚关系为: P0_2 ------ RX
                                                     P0_3 ------ TX
UART1 对应的外部设备 IO 引脚关系为: P0_5 ------ RX
                                                     P0_4 ------ TX

(2)USART功能特点:

      在 CC2540中, UART0和UART1是串行通信接口,它们能够分别运于异步UART模式或者同步SPI模式两个模式。两个UART的功能是一样,可以通过设置在单独的 IO引脚上。
      UART 模式的操作具有下列特点:
          ①8位或者 9位负载数据

          ②奇校验、偶校验或者无奇偶校验

          ③配置起始位和停止电平

          ④配置 LSB 或者 MSB 首先传送

          ⑤独立收发中断

          ⑥独立收发 DMA 触发

(3)CC2540配置串口的一般步骤

① 配置 IO,使用外部设备功能。 此处配置 P0_2 和 P0_3用作串口 UART0
② 配置相应串口的控制和状态寄存器。 此处配置 UART0 的工作寄存器
③ 配置串口工作的波特率。 此处配置波特率为115200

(4)寄存器的相关内容:

U0CSR
(UART0控制和状态寄存器)
BIT7:MODE 0:SPI模式      1:UART模式
  BIT6:RE 0:接收器进制  1:接收器使能
  BIT5:SLAVE 0:SPI主模式   1:SPI从模式
  BIT4:FE 0:没有检测到出帧错误
1:收到字节停止位电平出错
  BIT3:ERR 0:没有检测出奇偶检验出错
1:收到字节奇偶检验出错
  BIT2:RX_BYTE 0:没有收到字节
1:收到字节就绪
  BIT1:TX_BYTE 0:没有发送字节
1:写到数据缓冲区寄存器的最后字节已发送
  BIT0:ACTIVE 0:UART空闲
1:UART忙碌
U0GCR
(UART0通用控制寄存器)
BIT7:CPOL 0:SPI负时钟极性
1:SPI正时钟极性
  BIT6:CPHA 0:当来自CPOL的SCK反相之后又返回CPOL时,数据输出到 MOSI;当来自CPOL的SCK返回CPOL反相时,输入数据采样到MISO。
1:当来自CPOL的SCK反相之后又返回CPOL时,输入数据采样MOSI;当来自CPOL的SCK返回CPOL反相时,数据输出到 MOSI。
  BIT5:ORDER 0:LSB先传送
1:MSB先传送
  BIT[4,0]:BAUD_E 波特率指数值  BAUD_E连同BAUD_M一起决定了UART的波特率
U0BAUD
UART0 波特率控制寄存器
BIT[7,0]:BAUD_M 波特率尾数值  BAUD_E连同BAUD_M一起决定了UART的波特率
U0DBUF   串口发送/接受数据缓冲区
UTX0IF
发送中断标志
中断标志5IRCON2的BIT1 0:中断未挂起
1:中断挂起

(5)串口波特率设置

公式如下:

image

常用波特率设置:

image

(6)代码实现:

#include<ioCC2540.h>
#include <string.h>

#define  uint  unsigned int
#define  uchar unsigned char

//定义LED的端口
#define LED1 P1_0
#define LED2 P1_1

//函数声明
void Delay_ms(uint);
void initUART(void);
void UartSend_String(char *Data,int len);

char Txdata[19]; //存放"Hello BlueTooth4.0\n"共19个字符串

/****************************************************************
    延时函数                                            
****************************************************************/
void Delay_ms(uint n)
{
  uint i,j;
  for(i=0;i<n;i++)
    for(j=0;j<1774;j++);
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值