51兼容载波通信单片机PL3105的通信软件设计
扫描二维码
随时随地手机看文章
关键词:PL3105 直接序列扩频 载波通信 软件设计
引言
随着嵌入式系统及集成电路技术的飞速发展,针对智能仪表应用而设计的专用芯片获得了长足发展。智能仪表一般要具备CPU单元、显示单元、标准工业总线接口、A/D信号转换、实时钟、看门狗等功能。传统的智能仪表设备在选定了CPU后,需要配置复杂的功能芯片及接口芯片,完成显示驱动、外部程序存储、数据存储及其它要求功能。众多的接口芯片导致仪表的体积大、成本高、功耗增加、可靠性降低;同时调试、维护困难。
为适应智能仪表的应用需要,针对某类产品的专用单芯片上系统SoC(System on Chip)解决方案获得了巨大的发展机遇。国内外各IC设计公司都针对不同领域、不同应用需求推出了各自的SoC产品。具有8051指令兼容高速微处理器的SoC产品PL3105,采用最新的CMOS数/模混合工艺制造,是针对智能仪表行业应用而推出的低成本、高性能的解决方案。
1 PL3105的主要特点
采用8051指令兼容的高速微处理器,软件易于开发;具有8/16位双模式ALU、8倍速于标准51,运行速度快,数据处理能力强。图1为PL3105的基本功能结构方框图。
针对智能仪表的应用,PL3105内部集成了2通道16位精度的∑—Δ调制A/D,LED(8×8笔划式)/LCD(24×4笔划式)显示驱动模块,2个UART,内置1KB的RAM和16KB的E2PROM程序存储器(采用ISP方式编程);内置低功耗实时钟。同时集成了完善的电压监测,上电、掉电复位,看门狗电路,确保了工业环境下运行时系统的可靠性。
内嵌的载波通信控制单元,使产品具备了在低压电力线上组网、远程通信的强大功能;最低压电力线载波通信接口专用芯片PL2101的升级,具有强抗带内同频干扰能力,灵敏度高的优点。内嵌的CPU通过配置寄存器来实现对载波通信的控制,比PL2101芯片的接口方便,可靠性更高。
2 载波通信的工作原理
载波通信采用直接序列扩频的BPSK(Bipolar Phase Shift Keying)调制解调方式:将要发送的信息用伪随机码序列扩展到较这的频带上,在接收端用同样的伪随机码序列来进行同步接收,恢复信息。接收的过程包括载波信号的捕获和同步。
捕获是接收模块在扩频序列精确同步前,搜索接收信号,使接收信号的扩频序列与本地扩频序列在相位上进入可同步保持的范围之内,即二者的相位在一个扩频序列码元之内。采用每次滑动步长为半个位的串行积分搜索方式,理论上最大捕获时间需要29个数据位(15位PN码时)。捕获完成后进入跟踪阶段,动态地高速本地伪码产生器的时钟速率,使本地伪码能够自动地和接收到信号的伪码保持精确同步。扩频序列的跟踪电路采用全数字基带延迟锁定环(delay locked loop)电路。
解扩过程为保证捕获和同步均能完成,发送模块在每次传送有效数据前至少发送40个位全“1”,用作捕获和同上训练(15位PN码)。
由于所选用的扩频伪码具有很强的自相关性,所以通过比较本地伪码和接收序列之间的相关性与设定阈值的高低,来判定是否停止伪码的滑动、完成捕获。500bps时,默认的捕获门限值为30H。载波通信的扩频、解扩工作完全由SoC内部的硬件电路实现,简单可靠,解扩阈值可以软件调节。
图2(a)、(b)为PL3105内部的载波通信发送/接收工作时序图,收发数据位在芯片内部连接到P3.7,芯片未做封装引出。
载波通信控制器采用帧同步方式的串行移位通信,半双工方式,速率500bps/250bps可选;中心频率为120kHz,带宽为±7.5kHz。内嵌的CPU使用外部中断2(INT2),同步收发中断,载波通信配置流程如图3所示。
①使能INT2中断(EX2=1),且为下降沿触发方式(IT2=0)。
②使能载波通信控制位PLM_SSC(EXT_CFG.0=1,INT2作为载波通信同步信号的中断。
③载波收发控制位PLM_RS(EXT_CTRL.0)=1时,载波控制器处于发送状态;PLM_RS(EXT_CTRL.0)=0时,载波控制器处于接收状态。
④载波发送复位寄存器:用于避免载波通信模块长时间处于发送状态,使整个通信系统处于失控状态而设置。它是一个13位计数器,发送状态时,计数器速减,递减到0后,载波发送模式被强制返回接收态;接收态时,计数器停止工作。长时间发送数据时,需要向PLM_RST寄存器写入“A2H”,写入后计数器自动复位,保持发送。
低压电力线载波通信的原理结构框图如图4所示。需要配合外围的功率放大、接收回路工作,载波通信的距离与外围电路设计优劣、功率大小等密切相关。
3 接收和发送的软件设计
载波通信为总线方式通信,所以载波模块的常态必须设置为接收态、不同的载波模块必须分配不同的通信地址。模块接收到校验正确的命令后,只有地址相同的模块才允许按规约进行应答。由于载波通信速率相对主频低很多,为提高CPU效率,接收和发送一般均设计为外部中断方式处理;每次进入中断,完成对1位数据的接收或发送处理。
按图3所示流程对模块进行配置、选择速率为500bps后,内部自动选择为15位PN码。载波通信控制器即进入接收态,进行载波信号的捕获和同步。
接收时,捕获和同步过程由载波通信控制单元的硬件电路自动完成,不需要软件部分参与。由于电力线的哭声一直存在,所以有效数据前必须增加同步帧头,依据相关性标准选择为0x09、0xAF,后续为通信的有效数据体及校验字节。
图5为载波通信接收过程框图。载波通信控制单元解扩出1位数据后,产生一次中断。接收时,首先采用16位接收窗口、1位滑动方式来接收通信的同步帧头0x09、0xAF。帧头接收成功后,后续数据按每8位一个字节的方式进行截取,得到传送的有效数据。接收过程中,按有关的通信协议进行地址判别、长度接收、校验计算。地址相同的模块对符合通信协议的数据进行应答,转入发送态。
图6为载波通信发送过程框图。用于载波通信的主叫方发出命令或接收方的应答。置为载波发送态时,载波通信控制单元发送完1位的扩频数据,自动产生一次中断,允许下一次数据发送。根据捕获和同步过程需要,首先发送至少40位的全“1”;然后按位发送同步帧头0x09、0xAF;之后根据用户的有关通信协议按位发送通信地址、数据长度、数据体、校验等字节。
数据全部发送完成后,载波模块即可转入接收态。但为确保待发送数据的最后一个位发送成功,必须在发送完最后一位数据后等到下一次发送中断到来后,才可以转换载波发送态到接收态。
载波发送未,将全部数据发送完成前,CPU必须及时向PLM_RST寄存器写入“A2H”,使计数器复位,避免自动复位提前进入载波接收态。发送中断程序如下:
void PLM_int(void)interrupt 7//载波收发中断
{if(PLM_RS==1)zb_tx();//载波发送中断服务程序
else zb_rx();//载波接收程序服务程序,略
}
void zb_tx(void)//载波发送程序
{if(len8==0)s_byte=buf_send[zbs_count];//取待发送字节到位发送缓冲
ACC=s_byte;
P3.7=ACC^7;//位发送,最高位在前
s_byte=s_byte<<1; //左移
len8++; //移位计数计算
if(len8>7) //8位发送完毕
{zbs_count++; //下一字节
len8=0; //移位计数清零
}
PLM_RS=1; //载波发送允许
PLM_RST=0xA2; //载波发送复位寄存器清空
}
结语
由SoC芯片PL3105设计的具有载波通信功能的智能仪表,在智能电表行业中得到了应用和推广。其简单的接收、发射处理方式使应用程序设计十分方便。同时灵活的ISP编程方式,使产品升级换代和功能扩展灵活;达到了低成本、高性能的设计指标。