请问怎样通过2607的I2C去访问PAD1000寄存器?
MengAo Zeng:
以PAD1000的0C寄存器为例,读的命令如下:
Write Cmd:CMD_CPU_pad1000_addr_data, addr:36, subAddr:39 00 00 00 0c Write(OK)Write Cmd:CMD_CPU_handshake_flag_wr, addr:36, subAddr:3a 00 00 00 01 Write(OK)Write Cmd:CMD_CPU_pad1000_addr, addr:36, subAddr:38 00 00 00 d0 Write(OK)Write Cmd:CMD_CPU_handshake_flag_wr, addr:36, subAddr:3a 00 00 00 01 Write(OK)Write Cmd:CMD_CPU_pad1000_regi_write, addr:36, subAddr:38 00 00 00 d1 Write(OK)Write Cmd:cmd_write_rdaddr, addr:36, subAddr:15 39 Write(OK)Read Cmd:CMD_CPU_pad1000_value_rd, addr:37, Read(OK) Rcvd: 00 00 00 00
limon gold:
回复 MengAo Zeng:
最后一步Read Cmd:CMD_CPU_pad1000_value_rd, addr:37, Read(OK) Rcvd: 00 00 00 00不需要指定subAddr:吗?
MengAo Zeng:
回复 limon gold:
是的,最后一步是读到的值。
zhichun Hou:
回复 MengAo Zeng:
请问一下Rcvd: 00 00 00 00,就是读到的值吗,如果读到的值出现1的情况,是不是代表初始有问题,是不是要通过reset或者proj_on去重新初始化。
MengAo Zeng:
回复 zhichun Hou:
如果读到的值非0,表示PAD1000检测到了系统中断。例如值为01表示温度过高。在开机过程如果发生了中断,是开不了机的,PAD1000的INTZ脚输出为低电平。
zhichun Hou:
回复 MengAo Zeng:
再问一下,是不是8位,只要1位出现1,都会导致INTZ输出低电平?
如果是出现类似 00 01 00 00的问题,就是DMD_FLT为1,是不是可以通过重新reset以及proj_on来解决,或者其它方法?
MengAo Zeng:
回复 zhichun Hou:
是的,如果出现1位非0值,INTZ都会被拉低。
不一定能解决,比如DMD Fault的话可能要更换DMD,或者检查DMD的供电电压才可以。所以需要看具体是出现哪一个错误。
zhichun Hou:
回复 zhichun Hou:
如果要向PAD1000的寄存器写,怎么进行,例如向Address 0Dh写, mask相关的bit。谢谢!
zhichun Hou:
回复 zhichun Hou:
请问一下Write Cmd:cmd_write_rdaddr, addr:36, subAddr:15 39 Write(OK) 这句是不是有错误。实际操作反馈error。帮忙确认一下是不是subAddr存在问题。
还有就是我们将上面Write Cmd:cmd_write_rdaddr, addr:36, subAddr:39 15 Write(OK) 就可以了。
但对不正常的板子读出的取都是0,可INTZ出现低。请问是什么问题?
limon gold:
回复 zhichun Hou:
我们会偶尔出现这种光机点不亮的情况,其他都正常,请问这种情况下通过读PAD1000的寄存器能发现问题吗? 我们每次读出来的值都是00.另外我们的供电不是5V 而是要低一些,请问会不会有影响?谢谢