- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于CC1100的无线手持终端的设计
录入:edatop.com 点击:
在布线繁杂、不方便或不允许布线的情况下,人们都希望能通过短距离无线通信方案来解决。常见的应用有RFID、无线抄表、无线餐饮点菜系统、无线监控等。随着射频通信技术和相关产品的日趋成熟以及人们生活水平和要求的不断提高,餐饮行业的信息化建设方兴未艾。餐馆服务员手中的点菜器是餐饮点菜系统的数据采集部分,它与基站的通信是无线方式。本文介绍一种适用于中小餐馆的普及型无线点菜手持终端设备(经适当改动可用于其他领域),它采用高性能、低价位、低开发成本的C8051F340单片机作为MCU,以Chipcon公司新推出的一体化无线收发芯片CC1100为射频收发器,工作在免许可证的 ISM(工业、科研及医疗)频段的433MHz。
1 硬件设计
它主要由MCU控制单元(控制各可编程芯片、处理输入和输出信号)、射频收发单元(射频信号的调制与解调、发射与接收和对数据进行打包与解包等)、键盘与LCD显示单元(信息的输入和显示)、存储器单元(存放汉字库和菜单数据库)、UART和USB接口单元(与PC机的通信、提供充电电源)、电源管理单元(为系统提供各种类型的电压、充电、外接电源的切换等)等组成。
1.1 MCU单元
C8051F340 (以下简称MCU)是一款具有全速USB功能的混合信号Flash微控制器,其内置256kB+4KB的RAM和64KB的Flash存储器;精确校准 (0.25%)的12MHz内部振荡器(工作时外部不必接晶振),处理速度可达48MIPS;基于JTAG接口的非侵入式在系统调试接口等[1]。其功能和性能完全满足设计要求。
1.2 射频收发器单元
CC1100是Chipcon/TI公司力推的一款性价比“最高” 的射频单片收发器芯片,它体积小(20pins,QLP 4×4mm)、接收灵敏度高(-110dBm/1.2kbps)、速率可编程(1.2kb/s~500kb/s)、工作电压低(1.8V~3.6V)、功耗低(15.4mA/433MHz/1.2kb/s,1.8μA的待机电流,待机模式下的启动时间仅为0.3ms)、在所有频段输出功率高达+ 10dBm、高效的SPI接口、数字RSSI(接收信号强度指示)输出、无线唤醒(WOR)功能等。它的工作频率为300MHz~1000MHz[2]。
考虑到高频干扰,该单元单独做一块PCB板,并用金属罩对其进行电磁屏蔽,通过一个7针的连接器与底板相连,如图2所示。GDO0与MCU的P0.7相接,用于指示是否已完整地接收了一个数据包,它可作为MCU的外部中断源信号。在缺省情况下,GDO0会输出一个频率为晶振频率(192Hz)的方波,这可作为在调试时判断CC1100是否正常工作的依据。SCLK(串行时钟)、SO(串行输出)、SI(串行输入)、CSn(片选)分别与MCU的 P0.0、P0.1、P0.2和P0.6相接,实现MCU与CC1100的SPI接口相连。MCU对CC1100的配置、控制和数据收发都通过该SPI接口进行。在设计PCB时要让晶振与芯片引脚尽量靠近,并用地线把时钟区隔离开,晶振外壳接地并固定,元件都使用SMT(表帖式)元件,以减少过孔和体积。 VCC为3.3V。C4、C5、C6和L3、L4组成一个非平衡变压器,用于在差分和单端RF(射频)信号之间进行变换,C1、C2、C3和L1、L2组成一个LC滤波器,它与非平衡变压器一起实现与50Ω的天线相适配。电阻R1用于为CC1100的偏压设置一个精准的参考电流。DS1用于指示模块上的电源是否正常。
1.3 键盘和LCD显示单元
键盘包括数字键、发射键、方向键、多功能键、电源开/关键等,它由一个8行×3列的矩阵和一个独立的键(电源开/关)组成。其中的行线与MCU的数据线(P4口)相连,列线分别与P2.0、P2.1和P2.2相连。软件在判断P2口的低3位有变化时,立即读取P4口的内容,可获得当前按下的键。电源开/关键直接与电源管理芯片的启动/关闭脚相连。
UC1610为具有128×160点阵的4个灰度级伪彩LCD控制器和驱动器,专为超低功耗的手持设备设计,与MCU的接口有并口、SPI、I2C。本系统采用2线I2C总线与MCU的SMBus相连,此时,应把CD、WR0和WR1接地,D0、D3分别与 MCU的SCL、SDA相连,数据线中的其他位接地。对其控制可参考其数据手册[4]。
1.4 存储器单元
MCU的片内存储器已足够存放程序代码,但由于要存放汉字库和菜库,所以必须外接一个数据存储器。此存储器既要容量大又要封装小,因此选择了ATMEL公司的 SPI Flash存储器AT25F2048。该存储器容量为2Mbit,8脚贴片封装,通过4线SPI与MCU连接,数据传输率为12Mb/s。可根据数据手册中的命令格式进行相关的读写以及擦除操作[5]。
1.5 UART和USB接口单元
程序可以通过JTAG接口下载,但像菜库、汉字库只能通过UART/USB接口下载。MCU 提供2个UART口,通过外接一个UART← →RS232变换的驱动芯片MAX3232,就可与PC的串口相连。MCU内嵌一个USB2.0(设备)控制器[1],可以直接与PC的USB接口相连。同时,USB口还提供对设备进行充电的电源。
1.6 电源管理单元
LTC3455是凌特公司针对手持应用新推出的一个完整的单片电源管理解决方案,在4mm×4mm的24引脚QFN封装内集成了USB电源管理器、锂离子电池充电器和双DC-DC(5V~3.3V和 5V~1.8V)转换器,它把以前需要5个或更多芯片实现的几个功能结合在一起。对电源进行无缝选择(3选1),其过程完全是按优先级自动进行的: 5.0V AC适配器→USB电源→电池。在使用适配器或USB电源时,电池充电器被使能,而且器件内部的电源完全由选择的外部电源供电[3]。图中的CON1与PC的USB口相接,CON2与电源适配器相接,USBHP用于选择USB电源的上限电流为500mA。P30用于使能 SW2和热插拔功能,P31用于指示电池的电量,P32用于指示ON脚的状态,P33用于使能本芯片,SW-VCC用于开启/关闭输出电源。
2 软件设计
软件的开发环境为keil μVISION3,使用keil C51语言。系统的无线通信部分采用主从结构,从站由手持设备组成,主站由设在厨房的基站组成,工作方式采用主站轮询、从站监听方式。为了避免多个从站争用信道而发生冲突,规定只有主站向某个从站点名时,从站才向主站发送数据。系统软件主要流程如图4所示。
2.1 CC1100的编程要点
(1)寄存器访问
在不同速率下CC1100有不同的配置。为了获得最佳性能,有些配置必须经过复杂的计算才能获得。Chipcon公司提供了SmartRF Studio软件对有关的寄存器进行最佳配置。针对某一个速率,该软件会自动提供一组最佳的寄存器配置参数,程序员只需在初始化时把这些配置写入相应的寄存器即可。配置只能在CC1100处于IDLE状态下时才能进行。
除了配置操作外,还有读状态、发命令和读/写Rx/Tx FIFO操作。这些操作有相似的通信格式:head字节+data(读和发命令操作除外)字节。Head由R/W(bit7)、Burst(bit6)和 Addr(bit5~0)三部分组成。R/W标示当前操作是读1还是写0;Burst标示当前操作是访问单个0还是多个1寄存器。但在读状态寄存器时是一个例外,虽然每次只能读一个状态寄存器,但该位必须为1,原因是状态寄存器的地址与命令寄存器的地址是重叠的,因此对burst位进行了重定义; bit0~5(Addr)为寄存器的地址。
(2)状态机
CC1100内部有一个用于管理各个状态之间相互切换的状态机。当前状态可从状态寄存器MARCSTATE获得。状态转移图如图5所示。命令、内部事件和配置信息决定状态切换。寄存器MCSM1中的 TXOFF_MODE、RXOFF_MODE决定在完成发送操作、接收一个有效的包后将进入哪一个状态。需要注意的是,具有省电功效的无线唤醒功能WOR 能使CC1100在SLEEP状态下周期性地自动转到IDLE状态,然后再自动转到Rx状态。但如果在此状态下没有数据包可接收,将又回到SLEEP状态;否则,在接收完数据包之后,下一个状态将由RXOFF_MODE决定,但不会进入SLEEP状态,必须在进入IDLE状态时由MCU发送SWOR命令才能再次进入。在SLEEP状态下,晶振是否继续工作是由寄存器MCSM0中的XOSC_FORCE_ON决定的(0:继续工作,1:停止工作)。在 MCU访问CC1100(CSn=0)时,无论XOSC_FORCE_ON为何值,晶振将总是工作。
1 硬件设计
它主要由MCU控制单元(控制各可编程芯片、处理输入和输出信号)、射频收发单元(射频信号的调制与解调、发射与接收和对数据进行打包与解包等)、键盘与LCD显示单元(信息的输入和显示)、存储器单元(存放汉字库和菜单数据库)、UART和USB接口单元(与PC机的通信、提供充电电源)、电源管理单元(为系统提供各种类型的电压、充电、外接电源的切换等)等组成。
1.1 MCU单元
C8051F340 (以下简称MCU)是一款具有全速USB功能的混合信号Flash微控制器,其内置256kB+4KB的RAM和64KB的Flash存储器;精确校准 (0.25%)的12MHz内部振荡器(工作时外部不必接晶振),处理速度可达48MIPS;基于JTAG接口的非侵入式在系统调试接口等[1]。其功能和性能完全满足设计要求。
1.2 射频收发器单元
CC1100是Chipcon/TI公司力推的一款性价比“最高” 的射频单片收发器芯片,它体积小(20pins,QLP 4×4mm)、接收灵敏度高(-110dBm/1.2kbps)、速率可编程(1.2kb/s~500kb/s)、工作电压低(1.8V~3.6V)、功耗低(15.4mA/433MHz/1.2kb/s,1.8μA的待机电流,待机模式下的启动时间仅为0.3ms)、在所有频段输出功率高达+ 10dBm、高效的SPI接口、数字RSSI(接收信号强度指示)输出、无线唤醒(WOR)功能等。它的工作频率为300MHz~1000MHz[2]。
考虑到高频干扰,该单元单独做一块PCB板,并用金属罩对其进行电磁屏蔽,通过一个7针的连接器与底板相连,如图2所示。GDO0与MCU的P0.7相接,用于指示是否已完整地接收了一个数据包,它可作为MCU的外部中断源信号。在缺省情况下,GDO0会输出一个频率为晶振频率(192Hz)的方波,这可作为在调试时判断CC1100是否正常工作的依据。SCLK(串行时钟)、SO(串行输出)、SI(串行输入)、CSn(片选)分别与MCU的 P0.0、P0.1、P0.2和P0.6相接,实现MCU与CC1100的SPI接口相连。MCU对CC1100的配置、控制和数据收发都通过该SPI接口进行。在设计PCB时要让晶振与芯片引脚尽量靠近,并用地线把时钟区隔离开,晶振外壳接地并固定,元件都使用SMT(表帖式)元件,以减少过孔和体积。 VCC为3.3V。C4、C5、C6和L3、L4组成一个非平衡变压器,用于在差分和单端RF(射频)信号之间进行变换,C1、C2、C3和L1、L2组成一个LC滤波器,它与非平衡变压器一起实现与50Ω的天线相适配。电阻R1用于为CC1100的偏压设置一个精准的参考电流。DS1用于指示模块上的电源是否正常。
1.3 键盘和LCD显示单元
键盘包括数字键、发射键、方向键、多功能键、电源开/关键等,它由一个8行×3列的矩阵和一个独立的键(电源开/关)组成。其中的行线与MCU的数据线(P4口)相连,列线分别与P2.0、P2.1和P2.2相连。软件在判断P2口的低3位有变化时,立即读取P4口的内容,可获得当前按下的键。电源开/关键直接与电源管理芯片的启动/关闭脚相连。
UC1610为具有128×160点阵的4个灰度级伪彩LCD控制器和驱动器,专为超低功耗的手持设备设计,与MCU的接口有并口、SPI、I2C。本系统采用2线I2C总线与MCU的SMBus相连,此时,应把CD、WR0和WR1接地,D0、D3分别与 MCU的SCL、SDA相连,数据线中的其他位接地。对其控制可参考其数据手册[4]。
1.4 存储器单元
MCU的片内存储器已足够存放程序代码,但由于要存放汉字库和菜库,所以必须外接一个数据存储器。此存储器既要容量大又要封装小,因此选择了ATMEL公司的 SPI Flash存储器AT25F2048。该存储器容量为2Mbit,8脚贴片封装,通过4线SPI与MCU连接,数据传输率为12Mb/s。可根据数据手册中的命令格式进行相关的读写以及擦除操作[5]。
1.5 UART和USB接口单元
程序可以通过JTAG接口下载,但像菜库、汉字库只能通过UART/USB接口下载。MCU 提供2个UART口,通过外接一个UART← →RS232变换的驱动芯片MAX3232,就可与PC的串口相连。MCU内嵌一个USB2.0(设备)控制器[1],可以直接与PC的USB接口相连。同时,USB口还提供对设备进行充电的电源。
1.6 电源管理单元
LTC3455是凌特公司针对手持应用新推出的一个完整的单片电源管理解决方案,在4mm×4mm的24引脚QFN封装内集成了USB电源管理器、锂离子电池充电器和双DC-DC(5V~3.3V和 5V~1.8V)转换器,它把以前需要5个或更多芯片实现的几个功能结合在一起。对电源进行无缝选择(3选1),其过程完全是按优先级自动进行的: 5.0V AC适配器→USB电源→电池。在使用适配器或USB电源时,电池充电器被使能,而且器件内部的电源完全由选择的外部电源供电[3]。图中的CON1与PC的USB口相接,CON2与电源适配器相接,USBHP用于选择USB电源的上限电流为500mA。P30用于使能 SW2和热插拔功能,P31用于指示电池的电量,P32用于指示ON脚的状态,P33用于使能本芯片,SW-VCC用于开启/关闭输出电源。
2 软件设计
软件的开发环境为keil μVISION3,使用keil C51语言。系统的无线通信部分采用主从结构,从站由手持设备组成,主站由设在厨房的基站组成,工作方式采用主站轮询、从站监听方式。为了避免多个从站争用信道而发生冲突,规定只有主站向某个从站点名时,从站才向主站发送数据。系统软件主要流程如图4所示。
2.1 CC1100的编程要点
(1)寄存器访问
在不同速率下CC1100有不同的配置。为了获得最佳性能,有些配置必须经过复杂的计算才能获得。Chipcon公司提供了SmartRF Studio软件对有关的寄存器进行最佳配置。针对某一个速率,该软件会自动提供一组最佳的寄存器配置参数,程序员只需在初始化时把这些配置写入相应的寄存器即可。配置只能在CC1100处于IDLE状态下时才能进行。
除了配置操作外,还有读状态、发命令和读/写Rx/Tx FIFO操作。这些操作有相似的通信格式:head字节+data(读和发命令操作除外)字节。Head由R/W(bit7)、Burst(bit6)和 Addr(bit5~0)三部分组成。R/W标示当前操作是读1还是写0;Burst标示当前操作是访问单个0还是多个1寄存器。但在读状态寄存器时是一个例外,虽然每次只能读一个状态寄存器,但该位必须为1,原因是状态寄存器的地址与命令寄存器的地址是重叠的,因此对burst位进行了重定义; bit0~5(Addr)为寄存器的地址。
(2)状态机
CC1100内部有一个用于管理各个状态之间相互切换的状态机。当前状态可从状态寄存器MARCSTATE获得。状态转移图如图5所示。命令、内部事件和配置信息决定状态切换。寄存器MCSM1中的 TXOFF_MODE、RXOFF_MODE决定在完成发送操作、接收一个有效的包后将进入哪一个状态。需要注意的是,具有省电功效的无线唤醒功能WOR 能使CC1100在SLEEP状态下周期性地自动转到IDLE状态,然后再自动转到Rx状态。但如果在此状态下没有数据包可接收,将又回到SLEEP状态;否则,在接收完数据包之后,下一个状态将由RXOFF_MODE决定,但不会进入SLEEP状态,必须在进入IDLE状态时由MCU发送SWOR命令才能再次进入。在SLEEP状态下,晶振是否继续工作是由寄存器MCSM0中的XOSC_FORCE_ON决定的(0:继续工作,1:停止工作)。在 MCU访问CC1100(CSn=0)时,无论XOSC_FORCE_ON为何值,晶振将总是工作。
上一篇:多天线技术应用于第四代移动通信系统
下一篇:博信视通全力支持香港启动CMMB试验