| | |
| | | |
| | | |
| | | |
| | | ## 3.9 AIN 电流电压测试 |
| | | |
| | | ### 3.9.1 硬件原理图说明 |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | | ### 3.9.2 AIN 电流测试 |
| | | |
| | | 首先我们需要将ADC采样程序烧录到开发板上的单片机中 |
| | | |
| | | 连接J6000 TTL下载调试串口 Debug_RXD_CN连接串口的TXD Debug_TXD_CN连接串口的RXD GND相连 |
| | | |
| | | |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | **打开FlyMcu.exe烧录工具,选择准备好的.hex 的单片机程序** |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | **点击开始编程后就开始烧录程序,烧录成功如下图,并且可以看到单片机的LED灯在闪烁绿光** |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 单片机程序烧录好后,我们需要使能RK3568的UART6,根据原理图可以看到,RK3568和MCU通信串口为UART6,所以需要在设备树中设置UART6设备节点 |
| | | |
| | | 打开`~/rk3568/sdkv1.4.0_linux5.10/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts` |
| | | |
| | | 加入URAT6节点 |
| | | |
| | | ``` |
| | | &uart6{ |
| | | dma-names = "tx", "rx"; |
| | | pinctrl-names = "default"; |
| | | pinctrl-0 = <&uart6m1_xfer>; |
| | | status = "okay"; |
| | | }; |
| | | ``` |
| | | |
| | | |
| | | |
| | | 重新编译设备树后烧录到开发板中启动开发板,在/dev下看看是否有ttyS6 |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 按照上图连接电路后,用XCOM软件打开单片机的调试串口,配置如下图所示 |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 在RK3568上运行comport程序,此程序可以配置串口的波特率,停止位,数据位,奇偶校验以及指定使用哪个串口设备 |
| | | |
| | | 源代码在[framwork.git - Gitblit (iot-yun.club)](http://main.iot-yun.club:8088/tree/framwork.git/master/booster) |
| | | |
| | | 但是这个代码需要做一定的修改,因为这个程序只能让串口输出字符串数据,但是我们在测试中需要发送十六进制数据给单片机。 |
| | | |
| | | |
| | | |
| | | 此时就需要了解ADC串口协议,RK3568发送读指令给MCU,MCU会响应RK3568返回ADC采样数据 |
| | | |
| | |  |
| | | |
| | | 示例如下: |
| | | |
| | | 示例: |
| | | |
| | | 1、读第0通道电压: |
| | | |
| | | AA 55 02 00 30 8C //CRC:0x8C30 |
| | | |
| | | AA 55 02 00 EE 0D 99 C0 //0D EE -> 3566mv, CRC:0x0C99 |
| | | |
| | | 2、读第1路通道电压: |
| | | |
| | | AA 55 02 01 F1 4C |
| | | |
| | | AA 55 02 01 06 00 47 C5 //00 06 -> 6mv |
| | | |
| | | 3、读第2路通道电压: |
| | | |
| | | AA 55 02 02 B1 4D |
| | | |
| | | AA 55 02 02 06 00 B7 C5 //6mv |
| | | |
| | | 4、读第3路通道电压: |
| | | |
| | | AA 55 02 03 70 8D |
| | | |
| | | AA 55 02 03 06 00 E6 05 //6mv |
| | | |
| | | 5、读第0路电流 |
| | | |
| | | AA 55 01 00 30 7C |
| | | |
| | | AA 55 01 00 95 01 BB 71 //01 95 -> 405 单位0.01mA,即4.05mA, CRC:0x71BB |
| | | |
| | | 6、读第1路电流 |
| | | |
| | | AA 55 01 01 F1 BC |
| | | |
| | | AA 55 01 01 95 01 EA B1 |
| | | |
| | | 7、读第2路电流 |
| | | |
| | | AA 55 01 02 B1 BD |
| | | |
| | | AA 55 01 02 95 01 1A B1 |
| | | |
| | | 8、读第3路电流 |
| | | |
| | | AA 55 01 03 70 7D |
| | | |
| | | AA 55 01 03 95 01 4B 71 |
| | | |
| | | |
| | | |
| | | 以下AIN电流测试以测试第0路电流为例 |
| | | |
| | | 在RK3568上输入`./comport -d /dev/ttyS6 -b 115200 -s 8N1N -x` |
| | | |
| | | 在XCOM上可以看到MCU的调试信息,旋转电位器旋钮至最左或最右分别测量最小电流和最大电流,量程约为1.22mA~22.79mA(测试其他三路电流时最小电流约为0.006mA) |
| | | |
| | | |
| | | |
| | |  |
| | | |
| | | ### 3.9.3 AIN 电压测试 |
| | | |
| | | 准备工作和AIN电流测试一样,不再赘述 |
| | | |
| | |  |
| | | |
| | | 运行comport程序让rk3568输出读取电压的指令给mcu |
| | | |
| | | 同样在XCOM上也能看到MCU的采样调试信息,旋转电位器旋钮至最左或最右分别测量最小电流和最大电流,量程约为0.017V~5.882V |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | ## 3.10 MIPI DSI 测试 |
| | | |
| | | ### 3.10.1 独立TP的屏幕 |
| | | |
| | | 在rk3568-evb1-ddr4-v10.dtsi中确认一下节点是否打开 |
| | | |
| | | ``` |
| | | &dsi0 { |
| | | status = "okay"; |
| | | }; |
| | | |
| | | &dsi0_in_vp1 { |
| | | status = "okay"; |
| | | }; |
| | | |
| | | &dsi1_panel { |
| | | power-supply = <&vcc3v3_lcd1_n>; |
| | | }; |
| | | |
| | | &route_dsi0 { |
| | | status = "okay"; |
| | | connect = <&vp1_out_dsi0>; |
| | | }; |
| | | ``` |
| | | |
| | | 在rk3568-evb.dtsi中设置屏参,这里的屏参需要根据实际的屏幕手册里给的数据计算得出,不同屏幕参数大不相同 |
| | | |
| | | ``` |
| | | disp_timings0: display-timings { |
| | | native-mode = <&dsi0_timing0>; |
| | | dsi0_timing0: timing0 { |
| | | clock-frequency = <149600000>; |
| | | hactive = <1920>; |
| | | vactive = <1080>; |
| | | hfront-porch = <48>; |
| | | hsync-len = <32>; |
| | | hback-porch = <147>; |
| | | vfront-porch = <3>; |
| | | vsync-len = <6>; |
| | | vback-porch = <51>; |
| | | hsync-active = <0>; |
| | | vsync-active = <0>; |
| | | de-active = <0>; |
| | | pixelclk-active = <1>; |
| | | }; |
| | | }; |
| | | |
| | | ``` |
| | | |
| | | |
| | | |
| | | **接线如下图所示** |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | ### 3.10.2 自带TP的屏幕 |
| | | |
| | | 在rk3568-evb1-ddr4-v10.dtsi中确认一下节点是否打开 |
| | | |
| | | ``` |
| | | &dsi0 { |
| | | status = "okay"; |
| | | }; |
| | | |
| | | &dsi0_in_vp1 { |
| | | status = "okay"; |
| | | }; |
| | | |
| | | &dsi1_panel { |
| | | power-supply = <&vcc3v3_lcd1_n>; |
| | | }; |
| | | |
| | | &route_dsi0 { |
| | | status = "okay"; |
| | | connect = <&vp1_out_dsi0>; |
| | | }; |
| | | ``` |
| | | |
| | | 在rk3568-evb.dtsi中设置屏参,这里的屏参需要根据实际的屏幕手册里给的数据计算得出,不同屏幕参数大不相同 |
| | | |
| | | ``` |
| | | disp_timings0: display-timings { |
| | | native-mode = <&dsi0_timing0>; |
| | | dsi0_timing0: timing0 { |
| | | clock-frequency = <149600000>; |
| | | hactive = <1920>; |
| | | vactive = <1080>; |
| | | hfront-porch = <48>; |
| | | hsync-len = <32>; |
| | | hback-porch = <147>; |
| | | vfront-porch = <3>; |
| | | vsync-len = <6>; |
| | | vback-porch = <51>; |
| | | hsync-active = <0>; |
| | | vsync-active = <0>; |
| | | de-active = <0>; |
| | | pixelclk-active = <1>; |
| | | }; |
| | | }; |
| | | |
| | | ``` |
| | | |
| | | |
| | | |
| | | **接线如下图所示** |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | | ## 3.11 LVDS 测试 |
| | | |
| | | 首先在rk3568-evb1-ddr4-v10.dts 中添加lvds相关节点 |
| | | |
| | | ``` |
| | | + #include <dt-bindings/display/media-bus-format.h> |
| | | #include "rk3568-evb1-ddr4-v10.dtsi" |
| | | #include "rk3568-android.dtsi" |
| | | + #include <dt-bindings/display/rockchip_vop.h> |
| | | |
| | | / { |
| | | panel-lvds { |
| | | compatible = "simple-panel"; |
| | | power-supply = <&vcc3v3_lcd0_n>; |
| | | enable-delay-ms = <20>; |
| | | prepare-delay-ms = <20>; |
| | | unprepare-delay-ms = <20>; |
| | | disable-delay-ms = <20>; |
| | | bus-format = <MEDIA_BUS_FMT_RGB888_1X7X4_SPWG>; |
| | | width-mm = <217>; |
| | | height-mm = <136>; |
| | | |
| | | display-timings { |
| | | native-mode = <&timing0>; |
| | | timing0: timing0 { |
| | | clock-frequency = <73400000>; |
| | | hactive = <1280>; |
| | | vactive = <800>; |
| | | hback-porch = <40>; |
| | | hfront-porch = <80>; |
| | | vback-porch = <9>; |
| | | vfront-porch = <9>; |
| | | hsync-len = <40>; |
| | | vsync-len = <5>; |
| | | hsync-active = <0>; |
| | | vsync-active = <0>; |
| | | de-active = <0>; |
| | | pixelclk-active = <0>; |
| | | }; |
| | | }; |
| | | |
| | | ports { |
| | | #address-cells = <1>; |
| | | #size-cells = <0>; |
| | | port@0 { |
| | | reg = <0>; |
| | | panel_in_lvds: endpoint { |
| | | remote-endpoint = <&lvds_out_panel>; |
| | | }; |
| | | }; |
| | | }; |
| | | }; |
| | | |
| | | }; |
| | | |
| | | &vp0 { |
| | | cursor-win-id = <ROCKCHIP_VOP2_CLUSTER0>; |
| | | }; |
| | | |
| | | &vp1 { |
| | | cursor-win-id = <ROCKCHIP_VOP2_CLUSTER1>; |
| | | }; |
| | | |
| | | &lvds { |
| | | status = "okay"; |
| | | ports { |
| | | port@1 { |
| | | reg = <1>; |
| | | lvds_out_panel: endpoint { |
| | | remote-endpoint = <&panel_in_lvds>; |
| | | }; |
| | | }; |
| | | }; |
| | | }; |
| | | |
| | | &lvds_in_vp1 { |
| | | status = "okay"; |
| | | }; |
| | | |
| | | &route_lvds{ |
| | | status = "okay"; |
| | | connect = <&vp1_out_lvds>; |
| | | }; |
| | | |
| | | ``` |
| | | |
| | | |
| | | |
| | | **因为这个lvds屏幕不支持更改屏幕亮度,所以他不是通过pwm来控制背光的,而是通过gpio控制,只能保证亮屏和灭屏,所以只需要控制gpio电平即可实现** |
| | | |
| | |  |
| | | |
| | | 第一种方法 在rk3568-evb1-ddr4-v10.dtsi更改vcc3v3_lcd0_n |
| | | |
| | | ``` |
| | | &vcc3v3_lcd0_n { |
| | | gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>; |
| | | // enable-active-high; |
| | | }; |
| | | ``` |
| | | |
| | | 第二种方法 更改panel-lvds节点 |
| | | |
| | | ``` |
| | | panel-lvds { |
| | | compatible = "simple-panel"; |
| | | // power-supply = <&vcc3v3_lcd0_n>; |
| | | enable-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>; |
| | | enable-delay-ms = <20>; |
| | | prepare-delay-ms = <20>; |
| | | unprepare-delay-ms = <20>; |
| | | disable-delay-ms = <20>; |
| | | bus-format = <MEDIA_BUS_FMT_RGB888_1X7X4_SPWG>; |
| | | width-mm = <217>; |
| | | height-mm = <136>; |
| | | ...... |
| | | }; |
| | | ``` |
| | | |
| | | |
| | | |
| | | 最后由于mipi dsi也用到了vp1这个端口所以禁掉mipi dsi相关节点,mipi_dsi相关节点参考3.10.1,提到的节点全部禁掉就可以了 |
| | | |
| | | |
| | | |
| | | **接线如下图所示** |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | ## 3.12 wifi模块测试 |
| | | |
| | | **选用联发科的mt7601u的USB wifi模块** |
| | | |
| | | 1. 首先获取mt7601u的wifi固件,mt7601u.bin |
| | | |
| | | 2. 修改内核使能wifi设备节点 |
| | | |
| | | ``` |
| | | &wireless_wlan { |
| | | status = "okay"; |
| | | }; |
| | | ``` |
| | | |
| | | 3. 在内核中使能mt7601的驱动,mt7601的驱动位置在drivers/net/wireless/mediatek/mt7601u |
| | | |
| | | 内核make menuconfig配置 |
| | | |
| | | ``` |
| | | Device Drivers --> |
| | | [*] Network device support ---> |
| | | [*] Wireless LAN ---> |
| | | [*] MediaTek devices ---> |
| | | <*> MediaTek MT7601U (USB) support |
| | | ``` |
| | | |
| | | 4. **重新编译整个sdk** |
| | | |
| | | 5. 启动开发板后将wifi模块的bin文件拷贝到/vendor/etc/firewarm下 |
| | | |
| | | 这个步骤只是第一次测试用的方法,更加完整的方法是将固件放进android镜像中让其自带这个固件 |
| | | |
| | | 方法如下: |
| | | |
| | | 在vendor/rockchip/common/wifi/firmware中添加mt7601.bin固件 |
| | | |
| | | 可以看到在上一层的wifi.mk中已经明确指出了会将firmware目录下的所有bin文件都拷贝到编译产物中的vendor/etc/firmware下,然后随着andorid的编译系统一起编译生成.img文件,这样的镜像烧录后就会自带我们得mt7601固件。 |
| | | |
| | |  |
| | | |
| | | 6. 插入wifi模块可以看到如下信息 |
| | | |
| | |  |
| | | |
| | | 通过ifconfig -a 能查看到此时多了一个网卡设备wlan0,这个时候表示wifi模块的驱动加载完成,加载完成后系统会自动的去/vendor/etc/firewarm下找相应的固件。 |
| | | |
| | | 7. 此时我们就可以在android界面操作wifi按钮打开wifi搜索功能,正常连接wifi了 |
| | | |
| | | 点击打开wifi之后会出现如下信息,大致的意思就是系统在后台会开启wpa_supplicant的服务用来连接wifi的,并且创建了一个wpa_wlan0的socket设备用于通信,当连接上wifi后,会自动分配一个ip地址。 |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | | # 4. ADB调试工具 |
| | | |
| | | 1. 下载解压platform-tools-latest-windows.zip |