1+X传感网(二)串口通信
1+X传感网(二)串口通信

1+X传感网(二)串口通信

一、什么是串口通信?

1.串口就像“对讲机”

假设你和朋友用对讲机交流,一个人说话(发送数据),另一个人(接收数据)。

你们不能同时讲话,必须等对方说完再回应,这和串口通信的半双工模式很像。

如果你们都同时说话(或者都不说话),信息就会混乱,这就是为什么通信需要协议来约定规则。

二、CC2530 串口的基本组成

CC2530 的串口主要由 发送(TX) 和 接收(RX) 两个信号线组成,还有一些控制寄存器来管理通信。

组件作用
TX(发送端)负责把数据从 CC2530 发送出去
RX(接收端)负责接收外部设备传来的数据
波特率规定
“说话”的速度,比如 9600bps 就是每秒 9600 个比特
数据格式规定每次传输的内容格式,如 8 位数据 + 1 个停止位
寄存器(U0DBUF)存放要发送和接收的数据
中断(UART0_ISR)发生数据传输时,通知 CPU 处理

三、数据是怎么传输的?

1. 发送数据(从 CC2530 发给其他设备)

流程:

  1. CPU 把数据写入 U0DBUF(数据寄存器)。
  2. 串口硬件把数据转换成电信号,通过 TX 引脚 发送出去。
  3. 另一端的设备(比如电脑)通过 RX 引脚 接收数据。

举例:你用 CC2530 发送 “Hello” 到电脑,CC2530 会把字符 “H” 转换成二进制 01001000 发送出去,接收端再解析出来显示 “H”。

2. 接收数据(从外部设备传输给 CC2530)

流程:

  1. 其他设备(如电脑)通过 TX 引脚 发送数据到 CC2530 的 RX 引脚
  2. CC2530 自动把数据存入 U0DBUF
  3. 如果设置了中断,CC2530 会通知 CPU 来处理数据。

举例:电脑发送 “OK” 到 CC2530,CC2530 依次收到 ‘O’ 和 ‘K’,并放入 U0DBUF 供 CPU 读取。

四、简单的代码示例

1. 初始化 CC2530 串口

#include <ioCC2530.h>
void UART0_Init(void) {
    PERCFG &= ~0x01;    // 选择 UART0 端口
    P0SEL |= 0x0C;      // P0_2(TX)和 P0_3(RX)设置为串口模式
    U0BAUD = 59;        // 设置波特率(9600)
    U0GCR = 11;
    U0CSR = 0x80;       // 选择 UART 模式
    U0UCR = 0x02;       // 设置停止位、奇偶校验等

2. 发送数据

void UART0_SendByte(unsigned char data) {
    U0DBUF = data;   // 把数据放入发送寄存器
    while (!(U0CSR & 0x02));  // 等待发送完成
}

3. 接收数据(中断方式)

#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void) {
    unsigned char received_data = U0DBUF;  // 读取收到的数据
    // 这里可以处理收到的数据,比如存入缓冲区

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注