MI200e电力线通讯

最近做课设,选了电力线通讯这种途径,经过百度google等一番查询,最终敲定了mi200e这块国产芯片。


 

课设要求就是双机通讯,互传传感器信息以及模拟一个时钟


 

然后淘宝买了拆机的成品,我拿回来把mcu拆了然后飞出通讯端口和stm8交互。现在串口两边可以通讯了,下一步就是重新绘制一块完整的pcb,然后制版,并实现响应功能。

先上ref:

http://search.eefocus.com/s?app_id=90&sub=1&q=mi200e

这是电路城搜索mi200e得出的结果,我主要参考第一篇,他在嘉立创还有发帖,点进去你就找得到了。

他使用stm8主控并绘制整块pcb,我则使用以前的stm8核心小板。由于mi200e常规供电为5v,稍稍更改核心板为5v供电做好。

没有拍当时做的图片,上pcb和实物吧!

将右图放大后,可看到两块绿板,这两块就是成品模块,应用于智能抄表的。可看到左边那块上有一根小跳线,跳线右边哪里原来是块u,我用烙铁把他拆了。

不然stm8没法单独和mi200e通讯。至于为什么要跳那根线,我在网上恰好查到他的原理图,(应该是miartech官方的方案,然后抄的,原件丝印不同),mi200e的供电vdd受一个pmos控制,

所以直接将mos的g级接地。其实我买了两种,一共买了四块,连运费20+rmb。另一种的丝印是和原理图队上的。我后面会附上手头的资料。

两块板子背面其实有排针,原来用于接220v的,我直接把他们并联在一起,然后接了一根电源线。一方面因为我电源线紧张,另一方面固定在一块纸板上方便调试。

 

 这是原理图,通讯接口是SPI,其中cs不能直接接地,因为数据是双向互传,并且不是单次传输。具体参考SPI接口flash的cs为什么不能直接接地吧。

我一开始想省io直接接地,结果调试的时候发现,自检过不了。

至于rst引脚,我把它接到stm8的nrst恰好可以使用,虽然官方应用笔记里面说要低电平1s后拉高。留待后面再测试吧。

这样就是4个io就能交互了。


 

然后我按照嘉立创那篇帖子里的方案做了,然后一直调试,发现他的程序我直接用不了,数据通。

然后我发现省略了crc校验初步数据能够发送,但是有毛病。

 没办法,又看手册,看应用笔记。以及对比另一个c51版本的程序

,这个程序从我给的链接里的第二篇可以下载到。但是这个只是驱动,应该就是这个产品用到的,但是没给全程序。我猜嘉立创那篇帖主

也是参考这个改的,因为驱动大体一致。我同时看笔记,以及两篇驱动,最后经过一番修改,然后下进去竟然就可以工作了。

 

程序限制它64字节,对于一般应用足够了。

说一下这块芯片的发送过程,两个引导字节(一个字),一个固定字节,然后配置字节(速率和字长,字为单位)。到这里都是固定200/240bps速率(会因交流电频率不同而不同),之后的速率可自行配置,

程序里设定的是1600/1920bps。然后是以字为单位的数据(这里就是串口透传,由于是字对齐,所以必须是偶数字节,这里要注意!),最后一个字的CRC校验。

附上一张笔记图,看别人的代码真是不容易啊。这里双向能通讯了,后面再看要不要他程序的框架,如果要,还有更多细节要明白。

和硬件打交道,如果不懂的话,可能就是一个延时你就要消耗大把时间。所以需要日积月累!

  1 #include "stm8s.h"
  2 #include "config.h"
  3 #include "MI200E.h"
  4 #include "PLCProcess.h"
  5 
  6 unsigned char g_cStatusReg;
  7 unsigned char g_cRecModCfgReg;
  8 unsigned short PLC_Word_Rec_Overtime;
  9 unsigned char    g_bRecv_Pkg_Flag;
 10 unsigned char g_CRC_H,g_CRC_L;
 11 unsigned char g_cPkg_Length = 0;
 12 unsigned char g_Pkg_Indication_Byte = 0;
 13 unsigned char g_cTrans_Step;
 14 unsigned char g_cRecv_Step;
 15 unsigned char g_cRecByte_H;
 16 unsigned char g_cRecByte_L;
 17 unsigned char g_cSend_Data_Length;
 18 unsigned char g_cSend_Byte_Cnt;        
 19 unsigned char g_cRecv_Byte_Cnt;
 20 unsigned char g_Send_Buf[64];
 21 unsigned char g_Recv_Buf[64];
 22 
 23 
 24 void PLC_Send_Frame(unsigned char cWRData_H, unsigned char cWRData_L)
 25 {        
 26   PLC_Write_Reg(PLCAddrWRSR,(g_cStatusReg&0x7F)); //Clear TI;Write Status Register:0x02
 27   MI200E_SCK_0;
 28   MI200E_CS_0;
 29   Write_SPI(PLCAddrWRTB0);    //Write Sending Byte Register 0:0x04
 30   Write_SPI(cWRData_H);
 31   Write_SPI(cWRData_L);
 32   MI200E_SCK_0;
 33   MI200E_CS_1;        
 34 }
 35 
 36 void PLC_RD_Recv_Word(void)
 37 {    
 38   MI200E_SCK_0;
 39   MI200E_CS_0;
 40   Write_SPI(PLCAddrRDRB0);    //Read Receiving Byte Register 0:0x84
 41   g_cRecByte_H =
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MI200E 电力线载波通讯芯片简述: MI200E 是一款针对低压电力线环境优化设计的高性能通讯芯片。内部集成了诸如多阶开关电容滤波器,高效数字放大器, CRC-16 硬件校验等多种电路。由于MI200E 是一款数模混合芯片,因此在进行软硬件设计时都必须遵循一定的准则。 MI200E电力线载波通信模块简述: 模块采用 MI200E 电力线载波通讯芯片,具有通讯可靠,抗干扰能力强等特点。配合专门设计的外围滤波电路与电力线接口电路,用户可以非常容易地将模块嵌入到系统中。 可搭载弥亚微电子最新研发的网络通讯协议,可实现自动组网,网络自适应,多级中继转发等多种功能。 作为一个简单的透明传输模块使用,通过 TTL 电平串行接口,实现数据透明传输。 模块硬件部分采用 MI200E+MCU 的方式,所有MI200E 外围电路(包括信号耦合电路)均包含在内。用户只需将220V 接入到模块,并为模块提供一组+5V 直流电源即可。 模块可广泛应用于集抄系统,智能楼宇/家居控制系统,能源管理系统等多个领域。 电力线载波通信模块硬件框图: 实物图片展示: 附件内容包括: 电子载波通讯模块硬件设计,包括原理图+PCB源文件,用candence软件打开; 载波通讯收发例程; MI200E芯片应用笔记,包括MI200E典型应用电路设计及软件设计等; MI200E芯片手册; MI200E电子线载波通讯模块说明书;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值