摘要:以PIC单片机和CC1000为核心器件,设计并实现无线数据传输发射机;介绍PIC16C73芯片和CC1000芯片的性能,详细讨论发射机的硬件和软件系统设计并予以实现。
本文介绍以PIC16C73和CC1000为基本部件,设计并实现无线数据传输发射机的过程。
1 PIC16C73及CC1000简介
PIC16C73是Microchip公司生产的一种高性价比的8位嵌入式微控制器。CC1000是为在无线条件下应用所设计的一种极低功率单芯片射频收发器。它主要是为315、433、868和915MHz的ISM和SRD设备所设计,可以编程工作在300~1000MHz范围之间的任一频率上。它具有极低的电流消耗、高灵敏度、体积小、低供电电压、FSK数据传输率可达76.8kbps、FSK调制频谱修正等特点,它还为用户提供了简单易用的开发包。使用CC1000芯片设计电路简单,不需要使用极少的外部元件、不需要外部射频转换和中频滤波器。
2 系统设计
本无线数据传输发射机框图如图1所示。
图中,PIC16C73接收数字或模拟信号,经过缓存、组帧后,将数据传送到射频发射机,由CC1000实现FSK调制后发射出去。
本设计中PIC16C73的振荡周期为4MHz,指令周期为1μs。CC1000工作在发射状态,发射频率306.874457MHz,频偏64kHz,速率7638Kbps,发射功率10dBm。发射数据采用自定义帧格式,其格式为:
4字节位同步字—0AAH,0AAH,0AAH,0AAH;
2字节帧同步字(3位0加13位巴克码)—1FH,35H;
1字节地址或命令;
50字节数据。
上述57字节组成一帧,每两帧之间间隔为8.25ms。
3 硬件设计
单片机PCI16C73与CC1000的连接如图2所示。
单片机通过对3-wire串行设置接口(PDATA,PCLK和PALE)编程,使CC1000处在不同工作模式下。为实现数据回读,PDATA必须使能双向引脚,另一个双向引脚被用来实现数据(DIO)的发送和接收。提供数据定位的位置寄存器,完全设置CC1000需要发送29个16位的数据帧(7位地址位、1位读/写位和8位数据位)。
在每个写循环中,编程数据PDATA线上都发送16位数据,每个数据帧中前7位为地址位,下一位是读/写位(高电平写,低电平读),后8位是数据。在地址和读/写位传送过程中,程序地址锁存器使能PALE线必须保持低电平,然后传送8位数据位。PDATA上的数据同步在编程时钟PCLK的负沿完成。当D0,即8位数据位的最后一位已经载入时,数据就会被载入内部设置寄存器,时序如图3所示。
这些设置寄存器也可被单片机通过同样的设置接口读取。7位地址首先被发送,然后读/写位被置为低来,开始数据回读,时序如图4所示。
4 软件设计
4.1 总体流程图
软件采用模块化程序设计方法,图5是总体流程。
4.2 初始化
初始化是一项十分重要的工作,需要分别对PIC16C73和CC1000两个芯片进行初始化。由于本设计中要完成PC机与PIC之间的异步通信和PIC的模/数据换功能,所以除了PIC16C73的各个PORT端口外,还应对串行通信接口SCI部件和A/D转换部件等进行初始化。在单片机初始化完成后,通过它对CC1000进行初始化,使其工作在发射模式,其流程如图6所示。
4.3 中断服务子程序设计
PIC16C73有多达11种中断源,本设计使用了其中的SCI异步接收中断和A/D转换完成中断。初始化工作完成后,当单片机通过SCI接收完一字节数据后就会产生SCI接收中断,另外,当单片机完成一次A/D后也会产生中断。在产品中断后,程序即进入中断服务子程序,要完成数据的缓存、缓存管理及组帧、数据传送工作。
图6
缓存管理的目的是使用者能够清楚地知道当前存储数据和发送数据的进程。具体实现方法是在PIC16C73通用寄存器里开辟一个数据缓存区,由50个寄存器组成,同时自定义收发数据计数器RX_IF0和TX_IF0.RX_IF0是接收数据计数器,其中存放的值表示PIC16C73接收到第几个数据,每接收到一个数据,就将RX_IF0加1,同时寄存器地址加1,以便接收下一个数据。当RX_IF0的值等于50时表示接收完一帧数据。TX_IF0是发送数据计数器,其中存在的值表示PIC16C73向CC1000发送了几个数据,PIC每发送完一个数据,就把TX_IF0加1。同时寄存器地址加1,以便发送下一个数据。TX_IF0等于50时,表示已发送完一帧数据。中断服务子程序流程如图7所示。
编写的程序经过调试,通过编译生成机器码,将其写入PIC,再将PIC嵌入发射机电路,连接正确后,经过调试达到了无线发射机的功效。