1,CC2530串口简介:
CC2530是一款由德州仪器(TI)生产的系统级芯片(SoC),主要用于无线通信应用。它基于8051微控制器架构,集成了2.4GHz的IEEE 802.15.4射频收发器,常用于Zigbee网络。CC2530具有两个独立的串行通信接口(USART),可配置为UART、SPI和I2C模式。UART模式用于标准的异步串行通信,常见于与外部设备如传感器、显示屏或其他微控制器的通信。SPI模式适用于高速同步串行通信,通常用于短距离设备间的数据传输。I2C模式则适用于与低速外围设备的通信,如EEPROM和ADC等。CC2530的USART支持多种波特率设置,从低速到高速,能够灵活适应不同的通信需求。此外,USART模块还支持中断和DMA(直接内存访问)功能,实现高效的数据传输和处理,减少CPU负担。这些串口功能使得CC2530在无线通信和嵌入式应用中具备了强大的数据传输能力和灵活性。
2,CC2530串口配置:
CC2530中的串口涉及到的端口为P0_2和P0_3,串口初始化主要分为时钟源初始化、串口初始化配置、串口波特率配置三个操作。
时钟源配置
时钟源配置需要CLKCONCMD和CLKCONSTA,CLKCONCMD用于初始化系统的外部时钟,其配置参数如下表,设置时钟源32MHz,250KHz,时钟速度32MHz。
时钟源配置的代码为:
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
CLKCONCMD首先将第6位清零,0x40的二进制代码为:01000000;取反则为10111111;与CLKCONCMD与运算,这样就可以保证第6位清零,其余位置不变。
CLKCONSTA是一个只读寄存器,用于获取当前的时钟状态,让CLKCONSTA与0x40做与运算,如果系统时钟没有稳定,也就是说不是32MHz,那么此时CLKCONSTA的第6位为1,与0x40做与运算得到的结果为1,while继续循环,如果说第6位变成了0,此时系统时钟32MHz,达到了稳定状态,那么此时第6位为0,与0x40做与运算后,得到的最终结果为0,退出循环。此时系统的主时钟完成32MHz的配置。
最后配置系统时钟为CLKCONCMD &= ~0x47;也就是设置时钟源32MHz,250KHz,时钟速度32MHz。
串口初始化配置
该配置主要是设置哪个外设端口作为串口使用,因为前文中的电路图是针对P0.2和P0.3,故需要将P0端口设置为串口,需要用到的寄存器有PERCFG,P0SEL,P2DIR;
PERCFG为外设控制寄存器,本实验种将选择串口0的备用位置0,作为实验端口,将改为置0;P0SEL是将哪几个端口作为外设使用,由于前面我们设置了P0端口的P0.2 P0.3 P0.4 P0.5作为串口,故将P0SEL设置为:00111100;P2DIR是设置端口0的外设优先级,本文将P2DIR的两个高位设置为0,即将串口0设置为第一优先级。代码如下:
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x3c; //P0_2,P0_3,P0_4,P0_5用作串口
P2DIR &= ~0XC0; //P0优先作为UART0
针对CC2530的每一个USART寄存器,都对应5个寄存器
代码如下:
U0CSR |= 0x80; //UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200
UTX0IF = 0; //UART0 TX中断标志初始置位0
U0CSR是串口0的控制和状态寄存器,其配置如下表,将该寄存器的第7位配置为1以设置UART串口模式。
U0GCR和U0BAUD是设置串口波特率的寄存器,根据CC2530的芯片手册,其对应的波特率设置如下表。本文选用115200波特率进行通信。
UTX0IF是串口中断,本文不涉及串口中断,故将该寄存器设置为0