“充分”利用FPGA资源,实现DALSA线扫描相机的数据读取
[复制链接]
前几天买了2个二手S2-12-02K40线扫描相机,到手后各有各的问题
经过我“专业”级的维修,翻车变开车,今天终于可以读到图像了
下边是正常光线下手指按住传感器中间的数据
下边是开电棒照射,手指按中间的数据
感觉除了发热比较严重,基本功能还能实现
这个相机使用的CameraLink Base接口,其中的ChannelLink是通过4对差分对和1对时钟实现数据采集
相机上电初始化成功后默认情况下会一直发送数据,用示波器可以看到时钟的数据
对应的的协议可以参考TI的ds90cr285芯片手册,网上也有很多资料,不过这部分的FPGA编程对我来说有点难,这几天正在研究
本次数据采集使用的是相机的串口通信,对应MDR26接口的7pin 20pin,8pin 21pin是2对LVDS差分
SerTFG是相机的串口输出,SerTC是相机的串口输入
为了实现LVDS串口功能,我使用了这个神奇的矿板EBAZ4205
首先把BANK35的供电改成2.5V,因为只有这样才能完整的实现LVDS功能
把原来的磁珠去掉加一颗SOT23-3的2.5V LDO还是非常方便的
正面接口的串联电阻去掉,用0欧电阻直连
然后写段verilog代码,实现1路LVDS转TTL一路TTL转LVDS
把代码烧到FPGA里,把对应的连线接好,再弄一块STM32开发板,使用STM32板子上的USB转串口工具
STM32开发板的TXD经FPGA转成LVDS连接相机的SerTC,相机的SerTFG经FPGA转成TTL接STM32开发板的RXD
接好连线后电脑就可以和相机通信了
相机上电后会通过串口输出相机正在初始化,初始化成功后会输出OK
这时通过相机的gl指令输出一帧数据
数据格式是这样的,通过EXCL转换后生成折线图就能看到帖子前边的凹线了
|