公司测试板通讯协议总结

测试板总结

一.测试板类型

  1. 低速单通道SFP测试板
  2. 高速双通道SFP测试板
  3. 低速单通道PON测试板(几乎不用)
  4. 低速双通道PON测试板

二.测试板的区别

  1.上电与断电

    上电与断电都是每个通道同时上电断电

    双通道测试板切换通道的时候

  2.告警与去告警管脚

三.通讯协议

/*************************************************************************************************************
1.总的概念
通过端口3进行终端输出
通过端口0进行输入
 
2.具体的流程
a.输出的流程:
1)先发送数据
0x22 len(data)+1 0x74 regAddr + MaxLen(Data)=60
0x74是起始命令 0x72是数据命令
如果数据长度>60,还需要继续进行发送数据
0x22 len(data) 0x72 +MaxLen(data)=61
2)发送结束后,需要进行回读,返回值为
0x10 0x72 data
3)再发送命令
0x22 len([])+1 0x12 [slaveAddr.H slaveAddr.L (ToWriteNum+1).H (ToWriteNum+1).L] 
len([])+1 一般为5
Keil C51为大端字节 所以后面都是 High+Low
4)发送结束后,回读下,返回值同上
 
b.读取的流程(带地址)
1)发送读命令
0x22 0x05 0x11 RegAddr I2CAddr ToReadNum.H ToReadNum.L
2)读取数据
0x11 len(data) Maxlen(data)=62
c.设置速率rate
rate = N*1knps
1)数据转换
rate=(int)((1000.0f / nkbps - 0.9248f) / 0.252f)
rate = rate<<8|rate;
2)发送设置命令
0x22 0x03 0x13 rate.h rate.L
d.读取测试板状态(主要是ben脚,TxVccEn,RxVccEn,TxVltSet,RxVltSet)
1)发送命令
0x22 0x05 0x18 0x00 0x00 0x00 0x00 0x00
2)读取状态
0x11 0x1e ben txVccEn rxVccEn TxVltSet RxVltSet
e.设置测试板状态(ben,txVccEn,RxVccEn)
1)读取测试板状态
2)变更对应的控制位
3)发送命令
0x22 0x10 0x19 ben txVccEn rxVccEn
f.读取IO口状态 p0 p1 p2
1)发送命令
0x22 0x05 0x75 0xff 0xff 0x00 0xff
2)回读状态
0x10 0x75 p1 p0 0x00 p2
g.设置IO口状态 p0 p1 p2
1)发送命令
0x22 0x05 0x76 p1 p0 0x00 p2
2)回读状态
0x10 0x76 p1 p0 0x00 p2
3.Rx Los引脚位置
PON 单双通道测试板 都是P2.7
SFP 单通道测试板是 P2.7
SFP 双通达测试板是 P1.5---通道1 P2.3--通道2
4.测试板操作
1)断电
a.设置测试板状态关闭
b.0xF0 2 1 0
2)上电
a.设置测试板状态开启
b.0xF0 0x10 1 {1:通道1}/{0:通道2}
3)重启
a.0xF0 2 1 {0}
b.设置测试板状态(关闭 开启)
c.切换通道--这里切换到哪个通道,哪个通道上电,原先通道断电
0xF0 0x10 1 {1:通道1}/{0:通道2}
4)Tx_Disable/Ben
a.0xF0 0x03 1 {1:拉高}/{0:拉低}
注意不同产品的差别
5.测试板上下电的操作区别
1)先选测试板类型
2)双通道测试板切换通道相当于断电一个通道,上电一个通道
**************************************************************************************************************************/

四.驱动改写

  1.dll 导入过程错误

   原因分析:通过C++/CLR将C/C++dll进行封装一层供.net 调用,但是C++/CLR 也存在版本问题,比如用

        VS2015,VS2010,VS2008生成的都不一样。这次遇到的问题是使用VS2015编译生成的托管

        dll。

   解决过程:

        1)在生产调试机台编译托管dll,也出错。VS2010版本等不同导致的

        2)VS2008编译生成的dll提示.net framework版本不对

        3)VS2010清理下托管C++dll,重新编译生成OK

  2.IIC读写失败

   原因分析:通过C++/CLR封装了Hid设备的基本读写功能,但是具体操作是通过.net完成的,目前是怀疑

        如果全部C++/CLR改写是否能解决问题(全部改写后,情况是一样的)

   解决过程:

       1)切表操作现在直接进行切表,原先操作是先读,然后进行比对,最后如果表不一致就进行切表

       2)读写操作无论成功还是失败,都进行10ms的延时,这个10ms《CPU单个时间片周期,最中延时

         结果是CPU一个时间片周期的时间。

       3)自制测试板通过拉高pin管脚进行TxDisable操作的,这个操作需要延时,时间由原先的200ms变更

         到300~400ms就OK了

  3.告警问题

    原因分析:

        1)读取告警状态的方式不对,原先是通过测试板自己上报的状态接口进行判断,但是在调试的过程中

           想通过使用直接读取P口管脚的状态来进行操作,才出现问题的。

        2)历史遗留问题,告警状态与去告警状态的0,1表示出现模糊两可,不清晰。

          自制测试板低电平-->去告警状态-->P2.7=0-->输出状态1

          恒迅测试板电压<0.8-->去告警状态-->输出状态1

    解决过程:

        1)通过使用测试板上报的状态接口来判断告警状态

        2)自制测试板低电平-->去告警状态-->P2.7=0-->输出状态1

          恒迅测试板电压<0.8-->去告警状态-->输出状态1

posted @ 2019-10-16 11:07  ZOL  阅读(207)  评论(0)    收藏  举报
// 侧边栏目录