• PCB 板 制作 HDMI 转 LCD 驱动板 树莓派 I2C 写 EDID


    最开始的时候,一直是用洞洞板在diy ,简单的电路还能应付一下,复杂的电路不行。现在是贴片的时代,关于画板软件,也学了好几个,每个软件都有各自的优点。

    Proteus 8

    以前也发过博文,介绍过,防真也可以,仅使用过 原理图绘制、仿真。

    Pads 9.5 

    公司的同事喜欢用这个,一些方案商提供的原理图也是使用这个软件画的,从来没有收到过律师函。

    Altium Designer 简称 AD

    经常会收到律师函,慎用,软件 低的版本 如 AD 9 ,功能较少,没有批量打孔的功能,包地打孔,极作标。

    KiCad

    开源的 EDA 软件,可以支持多种操作系统,ubuntu , mac os , windows ,软件一直在快速迭代开发中,功能日渐完善中。

    PCB 设计的关键点:

    1,芯片选型

    功能满足要求,资料丰富,价格便宜,供货稳定,外围电路简单

    2,尺寸大小

    根据大小选择不同的板层和封装,4层比2层容易,电源可以走内层,更小的封装可以将pcb 设计的更小

    3,原理图绘制

    根据产品需求和芯片数据手册,绘制原理图,没有找到封装的,需要提前画封装或才下载别人画好的

    4,pcb 绘制

    原理图绘制正常,检查无错误了以后,开始进行 pcb 绘制

    a, 确定板层和元件步局,需要考虑 EMI 电磁干扰 ,温度散热,电源网络分隔

    b, 配置 规则,线与线之间的距离,最小线粗,差分对建立,过孔规则,焊盘连接规则,根据 板厂生成 能力来进行配置,一般 线距是 6mil ,过孔内径最小是 8mil ,一般的板厂都可以生产。

    c, 走线,先放置较大的芯片,然后按功能开始走线,线比较多的提前走,像是 IO 总线之类的 8pin 16pin ,可以利用批量走线功能,这样走出来比较美观

    d, 优化走线,线全部走完以后,需要进行优化,以前走的不好的可以重新走,或是元件放置的位置,重新微调

    e, 包地处理,有的信号线比较重要,像是 晶振 或是 差分走线 需要在外面画一根地线,在打上孔

    f, 覆铜,每层进行覆铜处理,选中去除死铜

    g, 添加泪滴

    h, drc 检查,检查 开路,短路,未连接的网络,间距,字符等

    i, 输出 gerber ,需要生成gerber 和 钻孔 ipc 也可以提供

    发给板厂,生产。

    免费下载 原理图和 pcb 封装的网站 https://www.snapeda.com/

    项目需求:原来是 BeagleBone 开发板 + 投影开发板

    是公司以前预研的项目用到的,做一个投影时钟。

    投影开发板 TI 官网介绍

    https://www.ti.com.cn/tool/cn/DLPDLCR2000EVM

    BeagleBone 的性能太弱,看个网页都卡,想改装为 HDMI 转接出来,底板还需要一组 I2C 控制,所以添加了一个常用的 stm32f103 开发比较简单,还支持 freeRTOS

    BeagleBone https://beagleboard.org/

    HDMI 转换芯片选型 TI 的 TFP401APZP,https://www.ti.com/store/ti/zh/p/product/?p=TFP401APZP

    其它HDMI 转换芯片也不少,国产的找 datasheet 也找不到。

    工厂下单中

     回板了,先焊上 stm32f103 swd 下载一个测试点灯固件

    boot0 boot1 跳线选择 boot 1 时,使用 串口可以下载。

    画错的地方:

    1,24c02 封装画错了

    sop 画成了  ssop 只能手工修复下,点胶固定

    2,电源过孔打的过少了

    按一个过孔 500ma 

    3,四周的螺丝孔忘了打

    设计:

    1,双 3.3v 电源设计

    2,散热加大焊盘

    3,EMI 设计,晶振包地处理

    4,差分走线,包地处理

    HDMI 接口说明:

    4组差分信号 R0 R1 R2 CLK

    I2C SCL SDA 用于  EDID 读取

    HPD 当连接上以后,由低电平向高电平变化时,表示 设备就续,开始从 I2C 读取 EDID 信息

    5V 由主机供电,电流不大,有的 HDMI 转 VGA 的可以从这里取电

    HDMI 也可以用来传输触摸信号,这里没有用到

    DEID 读取,主机通过 I2C 读取,显示设备上的 24c02 中存储的 EDIE 信息。

    android 查看 连接的 HDMI EDID 信息(也适用于 ubuntu )

    rk3399_all:# ls /sys/class/drm
    card0 card0-DP-1 card0-DSI-1 card0-HDMI-A-1 controlD64 renderD128 version
    
    查看显示设备
    
    rk3399_all:# ls /sys/class/drm/card0-HDMI-A-1
    audioformat        device edid    mode  power  subsystem
    content_protection dpms   enabled modes status uevent
    
    查看里面的内容
    
    rk3399_all:# cat /sys/class/drm/card0-HDMI-A-1/edid > /sdcard/hdmi_asus_edid
    
    导出 EDID 信息
    
    adb pull /sdcard/hdmi_asus_edid

    ASUS 27 2K 显示器

    HP 20 1080P 显示器

    三星19寸显示器 HDMI 转 VGA 的,是透传的

    EDID 介绍 

    1.3 128Byte 2.0 256Byte

    包含了有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串

    编辑的软件

    Phoenix EDID Designer 显示器EDID编辑器 不好用,打开导出的 edid .bin 解析失败

    Deltacast E-EDID Editor 显示不全

    HDMI EDID Generator v1.4 比较好用

    根据树莓派的配置进行配置

    hdmi_timings=854 0 14 4 12 480 0 2 3 9 0 0 0 60 0 32000000 3

    接口说明:

    D0-D23 RGB 24 pin 888 数据线

    VSYNC HSYNC 水平 垂直 同步信号

    PCLK 时钟             ---> ODCK 

    DATAEN 数据使能 ---> DE

    EXT_SCL EXT_SDA i2c 控制信号

    VINTF
    PROJ_ON_EXT
    HOST_PRESENTZ

    GPIO5
    GPIO_INIT_DONE

    在 树莓派上 调试 i2c 控制

    启用 i2c 功能

    sudo raspi-config
    
    3 Interface Options    Configure connections to peripherals
    P5 I2C         Enable/disable automatic loading of I2C kernel module 
    Would you like the ARM I2C interface to be enabled?
    <是> 
    The ARM I2C interface is enabled 
    <确定> 
    
    sudo reboot
    
    i2cdetect -l
    i2c-1   i2c             bcm2835 (i2c@7e804000)                  I2C adapter
    
    连接 HDML 转接板 I2C 接口 上面的 AT24C02
    
    pi@raspberrypi:~ $ i2cdetect -r -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    
    读取一堆
    pi@raspberrypi:~ $ i2cdump -y 1 0x50
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    
    
    读取
    pi@raspberrypi:~ $ i2cget -y 1 0x50 0 b
    0x00
    
    写入数据
    pi@raspberrypi:~ $ i2cset -y 1 0x50 0 0x12 b
    pi@raspberrypi:~ $ i2cget -y 1 0x50 0
    0x120x50 设备上 0 地址开始写入 0x01 0x02
    pi@raspberrypi:~ $ i2ctransfer 1 w3@0x50 0x0 0x01 0x02
    pi@raspberrypi:~ $ i2cdump -y 1 0x50
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ??..............
    
    写入 EDID 24C16 每次可以最大写入 16 Byte
    设备地址 0x50
    数据地址 0x0
    长度 256
    i2ctransfer -y 1 w17@0x50 0x00 0x00 0xff 0xff 0xff 0xff 0xff 0xff 0x00 0x4c 0x2d 0x11 0x09 0x44 0x46 0x55 0x5a
    i2ctransfer -y 1 w17@0x50 0x10 0x14 0x17 0x01 0x03 0xa0 0x29 0x1a 0x78 0x2a 0x80 0xc5 0xa6 0x57 0x49 0x9b 0x23
    i2ctransfer -y 1 w17@0x50 0x20 0x12 0x50 0x54 0xbf 0xee 0x80 0x71 0x4f 0x81 0xc0 0x81 0x00 0x95 0x0f 0x01 0x01
    i2ctransfer -y 1 w17@0x50 0x30 0x01 0x01 0x01 0x01 0x01 0x01 0x9a 0x29 0xa0 0xd0 0x51 0x84 0x22 0x30 0x50 0x98
    i2ctransfer -y 1 w17@0x50 0x40 0x36 0x00 0x98 0xff 0x10 0x00 0x00 0x1c 0x00 0x00 0x00 0xfd 0x00 0x38 0x4b 0x1e
    i2ctransfer -y 1 w17@0x50 0x50 0x51 0x0e 0x00 0x0a 0x20 0x20 0x20 0x20 0x20 0x20 0x00 0x00 0x5f 0xfc 0x00 0x53
    i2ctransfer -y 1 w17@0x50 0x60 0x31 0x39 0x42 0x33 0x30 0x30 0x0a 0x20 0x20 0x20 0x20 0x20 0x00 0x00 0x00 0xff
    i2ctransfer -y 1 w17@0x50 0x70 0x00 0x48 0x34 0x4c 0x44 0x30 0x30 0x30 0x30 0x30 0x31 0x0a 0x20 0x20 0x01 0x03
    i2ctransfer -y 1 w17@0x50 0x80 0x02 0x03 0x1b 0x62 0x23 0x09 0x7f 0x07 0x83 0x01 0x00 0x00 0x67 0x03 0x0c 0x00
    i2ctransfer -y 1 w17@0x50 0x90 0x20 0x00 0x80 0x2d 0x43 0x01 0x10 0x84 0xe2 0x00 0x0f 0x00 0x00 0x36 0x00 0x40
    i2ctransfer -y 1 w17@0x50 0xa0 0xe8 0x63 0x00 0x00 0x1a 0x1a 0x1d 0x00 0x80 0x51 0xd0 0x1c 0x20 0x40 0x80 0x35
    i2ctransfer -y 1 w17@0x50 0xb0 0x00 0x40 0x84 0x63 0x00 0x00 0x1c 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    i2ctransfer -y 1 w17@0x50 0xc0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    i2ctransfer -y 1 w17@0x50 0xd0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    i2ctransfer -y 1 w17@0x50 0xe0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    i2ctransfer -y 1 w17@0x50 0xf0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x15
    
    pi@raspberrypi:~/Desktop $ i2cdump -y 1 0x50
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 00 ff ff ff ff ff ff 00 4c 2d 11 09 44 46 55 5a    ........L-??DFUZ
    10: 14 17 01 03 a0 29 1a 78 2a 80 c5 a6 57 49 9b 23    ?????)?x*???WI?#
    20: 12 50 54 bf ee 80 71 4f 81 c0 81 00 95 0f 01 01    ?PT???qO???.????
    30: 01 01 01 01 01 01 9a 29 a0 d0 51 84 22 30 50 98    ???????)??Q?"0P?
    40: 36 00 98 ff 10 00 00 1c 00 00 00 fd 00 38 4b 1e    6.?.?..?...?.8K?
    50: 51 0e 00 0a 20 20 20 20 20 20 00 00 5f fc 00 53    Q?.?      .._?.S
    60: 31 39 42 33 30 30 0a 20 20 20 20 20 00 00 00 ff    19B300?     ....
    70: 00 48 34 4c 44 30 30 30 30 30 31 0a 20 20 01 03    .H4LD000001?  ??
    80: 02 03 1b 62 23 09 7f 07 83 01 00 00 67 03 0c 00    ???b#?????..g??.
    90: 20 00 80 2d 43 01 10 84 e2 00 0f 00 00 36 00 40     .?-C????.?..6.@
    a0: e8 63 00 00 1a 1a 1d 00 80 51 d0 1c 20 40 80 35    ?c..???.?Q?? @?5
    b0: 00 40 84 63 00 00 1c 00 00 00 00 00 00 00 00 00    .@?c..?.........
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 15    ...............?
    
    EDID 写入成功

     

    像素格式

    DLP投影板

    401  功能配置,另外需要 I2C 配置一下:

    i2cset -y 1 0x1b 0x0b 0x00 0x00 0x00 0x00 i
    i2cset -y 1 0x1b 0x0c 0x00 0x00 0x00 0x1b i

     使用逻辑分析仪连接 ODCK DE 查看输出是否正常

     

    接到树莓派 HDMI 上开始调试,显示出来4个树莓,显示有点问题,调试中。

     

    调好了,《爱捉弄的高木同学 第3季》 面白い

  • 相关阅读:
    关于PCA算法的一点学习总结
    c++大作业--学籍管理系统--
    AVC1与H264的差别
    Java多线程之wait(),notify(),notifyAll()
    jquery——zTree, 完美好用的树插件
    一位Erlang程序猿的自白
    SQL Server 中关于EXCEPT和INTERSECT的使用方法
    JAVA程序猿怎么才干高速查找到学习资料?
    CFileDialog的使用方法简单介绍
    XCode 打包问题巧遇
  • 原文地址:https://www.cnblogs.com/ningci/p/15835910.html
Copyright © 2020-2023  润新知