DIO
anheng
2024-05-13 f27885ce6bb267fd498000ec5e979e28e84d54f9
RK3568_Linux_SDK开发文档/RK3568_Linux_SDK开发文档.md
@@ -1274,3 +1274,89 @@
同样,我们可以ping百度测试上网功能
![](./images/4g-15.png)
## 3.11 RK3568自带的NPU
### 3.11.1 应用程序测试
测试的程序是一个yolov5的目标识别demo,编译环境是Linux arm64系统
先去github下载RKNPU2并解压生成rknpu2-master文件夹
[GitHub - rockchip-linux/rknpu2](https://github.com/rockchip-linux/rknpu2?tab=readme-ov-file)
1. 进入/home/anheng/rk3568/rknpu2-master/examples/rknn_yolov5_demo目录
2. `vim build-linux_RK3566_RK3568.sh`
3. 更改交叉编译器路径
   ![image-20240425173202774](./images/image-20240425173202774.png)
4. 授予build-linux_RK3566_RK3568.sh执行权限,./build-linux_RK3566_RK3568.sh
​       编译好了之后会生成install文件,里面就有官方提供的rknn模型,可执行程序,以及相应的动态库文件,如下
![image-20240425173407578](./images/image-20240425173407578.png)
5. 用adb命令将/home/anheng/rk3568/rknpu2-master/examples/rknn_yolov5_demo/install目录下的rknn_yolov5_demo_Linux文件夹上传到开发板的/data目录下
6. 指定库文件路径 `export LD_LIBRARY_PATH=/data/rknn_yolov5_demo_Linux/lib `
7. 运行程序识别相应的图片中物体的类别。`./rknn_yolov5_demo ./model/RV1106/yolov5s-640-640.rknn ./model/bus.jpg `
   ![eb02125fb19e15ed9b3fdd421be39b5](./images/eb02125fb19e15ed9b3fdd421be39b5.png)
   识别的结果会以out.jpg保存在当前目录
   ![b2a248d83fc722b08b2d0bfb24f84a0](./images/b2a248d83fc722b08b2d0bfb24f84a0.png)
   ## 3.12 DIO测试
   ### 3.12.1 硬件原理图说明
   ![8d0dcd185714d7a482bc6e537d904837_](./images/8d0dcd185714d7a482bc6e537d904837_.jpg)
   ![d3348419dd510670f7c897be5dec417e_](./images/d3348419dd510670f7c897be5dec417e_.jpg)
   ![image-20240513112427985](./images/image-20240513112427985.png)
   ![image-20240513112435295](./images/image-20240513112435295.png)
   ### 3.12.2 Din测试
   ![d4220b70053963e8c9846de84e68b129_](./images/d4220b70053963e8c9846de84e68b129_.jpg)
   按照上图的说明方法,将Din-0短接GND,此时Din-0输出低电平,测量R6114两侧的电压值,红表笔接一侧,黑笔接地。此时可以发现万用表显示电压为0.17v左右。其他的三个Din均是相同的方法。
   **注意:为什么不是0V而是0.17v的微弱电压?**
   **因为从下图可以看出光耦内置三极管的CE结,饱合导通时会存在一定的压降,这个0.17v即为压降。**
   ![ea23d8f7b3f22251da9646a52106a24](./images/ea23d8f7b3f22251da9646a52106a24.jpg)
   ### 3.12.3 Dout测试
   ![f96ddb352acf28b8a7088acf58e72ab6_](./images/f96ddb352acf28b8a7088acf58e72ab6_.jpg)
   如上图所示连接好电路,以Dout-0为例说明,其他的Dout的测试方法均相同
   输入`gpioset 0 4=0`,使gpio输出为低电平,用万用表测试R6211两端的电压正常情况均为0v。
   输入`gpioset 0 4=1`,使gpio输出为高电平,用万用表测试R6211两端的电压正常情况均为3.3v。
   **注意:在RK3568上如果某个gpio没有被复用,默认情况下该引脚的模式是gpio模式,但是此处的GPIO0_PA4例外,所以需要在设备树中特殊配置一下该引脚使用gpio模式。**
   ![image-20240513115053582](./images/image-20240513115053582.png)
   ### 3.12.4 Dout/ Din 联合测试
   ![57c8bc8656696e1eff33f79e808344e2_](./images/57c8bc8656696e1eff33f79e808344e2_.jpg)
   如上图所示将Din与Dout连接好,通过改变Dout的输出电平,检测Din是否收到对应的电平,以Din-0和Dout-0为例说明
   输入`gpioset 0 4=0` `gpioget 3 3`,显示Din-0的电平应为0
   输入`gpioset 0 4=1` `gpioget 3 3`,显示Din-0的电平应为1