电能计量芯片ATT7022B的通信研究与实现

   2023-09-13 互联网2360
核心提示:  引言  电子电能表市场需求稳中有升,这些年来电子电能表一直在围绕用户需求进行创新,为用户提供越来越多的附加值。电子电

  引言

  电子电能表市场需求稳中有升,这些年来电子电能表一直在围绕用户需求进行创新,为用户提供越来越多的附加值。电子电能表的创新也带动了相应电能计量芯片的发展,电能计量芯片得到越来越多的应用。珠海炬力公司的ATT7022B是一款高精度三相电能专用计量芯片,通过ATT7022B提供的同步串行SPI接口可以输出三相多功能电表所需的各项电能参数,被广泛用于三相三线和三相四线的多功能电能表的设计中。SPI接口技术是一种高速、高效率的串行接口技术,但它规定通信的双方必须工作在相同的时序模式下,而ATT7022B的SPI接口只能工作在一种时序模式下,其应用范围受到了很大的限制。文中将以ATT7022B与ARM7系列中的EP7312实现通信的方案为例,给出在两个同步串行接口时序不匹配的情况下,以一种软件模拟的方法实现通信的方案。

  1、SPI接口技术简介

  SPI是由美国摩托罗拉公司最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口。SPI接口可以用全双工方式同时发送和接收8位数据,它共使用了4条引脚。这4条引脚分别规定为:主器件输入/从器件输出线(MISO)、主器件输出/从器件输入线(MOSI)、同步串行时钟线(SCK)、从机方式选择线( )。SPI通信包括一个主器件和一个从器件。主器件产生和输出同步串行时钟信号,可以由用户软件选择确定时钟脉冲的速率、相位和空闲状态电平。图1描述了4种输出时钟的时序模式。从图中可以看出:①主器件和从器件必须在相同的时序中工作;②SCK信号在空闲期间,既可以停留在低电平上,也可以停留在高电平上;③发送数据的一方总是在每个SCK时钟的前半个周期送出数据;④接收数据的一方总是在每个SCK时钟信号的中心跳变沿上,采样数据和锁存数据[1]。

  
图1 数据时钟时序图

  2、ATT7022B与EP7312的通信设计实现

  2.1 ATT7022B与EP7312实现通信的方法研究

  ATT7022B内部集成了一个SPI串行通信接口,采用从属方式工作。对ATT7022B进行一次通信,需要先写入8位的命令字,然后通过SPI接口读出或者写入24位数据,数据传输格式都是MSB在前,LSB在后,一次完整的传输过程中,CS停留在低电平[2]。

  EP7312是一种高度集成的ARM微处理器芯片,广泛应用于嵌入式领域。EP7312提供的同步串行接口SSI1可用于SPI接口,并能作为主器件。SSI1接口不需要复杂的初始化过程就可以直接与外部设备相连,所以选用SSI1接口作为与ATT7022B通信的接口。

  由芯片资料[3]可知,EP7312的SSI1接口提供的输出时钟只有模式1和模式2两种时序(如图1),而ATT7022B只能工作在模式3的时序下(如图1)。要解决两者时序不匹配的问题,常用以下两种方式:

  (1)使用CPLD设计一个接口电路,匹配EP7312与ATT7022B的时序。

  (2)使用I/O口用软件方法来模拟SPI操作,包括串行时钟、数据输入和输出。

  第一种方法使得系统变得复杂,提高了成本。第二种方法效率低下,占用额外资源,不满足嵌入式系统对实时性的要求。所以两种方法都不宜采用。

  分析图1可知模式1与模式3在空闲状态下都为低电平,模式2与模式3都在时钟上升沿发送数据,在下降沿锁存数据。而且ATT7O22B芯片对时钟信号的占空比没有特殊的要求,只是对跳变沿敏感。所以可以考虑结合模式1和模式2的特点来实现模式3的时序,以满足ATT7022B的SPI口对时序的要求。这种方法不需要额外的硬件资源,并且保证了效率。

  2.2 ATT7022B与EP7312实现通信的设计

  EP7312的SSI1接口由SYNCIO,SYSCON3,SYSFLG1三个寄存器来控制。通过设定寄存器的相应位可以对SSI1口进行设置[3]。EP7312通过SSI1口最多传输或者接收16位数据,而对ATT7022B完成一次读/写操作,需要传输32位数据。若使用EP7312通过SSI1口与ATT7022B通信,须发起两次SPI传输。值得注意的是,EP7312提供的从机选择信号在完成一次SPI传输后就会失效,为了完成两次SPI传输,必须另外提供一个从机选择信号,所以在硬件上使用一个I/O口来模拟从机选择线,通过程序来灵活控制,硬件原理图如图2所示。

  
