0 votes
in 硬件问题 by (180 points)
树莓派3使用官方DSI接口的7寸触控屏的话,视频预览可以正常工作,但i2c的控制就都不行了

用HDMI显示器没有任何问题

难道是官方7寸屏可占用了i2c总线?用i2cdetec也看不出来

2 Answers

0 votes
by (2.3k points)

您好,

好问题。

树莓派的I2C0原本是不让arm一侧控制的,避免与GPU一侧冲突。所以我们原本的脚本使用了I2C1作为控制总线。

但是由于引脚连在一起,的确会引起无法访问DSI的问题。 因此我们决定还是切换回I2C0吧。

代码更新如下,请验证,盼回复。

https://github.com/veyeimaging/raspberrypi/tree/master/i2c_cmd

http://wiki.veye.cc/index.php/VEYE-MIPI-290/327_i2c/zh

by (180 points)
非常遗憾,试了新版本问题还是没有解决
可能我没表述清楚,树莓派3B、DSI屏幕和VEYE连接好后,屏幕可以正常工作(因为用命令行模式,触控一直没有测能不能用)VEYE的视频预览也可以正常工作,但VEYE的i2c指令就不正常了。
试新脚本,enable_i2c_vc.sh打开了i2c-0,运行camera_i2c_config,看不到任何i2c设备,运行i2cdetect -y 0也发现不了任何i2c设备

但如果断开DSI屏,用HDMI显示器的话,一切都是正常的,在i2c-0上能发现0x3b设备
by (180 points)
还有个现象,树莓派3B、DSI屏幕和VEYE连接好重启后,第一次运行i2cdetect -y 0,可以看到3个设备38、3b、45。再运行veye_mipi_i2c.sh -r -f hdver,返回hardware version is 0x 6,但返回速度有1s左右,多运行几次,就变成hardware version is 0x14了,和且返回时间非常慢,跟卡死一样。这时再运行i2cdetect -y 0就什么设备都发现不了了
by (2.3k points)
0x3b是摄像头地址。i2c0被GPU用于CSI DSI HAT扩展的EEPROM地址访问,默认是不给CPU这边使用的。您这个应该是CPU和GPU都去访问导致的问题。   https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=138897#p922764


我原来的脚本,是把两个引脚复用为了i2c1,然后通过cpu去访问。能否详细发一下原来脚本的问题现象?
by (180 points)
我换回了原来脚本,发现有如下问题:
拔掉DSI屏幕,用HDMI显示器,树莓派通电后运行 i2cdetect -y 0,只发现有3b,运行i2cdetect -y 1,没有任何设备,说明VEYE在i2c-0上。
运行camera_i2c_config后,再运行 i2cdetect -y 0,没有任何设备,运行i2cdetect -y 1,发现3b,说明VEYE已经被设置到i2c-1上了。
但是只要重启树莓派,VEYE就又会跑到i2c-0上。
这个正常不?
by (2.3k points)
这个是正常的。camera_i2c_config进行了管脚配置,老脚本将mipi csi接口上的两个io配置到了i2c1上面。所以,需要执行之后,才可以变到i2c1上面。

需要您确认的是,老的脚本用起来会有什么问题?能否详细说明?
by (180 points)
使用老脚本问题是这样的
树莓派3B接上DSI屏幕和VEYE开机,运行i2cdetect -y 0,可以看到3个设备38、3b、45;运行i2cdetect -y 1,没有设备。
再运行老脚本的camera_i2c_config,就开始出问题了,首先是camera_i2c_config执行的时间会变长,而且返回值里有时有38、3b、45,有时什么都没有;其次,再运行i2cdetect -y 0或者i2cdetect -y 1,执行时间都很长,而且返回值里有时什么设备都没有,有时会有38、3b、45
执行VEYE的各种i2c控制指令脚本也都不行,很慢,返回值也不对
by (180 points)
见鬼了又发现:树莓派3B接上DSI屏幕和VEYE开机,运行i2cdetect -y 0,可以看到3个设备38、3b、45,等一会儿什么也不干,再运行i2cdetect -y 0,出了几个11,04之类的设备,再重复运行,速度很慢,什么设备也没有了
by (2.3k points)
你好,我们已安排邮件沟通,采购或者借用一个屏幕,来复现解决此问题。
0 votes
by (2.3k points)
经过试验验证,发现由于树莓派的CSI和DSI的i2c接到同一对pin上面,无论软件配置为I2C0还是I2C1,都无法避免冲突的问题。

最好的解决方法,是做一个新的接口板,使用40pin接口上的另一对I2C来控制camera。
欢迎来到 Veye Q&;A ,有什么不懂的可以尽管在这里提问,你将会收到社区其他成员的回答。
...