图2

  根据以上的分析,我们最后设计出了一套可行的SPI通讯方案,这里以一次写操作的时序图(图3)为例加以说明。其中CS是用EP7312的PB0模拟得到,这个CS是实际连到ATT7022B的片选;SPICLK和DIN是EP7312的SPI接口。ATT7022B的一次写操作需要写8位的命令字和24位的数据,一共是32位。在EP7312这边进行两次SPI操作就可以输出32位数据。空闲状态,使EP7312的输出时钟为模式1,使SCLK处于低电平。开始写操作时,首先控制PB0将CS拉低,转换时钟输出为模式2的时序,使SCLK变高,模拟出传输过程中的第一个时钟上升沿(见标记A),随后装载数据,启动SPI传输。此时,EP7312发出第一位数据(见标记B)。在第一个时钟下降沿处(见标记C),ATT7022B将数据锁存下来。此后在每个时钟的上升沿(例如标记D处),EP7312都会发送一位数据,每个时钟的下降沿,ATT7022B都会将对应数据锁存下来。在标记E处,EP7312已经发送完了16位数据,总线变为空闲,时钟信号被拉高,不久第一次SPI传输结束。由于在标记E处EP7312已经不再向外发送数据,所以在数据线上会有一个短时间的不确定状态,见标记E到F之间的阴影部分。但这个不定状态并不会延续到SCLK的下降沿处,造成ATT7022B误读数据,当开始第二次SPI传输时,又是先发出第17位数据(见标记F),保证了在SCLK的下降沿到来时数据线上有正确的数据。后面的过程与第一次SPI传输相同。当32位命令和数据发送完毕后再将EP7312的输出时钟设置为模式1,使SCLK处于低电平(见标记G),最后控制PB0将CS拉高,完成一次完整的写操作。程序设计流程如图4所示。读操作过程与写操作类似,这里不再复述。

  
图3 写操作接口时序图

  
图4 对ATT7022B进行写操作的程序流程图

2.3 ATT7022B与EP7312 实现通信的实验结果

  研制某用电现场管理终端时,采用了上述通信方案,成功实现了EP7312与ATT7022B的通信,获得ATT7022B所采集到的各项现场电能参数。图5为ATT7022B与EP7312串口通信记录图,在图5中通道A是EP7312的SPI口的输出时钟,通道B是写入ATT7022B的数据。

  
图5 串口通信实验结果图

  3、结论

  文中以EP7312与ATT7022B实现通信的方法为例,给出了一种通过软件模拟的方法,解决当外部设备的同步串行接口与ATT7022B的SPI接口时序不匹配的情况下,如何实现通信的方案。实践证明,这个方案硬件连接简单,软件较易实现,可靠性高,对采用电能计量芯片进行开发的相关设计有一定的启发,能够拓宽电能计量芯片在嵌入式系统中的应用范围[4]。

  参考文献

  [1] 李学海. PIC单片机实用教程-提高篇[M].北京:北京航空航天大学出版社,2002.

  [2] ATT7022B用户手册[Z].Rev 1.04.2005.

  [3] Cirrus Logic Inc.EP7312 USER’S MANAUAL[Z].2000

  [4] 方承志,李元,李明栋.用于嵌入式系统多路SPI Master接口设计[J]. 电子测量技术,2004(2): 3-4.

  [5] 赵彧,张楚.多媒体处理器中的SPI接口设计[J]. 电子测量技术, 2007,30(6): 126-129.

  [6] 于相斌,董劲峰.具有SPI接口的数字式同步发送器设计[J]. 电子测量技术,2007, 30(2): 75-77.

  [7] 贾伟,邵左文,张玉猛. 基于SPI总线的高速串行数据采集系统设计[J]. 国外电子测量技术, 2007,26(4): 37-40.

  [8] 韩小涛,谢剑锋,李启炎,等.嵌入式技术及其在电能计量中的应用[J].电测与仪表,2005,42(8): 46-50.

  [9] 肖小锋,蔡金燕,蔡伟周.SPI接口单线应用[J]. 电子测量技术,2006,29(1):22-23.

  [10] 王琦男.用直接采样方式实现电能计量的方法[J]. 电子测量技术,2006,29(6): 51-53.


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